From 3f38902fd980a832820dcb338437c6d0739d70b3 Mon Sep 17 00:00:00 2001 From: lopsi <40902730+Lpsd@users.noreply.github.com> Date: Thu, 11 Jun 2026 13:42:53 +0100 Subject: [PATCH 1/3] Upgrade freetype to 2.14.3 Also removes unnecessary build files --- vendor/freetype/builds/amiga/README | 110 - .../builds/amiga/include/config/ftconfig.h | 55 - .../builds/amiga/include/config/ftmodule.h | 158 - vendor/freetype/builds/amiga/makefile.os4 | 297 -- vendor/freetype/builds/amiga/smakefile | 299 -- .../freetype/builds/amiga/src/base/ftdebug.c | 348 -- .../freetype/builds/amiga/src/base/ftsystem.c | 530 --- vendor/freetype/builds/ansi/ansi-def.mk | 77 - vendor/freetype/builds/ansi/ansi.mk | 21 - vendor/freetype/builds/atari/ATARI.H | 20 - vendor/freetype/builds/atari/FNames.SIC | 37 - vendor/freetype/builds/atari/FREETYPE.PRJ | 32 - vendor/freetype/builds/atari/README.TXT | 51 - .../freetype/builds/atari/deflinejoiner.awk | 181 - .../freetype/builds/atari/gen-purec-patch.sh | 40 - vendor/freetype/builds/beos/beos-def.mk | 79 - vendor/freetype/builds/beos/beos.mk | 19 - vendor/freetype/builds/beos/detect.mk | 41 - .../freetype/builds/cmake/FindBrotliDec.cmake | 52 - .../freetype/builds/cmake/FindHarfBuzz.cmake | 203 - vendor/freetype/builds/cmake/iOS.cmake | 270 -- vendor/freetype/builds/cmake/testbuild.sh | 157 - vendor/freetype/builds/compiler/ansi-cc.mk | 80 - vendor/freetype/builds/compiler/bcc-dev.mk | 86 - vendor/freetype/builds/compiler/bcc.mk | 86 - vendor/freetype/builds/compiler/emx.mk | 77 - vendor/freetype/builds/compiler/gcc-dev.mk | 97 - vendor/freetype/builds/compiler/gcc.mk | 77 - vendor/freetype/builds/compiler/intelc.mk | 85 - vendor/freetype/builds/compiler/unix-lcc.mk | 83 - vendor/freetype/builds/compiler/visualage.mk | 76 - vendor/freetype/builds/compiler/visualc.mk | 82 - vendor/freetype/builds/compiler/watcom.mk | 81 - vendor/freetype/builds/compiler/win-lcc.mk | 81 - vendor/freetype/builds/detect.mk | 128 - vendor/freetype/builds/dos/detect.mk | 152 - vendor/freetype/builds/dos/dos-def.mk | 48 - vendor/freetype/builds/dos/dos-emx.mk | 21 - vendor/freetype/builds/dos/dos-gcc.mk | 21 - vendor/freetype/builds/dos/dos-wat.mk | 20 - vendor/freetype/builds/exports.mk | 80 - vendor/freetype/builds/freetype.mk | 385 -- vendor/freetype/builds/link_dos.mk | 42 - vendor/freetype/builds/link_std.mk | 42 - .../builds/mac/FreeType.m68k_cfm.make.txt | 209 - .../builds/mac/FreeType.m68k_far.make.txt | 208 - .../builds/mac/FreeType.ppc_carbon.make.txt | 212 - .../builds/mac/FreeType.ppc_classic.make.txt | 213 - vendor/freetype/builds/mac/README | 393 -- vendor/freetype/builds/mac/ascii2mpw.py | 24 - .../freetype/builds/mac/freetype-Info.plist | 36 - vendor/freetype/builds/mac/ftlib.prj.xml | 1194 ------ vendor/freetype/builds/mac/ftmac.c | 1542 ------- .../builds/meson/extract_freetype_version.py | 117 - .../builds/meson/extract_libtool_version.py | 115 - .../builds/meson/generate_reference_docs.py | 89 - .../builds/meson/parse_modules_cfg.py | 177 - .../builds/meson/process_ftoption_h.py | 115 - vendor/freetype/builds/modules.mk | 79 - vendor/freetype/builds/os2/detect.mk | 81 - vendor/freetype/builds/os2/os2-def.mk | 48 - vendor/freetype/builds/os2/os2-dev.mk | 30 - vendor/freetype/builds/os2/os2-gcc.mk | 26 - vendor/freetype/builds/symbian/bld.inf | 72 - vendor/freetype/builds/symbian/freetype.mmp | 146 - vendor/freetype/builds/toplevel.mk | 323 -- vendor/freetype/builds/unix/.gitignore | 18 - .../builds/unix/ax_compare_version.m4 | 177 - .../builds/unix/ax_prog_python_version.m4 | 66 - vendor/freetype/builds/unix/ax_pthread.m4 | 522 --- vendor/freetype/builds/unix/configure.raw | 1234 ------ vendor/freetype/builds/unix/detect.mk | 99 - .../freetype/builds/unix/freetype-config.in | 211 - vendor/freetype/builds/unix/freetype2.in | 14 - vendor/freetype/builds/unix/freetype2.m4 | 194 - vendor/freetype/builds/unix/ft-munmap.m4 | 32 - vendor/freetype/builds/unix/ftconfig.h.in | 52 - vendor/freetype/builds/unix/ftsystem.c | 436 -- vendor/freetype/builds/unix/install.mk | 102 - vendor/freetype/builds/unix/pkg.m4 | 199 - vendor/freetype/builds/unix/unix-cc.in | 134 - vendor/freetype/builds/unix/unix-def.in | 163 - vendor/freetype/builds/unix/unix-dev.mk | 26 - vendor/freetype/builds/unix/unix-lcc.mk | 24 - vendor/freetype/builds/unix/unix.mk | 62 - vendor/freetype/builds/unix/unixddef.mk | 46 - vendor/freetype/builds/vms/apinames_vms.bash | 2 - vendor/freetype/builds/vms/ftconfig.h | 58 - vendor/freetype/builds/vms/ftsystem.c | 328 -- vendor/freetype/builds/wince/ftdebug.c | 353 -- .../builds/wince/vc2005-ce/freetype.sln | 157 - .../builds/wince/vc2005-ce/freetype.vcproj | 878 ---- .../builds/wince/vc2005-ce/index.html | 47 - .../builds/wince/vc2008-ce/freetype.sln | 157 - .../builds/wince/vc2008-ce/freetype.vcproj | 3517 ---------------- .../builds/wince/vc2008-ce/index.html | 47 - vendor/freetype/builds/windows/detect.mk | 202 - .../builds/windows/vc2010/freetype.user.props | 68 - .../builds/windows/vc2010/freetype.vcxproj | 525 --- .../windows/vc2010/freetype.vcxproj.filters | 149 - .../freetype/builds/windows/vc2010/index.html | 40 - .../builds/windows/visualc/freetype.dsp | 354 -- .../builds/windows/visualc/freetype.dsw | 29 - .../builds/windows/visualc/freetype.sln | 25 - .../builds/windows/visualc/freetype.vcproj | 587 --- .../builds/windows/visualc/index.html | 38 - .../builds/windows/visualce/freetype.dsp | 391 -- .../builds/windows/visualce/freetype.dsw | 29 - .../builds/windows/visualce/freetype.vcproj | 3706 ----------------- .../builds/windows/visualce/index.html | 47 - vendor/freetype/builds/windows/w32-bcc.mk | 28 - vendor/freetype/builds/windows/w32-bccd.mk | 26 - vendor/freetype/builds/windows/w32-dev.mk | 32 - vendor/freetype/builds/windows/w32-gcc.mk | 31 - vendor/freetype/builds/windows/w32-icc.mk | 28 - vendor/freetype/builds/windows/w32-intl.mk | 28 - vendor/freetype/builds/windows/w32-lcc.mk | 24 - vendor/freetype/builds/windows/w32-mingw32.mk | 33 - vendor/freetype/builds/windows/w32-vcc.mk | 28 - vendor/freetype/builds/windows/w32-wat.mk | 28 - vendor/freetype/builds/windows/win32-def.mk | 51 - .../include/freetype/config/ftconfig.h | 2 +- .../include/freetype/config/ftheader.h | 2 +- .../include/freetype/config/ftmodule.h | 1 + .../include/freetype/config/ftoption.h | 32 +- .../include/freetype/config/ftstdlib.h | 2 +- .../include/freetype/config/integer-types.h | 2 +- .../include/freetype/config/mac-support.h | 4 +- .../include/freetype/config/public-macros.h | 2 +- vendor/freetype/include/freetype/freetype.h | 27 +- vendor/freetype/include/freetype/ftadvanc.h | 2 +- vendor/freetype/include/freetype/ftbbox.h | 2 +- vendor/freetype/include/freetype/ftbdf.h | 14 +- vendor/freetype/include/freetype/ftbitmap.h | 2 +- vendor/freetype/include/freetype/ftbzip2.h | 2 +- vendor/freetype/include/freetype/ftcache.h | 2 +- vendor/freetype/include/freetype/ftcid.h | 2 +- vendor/freetype/include/freetype/ftcolor.h | 2 +- vendor/freetype/include/freetype/ftdriver.h | 2 +- vendor/freetype/include/freetype/fterrdef.h | 2 +- vendor/freetype/include/freetype/fterrors.h | 2 +- vendor/freetype/include/freetype/ftfntfmt.h | 2 +- vendor/freetype/include/freetype/ftgasp.h | 2 +- vendor/freetype/include/freetype/ftglyph.h | 2 +- vendor/freetype/include/freetype/ftgxval.h | 2 +- vendor/freetype/include/freetype/ftgzip.h | 2 +- vendor/freetype/include/freetype/ftimage.h | 2 +- vendor/freetype/include/freetype/ftincrem.h | 2 +- vendor/freetype/include/freetype/ftlcdfil.h | 12 +- vendor/freetype/include/freetype/ftlist.h | 2 +- vendor/freetype/include/freetype/ftlogging.h | 2 +- vendor/freetype/include/freetype/ftlzw.h | 2 +- vendor/freetype/include/freetype/ftmac.h | 2 +- vendor/freetype/include/freetype/ftmm.h | 2 +- vendor/freetype/include/freetype/ftmodapi.h | 2 +- vendor/freetype/include/freetype/ftmoderr.h | 3 +- vendor/freetype/include/freetype/ftotval.h | 2 +- vendor/freetype/include/freetype/ftoutln.h | 2 +- vendor/freetype/include/freetype/ftparams.h | 9 +- vendor/freetype/include/freetype/ftpfr.h | 2 +- vendor/freetype/include/freetype/ftrender.h | 2 +- vendor/freetype/include/freetype/ftsizes.h | 2 +- vendor/freetype/include/freetype/ftsnames.h | 2 +- vendor/freetype/include/freetype/ftstroke.h | 2 +- vendor/freetype/include/freetype/ftsynth.h | 2 +- vendor/freetype/include/freetype/ftsystem.h | 2 +- vendor/freetype/include/freetype/fttrigon.h | 2 +- vendor/freetype/include/freetype/fttypes.h | 4 +- vendor/freetype/include/freetype/ftwinfnt.h | 2 +- .../include/freetype/internal/autohint.h | 2 +- .../include/freetype/internal/cffotypes.h | 2 +- .../include/freetype/internal/cfftypes.h | 6 +- .../freetype/internal/compiler-macros.h | 2 +- .../include/freetype/internal/ftcalc.h | 2 +- .../include/freetype/internal/ftdebug.h | 2 +- .../include/freetype/internal/ftdrv.h | 2 +- .../include/freetype/internal/ftgloadr.h | 2 +- .../include/freetype/internal/ftmemory.h | 2 +- .../include/freetype/internal/ftmmtypes.h | 2 +- .../include/freetype/internal/ftobjs.h | 32 +- .../include/freetype/internal/ftpsprop.h | 2 +- .../include/freetype/internal/ftrfork.h | 2 +- .../include/freetype/internal/ftserv.h | 2 +- .../include/freetype/internal/ftstream.h | 2 +- .../include/freetype/internal/fttrace.h | 7 +- .../include/freetype/internal/ftvalid.h | 2 +- .../include/freetype/internal/psaux.h | 2 +- .../include/freetype/internal/pshints.h | 2 +- .../freetype/internal/services/svbdf.h | 2 +- .../freetype/internal/services/svcfftl.h | 2 +- .../freetype/internal/services/svcid.h | 2 +- .../freetype/internal/services/svfntfmt.h | 3 +- .../freetype/internal/services/svgldict.h | 2 +- .../freetype/internal/services/svgxval.h | 2 +- .../freetype/internal/services/svkern.h | 2 +- .../freetype/internal/services/svmetric.h | 2 +- .../include/freetype/internal/services/svmm.h | 2 +- .../freetype/internal/services/svotval.h | 2 +- .../freetype/internal/services/svpfr.h | 2 +- .../freetype/internal/services/svpostnm.h | 2 +- .../freetype/internal/services/svprop.h | 2 +- .../freetype/internal/services/svpscmap.h | 2 +- .../freetype/internal/services/svpsinfo.h | 2 +- .../freetype/internal/services/svsfnt.h | 2 +- .../freetype/internal/services/svttcmap.h | 2 +- .../freetype/internal/services/svtteng.h | 2 +- .../freetype/internal/services/svttglyf.h | 2 +- .../freetype/internal/services/svwinfnt.h | 2 +- .../freetype/include/freetype/internal/sfnt.h | 2 +- .../include/freetype/internal/svginterface.h | 2 +- .../include/freetype/internal/t1types.h | 2 +- .../include/freetype/internal/tttypes.h | 2 +- .../include/freetype/internal/wofftypes.h | 2 +- vendor/freetype/include/freetype/otsvg.h | 2 +- vendor/freetype/include/freetype/t1tables.h | 6 +- vendor/freetype/include/freetype/ttnameid.h | 4 +- vendor/freetype/include/freetype/tttables.h | 2 +- vendor/freetype/include/freetype/tttags.h | 4 +- vendor/freetype/include/ft2build.h | 2 +- vendor/freetype/src/autofit/afadjust.c | 15 +- vendor/freetype/src/autofit/afadjust.h | 2 +- vendor/freetype/src/autofit/afblue.c | 2 +- vendor/freetype/src/autofit/afblue.cin | 2 +- vendor/freetype/src/autofit/afblue.dat | 2 +- vendor/freetype/src/autofit/afblue.h | 2 +- vendor/freetype/src/autofit/afblue.hin | 2 +- vendor/freetype/src/autofit/afcjk.c | 2 +- vendor/freetype/src/autofit/afcjk.h | 2 +- vendor/freetype/src/autofit/afcover.h | 2 +- vendor/freetype/src/autofit/afdummy.c | 2 +- vendor/freetype/src/autofit/afdummy.h | 2 +- vendor/freetype/src/autofit/aferrors.h | 2 +- vendor/freetype/src/autofit/afglobal.c | 2 +- vendor/freetype/src/autofit/afglobal.h | 6 +- vendor/freetype/src/autofit/afgsub.c | 22 +- vendor/freetype/src/autofit/afgsub.h | 2 +- vendor/freetype/src/autofit/afhints.c | 2 +- vendor/freetype/src/autofit/afhints.h | 2 +- vendor/freetype/src/autofit/afindic.c | 2 +- vendor/freetype/src/autofit/afindic.h | 2 +- vendor/freetype/src/autofit/aflatin.c | 74 +- vendor/freetype/src/autofit/aflatin.h | 2 +- vendor/freetype/src/autofit/afloader.c | 16 +- vendor/freetype/src/autofit/afloader.h | 2 +- vendor/freetype/src/autofit/afmodule.c | 2 +- vendor/freetype/src/autofit/afmodule.h | 2 +- vendor/freetype/src/autofit/afranges.c | 2 +- vendor/freetype/src/autofit/afranges.h | 2 +- vendor/freetype/src/autofit/afscript.h | 2 +- vendor/freetype/src/autofit/afshaper.c | 2 +- vendor/freetype/src/autofit/afshaper.h | 2 +- vendor/freetype/src/autofit/afstyles.h | 2 +- vendor/freetype/src/autofit/aftypes.h | 2 +- vendor/freetype/src/autofit/afws-decl.h | 2 +- vendor/freetype/src/autofit/afws-iter.h | 2 +- vendor/freetype/src/autofit/autofit.c | 2 +- vendor/freetype/src/autofit/ft-hb-ft.c | 2 +- vendor/freetype/src/autofit/ft-hb.c | 2 +- vendor/freetype/src/autofit/ft-hb.h | 2 +- vendor/freetype/src/autofit/module.mk | 2 +- vendor/freetype/src/autofit/rules.mk | 2 +- vendor/freetype/src/base/ftadvanc.c | 68 +- vendor/freetype/src/base/ftbase.c | 2 +- vendor/freetype/src/base/ftbase.h | 2 +- vendor/freetype/src/base/ftbbox.c | 2 +- vendor/freetype/src/base/ftbdf.c | 2 +- vendor/freetype/src/base/ftbitmap.c | 275 +- vendor/freetype/src/base/ftcalc.c | 2 +- vendor/freetype/src/base/ftcid.c | 2 +- vendor/freetype/src/base/ftcolor.c | 2 +- vendor/freetype/src/base/ftdbgmem.c | 2 +- vendor/freetype/src/base/ftdebug.c | 2 +- vendor/freetype/src/base/fterrors.c | 2 +- vendor/freetype/src/base/ftfntfmt.c | 2 +- vendor/freetype/src/base/ftfstype.c | 2 +- vendor/freetype/src/base/ftgasp.c | 2 +- vendor/freetype/src/base/ftgloadr.c | 2 +- vendor/freetype/src/base/ftglyph.c | 23 +- vendor/freetype/src/base/ftgxval.c | 2 +- vendor/freetype/src/base/ftinit.c | 2 +- vendor/freetype/src/base/ftlcdfil.c | 273 +- vendor/freetype/src/base/ftmac.c | 2 +- vendor/freetype/src/base/ftmm.c | 2 +- vendor/freetype/src/base/ftobjs.c | 224 +- vendor/freetype/src/base/ftotval.c | 2 +- vendor/freetype/src/base/ftoutln.c | 2 +- vendor/freetype/src/base/ftpatent.c | 2 +- vendor/freetype/src/base/ftpfr.c | 2 +- vendor/freetype/src/base/ftpsprop.c | 2 +- vendor/freetype/src/base/ftrfork.c | 2 +- vendor/freetype/src/base/ftsnames.c | 2 +- vendor/freetype/src/base/ftstream.c | 2 +- vendor/freetype/src/base/ftstroke.c | 14 +- vendor/freetype/src/base/ftsynth.c | 2 +- vendor/freetype/src/base/ftsystem.c | 2 +- vendor/freetype/src/base/fttrigon.c | 2 +- vendor/freetype/src/base/fttype1.c | 2 +- vendor/freetype/src/base/ftutil.c | 5 +- vendor/freetype/src/base/ftver.rc | 8 +- vendor/freetype/src/base/ftwinfnt.c | 2 +- vendor/freetype/src/base/rules.mk | 2 +- vendor/freetype/src/bdf/bdfdrivr.c | 3 +- vendor/freetype/src/bzip2/ftbzip2.c | 2 +- vendor/freetype/src/bzip2/rules.mk | 2 +- vendor/freetype/src/cache/ftcache.c | 2 +- vendor/freetype/src/cache/ftcbasic.c | 2 +- vendor/freetype/src/cache/ftccache.c | 2 +- vendor/freetype/src/cache/ftccache.h | 2 +- vendor/freetype/src/cache/ftccback.h | 2 +- vendor/freetype/src/cache/ftccmap.c | 2 +- vendor/freetype/src/cache/ftcerror.h | 2 +- vendor/freetype/src/cache/ftcglyph.c | 2 +- vendor/freetype/src/cache/ftcglyph.h | 2 +- vendor/freetype/src/cache/ftcimage.c | 2 +- vendor/freetype/src/cache/ftcimage.h | 2 +- vendor/freetype/src/cache/ftcmanag.c | 2 +- vendor/freetype/src/cache/ftcmanag.h | 2 +- vendor/freetype/src/cache/ftcmru.c | 2 +- vendor/freetype/src/cache/ftcmru.h | 2 +- vendor/freetype/src/cache/ftcsbits.c | 2 +- vendor/freetype/src/cache/ftcsbits.h | 2 +- vendor/freetype/src/cache/rules.mk | 2 +- vendor/freetype/src/cff/cff.c | 2 +- vendor/freetype/src/cff/cffcmap.c | 2 +- vendor/freetype/src/cff/cffcmap.h | 2 +- vendor/freetype/src/cff/cffdrivr.c | 6 +- vendor/freetype/src/cff/cffdrivr.h | 2 +- vendor/freetype/src/cff/cfferrs.h | 2 +- vendor/freetype/src/cff/cffgload.c | 2 +- vendor/freetype/src/cff/cffgload.h | 2 +- vendor/freetype/src/cff/cffload.c | 6 +- vendor/freetype/src/cff/cffload.h | 2 +- vendor/freetype/src/cff/cffobjs.c | 10 +- vendor/freetype/src/cff/cffobjs.h | 4 +- vendor/freetype/src/cff/cffparse.c | 2 +- vendor/freetype/src/cff/cffparse.h | 2 +- vendor/freetype/src/cff/cfftoken.h | 6 +- vendor/freetype/src/cff/module.mk | 2 +- vendor/freetype/src/cff/rules.mk | 2 +- vendor/freetype/src/cid/ciderrs.h | 2 +- vendor/freetype/src/cid/cidgload.c | 33 +- vendor/freetype/src/cid/cidgload.h | 2 +- vendor/freetype/src/cid/cidload.c | 2 +- vendor/freetype/src/cid/cidload.h | 2 +- vendor/freetype/src/cid/cidobjs.c | 2 +- vendor/freetype/src/cid/cidobjs.h | 2 +- vendor/freetype/src/cid/cidparse.c | 2 +- vendor/freetype/src/cid/cidparse.h | 2 +- vendor/freetype/src/cid/cidriver.c | 2 +- vendor/freetype/src/cid/cidriver.h | 2 +- vendor/freetype/src/cid/cidtoken.h | 4 +- vendor/freetype/src/cid/module.mk | 2 +- vendor/freetype/src/cid/rules.mk | 2 +- vendor/freetype/src/cid/type1cid.c | 2 +- vendor/freetype/src/dlg/dlgwrap.c | 2 +- vendor/freetype/src/dlg/rules.mk | 2 +- vendor/freetype/src/gxvalid/README | 2 +- vendor/freetype/src/gxvalid/gxvalid.c | 2 +- vendor/freetype/src/gxvalid/gxvalid.h | 2 +- vendor/freetype/src/gxvalid/gxvbsln.c | 2 +- vendor/freetype/src/gxvalid/gxvcommn.c | 2 +- vendor/freetype/src/gxvalid/gxvcommn.h | 2 +- vendor/freetype/src/gxvalid/gxverror.h | 2 +- vendor/freetype/src/gxvalid/gxvfeat.c | 2 +- vendor/freetype/src/gxvalid/gxvfeat.h | 2 +- vendor/freetype/src/gxvalid/gxvfgen.c | 2 +- vendor/freetype/src/gxvalid/gxvjust.c | 2 +- vendor/freetype/src/gxvalid/gxvkern.c | 2 +- vendor/freetype/src/gxvalid/gxvlcar.c | 2 +- vendor/freetype/src/gxvalid/gxvmod.c | 2 +- vendor/freetype/src/gxvalid/gxvmod.h | 2 +- vendor/freetype/src/gxvalid/gxvmort.c | 2 +- vendor/freetype/src/gxvalid/gxvmort.h | 2 +- vendor/freetype/src/gxvalid/gxvmort0.c | 2 +- vendor/freetype/src/gxvalid/gxvmort1.c | 2 +- vendor/freetype/src/gxvalid/gxvmort2.c | 6 +- vendor/freetype/src/gxvalid/gxvmort4.c | 2 +- vendor/freetype/src/gxvalid/gxvmort5.c | 2 +- vendor/freetype/src/gxvalid/gxvmorx.c | 2 +- vendor/freetype/src/gxvalid/gxvmorx.h | 2 +- vendor/freetype/src/gxvalid/gxvmorx0.c | 2 +- vendor/freetype/src/gxvalid/gxvmorx1.c | 2 +- vendor/freetype/src/gxvalid/gxvmorx2.c | 2 +- vendor/freetype/src/gxvalid/gxvmorx4.c | 2 +- vendor/freetype/src/gxvalid/gxvmorx5.c | 2 +- vendor/freetype/src/gxvalid/gxvopbd.c | 2 +- vendor/freetype/src/gxvalid/gxvprop.c | 2 +- vendor/freetype/src/gxvalid/gxvtrak.c | 2 +- vendor/freetype/src/gxvalid/module.mk | 2 +- vendor/freetype/src/gxvalid/rules.mk | 2 +- vendor/freetype/src/gzip/ftgzip.c | 2 +- vendor/freetype/src/gzip/rules.mk | 2 +- vendor/freetype/src/hvf/hvf.c | 27 + vendor/freetype/src/hvf/hvfdrv.c | 723 ++++ vendor/freetype/src/hvf/hvfdrv.h | 37 + vendor/freetype/src/hvf/hvferror.h | 43 + vendor/freetype/src/hvf/hvfload.c | 610 +++ vendor/freetype/src/hvf/hvfload.h | 42 + vendor/freetype/src/hvf/hvfobjs.c | 510 +++ vendor/freetype/src/hvf/hvfobjs.h | 154 + vendor/freetype/src/hvf/module.mk | 23 + vendor/freetype/src/hvf/rules.mk | 73 + vendor/freetype/src/lzw/ftlzw.c | 2 +- vendor/freetype/src/lzw/ftzopen.c | 2 +- vendor/freetype/src/lzw/ftzopen.h | 2 +- vendor/freetype/src/lzw/rules.mk | 2 +- vendor/freetype/src/otvalid/module.mk | 2 +- vendor/freetype/src/otvalid/otvalid.c | 2 +- vendor/freetype/src/otvalid/otvalid.h | 2 +- vendor/freetype/src/otvalid/otvbase.c | 2 +- vendor/freetype/src/otvalid/otvcommn.c | 14 +- vendor/freetype/src/otvalid/otvcommn.h | 2 +- vendor/freetype/src/otvalid/otverror.h | 2 +- vendor/freetype/src/otvalid/otvgdef.c | 4 +- vendor/freetype/src/otvalid/otvgpos.c | 10 +- vendor/freetype/src/otvalid/otvgpos.h | 2 +- vendor/freetype/src/otvalid/otvgsub.c | 2 +- vendor/freetype/src/otvalid/otvjstf.c | 2 +- vendor/freetype/src/otvalid/otvmath.c | 2 +- vendor/freetype/src/otvalid/otvmod.c | 2 +- vendor/freetype/src/otvalid/otvmod.h | 2 +- vendor/freetype/src/otvalid/rules.mk | 2 +- vendor/freetype/src/pcf/pcfdrivr.c | 37 +- vendor/freetype/src/pcf/pcfread.c | 16 - vendor/freetype/src/pfr/module.mk | 2 +- vendor/freetype/src/pfr/pfr.c | 2 +- vendor/freetype/src/pfr/pfrcmap.c | 2 +- vendor/freetype/src/pfr/pfrcmap.h | 2 +- vendor/freetype/src/pfr/pfrdrivr.c | 2 +- vendor/freetype/src/pfr/pfrdrivr.h | 2 +- vendor/freetype/src/pfr/pfrerror.h | 2 +- vendor/freetype/src/pfr/pfrgload.c | 2 +- vendor/freetype/src/pfr/pfrgload.h | 2 +- vendor/freetype/src/pfr/pfrload.c | 2 +- vendor/freetype/src/pfr/pfrload.h | 2 +- vendor/freetype/src/pfr/pfrobjs.c | 2 +- vendor/freetype/src/pfr/pfrobjs.h | 2 +- vendor/freetype/src/pfr/pfrsbit.c | 13 +- vendor/freetype/src/pfr/pfrsbit.h | 2 +- vendor/freetype/src/pfr/pfrtypes.h | 2 +- vendor/freetype/src/pfr/rules.mk | 2 +- vendor/freetype/src/psaux/afmparse.c | 2 +- vendor/freetype/src/psaux/afmparse.h | 2 +- vendor/freetype/src/psaux/cffdecode.c | 2 +- vendor/freetype/src/psaux/cffdecode.h | 2 +- vendor/freetype/src/psaux/module.mk | 2 +- vendor/freetype/src/psaux/psaux.c | 2 +- vendor/freetype/src/psaux/psauxerr.h | 2 +- vendor/freetype/src/psaux/psauxmod.c | 2 +- vendor/freetype/src/psaux/psauxmod.h | 2 +- vendor/freetype/src/psaux/psconv.c | 2 +- vendor/freetype/src/psaux/psconv.h | 2 +- vendor/freetype/src/psaux/psintrp.c | 23 +- vendor/freetype/src/psaux/psobjs.c | 2 +- vendor/freetype/src/psaux/psobjs.h | 2 +- vendor/freetype/src/psaux/psstack.c | 13 +- vendor/freetype/src/psaux/rules.mk | 2 +- vendor/freetype/src/psaux/t1cmap.c | 2 +- vendor/freetype/src/psaux/t1cmap.h | 2 +- vendor/freetype/src/psaux/t1decode.c | 39 +- vendor/freetype/src/psaux/t1decode.h | 2 +- vendor/freetype/src/pshinter/module.mk | 2 +- vendor/freetype/src/pshinter/pshalgo.c | 242 +- vendor/freetype/src/pshinter/pshalgo.h | 2 +- vendor/freetype/src/pshinter/pshglob.c | 52 +- vendor/freetype/src/pshinter/pshglob.h | 2 +- vendor/freetype/src/pshinter/pshinter.c | 2 +- vendor/freetype/src/pshinter/pshmod.c | 2 +- vendor/freetype/src/pshinter/pshmod.h | 2 +- vendor/freetype/src/pshinter/pshnterr.h | 2 +- vendor/freetype/src/pshinter/pshrec.c | 2 +- vendor/freetype/src/pshinter/pshrec.h | 2 +- vendor/freetype/src/pshinter/rules.mk | 2 +- vendor/freetype/src/psnames/module.mk | 2 +- vendor/freetype/src/psnames/psmodule.c | 2 +- vendor/freetype/src/psnames/psmodule.h | 2 +- vendor/freetype/src/psnames/psnamerr.h | 2 +- vendor/freetype/src/psnames/psnames.c | 2 +- vendor/freetype/src/psnames/pstables.h | 2 +- vendor/freetype/src/psnames/rules.mk | 2 +- vendor/freetype/src/raster/ftmisc.h | 2 +- vendor/freetype/src/raster/ftraster.c | 109 +- vendor/freetype/src/raster/ftraster.h | 2 +- vendor/freetype/src/raster/ftrend1.c | 2 +- vendor/freetype/src/raster/ftrend1.h | 2 +- vendor/freetype/src/raster/module.mk | 2 +- vendor/freetype/src/raster/raster.c | 2 +- vendor/freetype/src/raster/rasterrs.h | 2 +- vendor/freetype/src/raster/rules.mk | 2 +- vendor/freetype/src/sdf/ftbsdf.c | 3 +- vendor/freetype/src/sdf/ftsdf.c | 66 +- vendor/freetype/src/sdf/ftsdf.h | 2 +- vendor/freetype/src/sdf/ftsdfcommon.c | 2 +- vendor/freetype/src/sdf/ftsdfcommon.h | 2 +- vendor/freetype/src/sdf/ftsdferrs.h | 2 +- vendor/freetype/src/sdf/ftsdfrend.c | 2 +- vendor/freetype/src/sdf/ftsdfrend.h | 2 +- vendor/freetype/src/sdf/module.mk | 2 +- vendor/freetype/src/sdf/rules.mk | 2 +- vendor/freetype/src/sdf/sdf.c | 2 +- vendor/freetype/src/sfnt/module.mk | 2 +- vendor/freetype/src/sfnt/pngshim.c | 7 +- vendor/freetype/src/sfnt/pngshim.h | 2 +- vendor/freetype/src/sfnt/rules.mk | 2 +- vendor/freetype/src/sfnt/sfdriver.c | 9 +- vendor/freetype/src/sfnt/sfdriver.h | 2 +- vendor/freetype/src/sfnt/sferrors.h | 2 +- vendor/freetype/src/sfnt/sfnt.c | 2 +- vendor/freetype/src/sfnt/sfobjs.c | 3 +- vendor/freetype/src/sfnt/sfobjs.h | 2 +- vendor/freetype/src/sfnt/sfwoff.c | 2 +- vendor/freetype/src/sfnt/sfwoff.h | 2 +- vendor/freetype/src/sfnt/sfwoff2.c | 12 +- vendor/freetype/src/sfnt/sfwoff2.h | 2 +- vendor/freetype/src/sfnt/ttbdf.c | 36 +- vendor/freetype/src/sfnt/ttbdf.h | 2 +- vendor/freetype/src/sfnt/ttcmap.c | 2 +- vendor/freetype/src/sfnt/ttcmap.h | 2 +- vendor/freetype/src/sfnt/ttcmapc.h | 2 +- vendor/freetype/src/sfnt/ttcolr.c | 53 +- vendor/freetype/src/sfnt/ttcolr.h | 2 +- vendor/freetype/src/sfnt/ttcpal.c | 2 +- vendor/freetype/src/sfnt/ttcpal.h | 2 +- vendor/freetype/src/sfnt/ttgpos.c | 72 +- vendor/freetype/src/sfnt/ttgpos.h | 2 +- vendor/freetype/src/sfnt/ttkern.c | 2 +- vendor/freetype/src/sfnt/ttkern.h | 2 +- vendor/freetype/src/sfnt/ttload.c | 2 +- vendor/freetype/src/sfnt/ttload.h | 2 +- vendor/freetype/src/sfnt/ttmtx.c | 2 +- vendor/freetype/src/sfnt/ttmtx.h | 2 +- vendor/freetype/src/sfnt/ttpost.c | 2 +- vendor/freetype/src/sfnt/ttpost.h | 2 +- vendor/freetype/src/sfnt/ttsbit.c | 27 +- vendor/freetype/src/sfnt/ttsbit.h | 2 +- vendor/freetype/src/sfnt/ttsvg.c | 2 +- vendor/freetype/src/sfnt/ttsvg.h | 2 +- vendor/freetype/src/sfnt/woff2tags.c | 2 +- vendor/freetype/src/sfnt/woff2tags.h | 2 +- vendor/freetype/src/smooth/ftgrays.c | 191 +- vendor/freetype/src/smooth/ftgrays.h | 2 +- vendor/freetype/src/smooth/ftsmerrs.h | 2 +- vendor/freetype/src/smooth/ftsmooth.c | 181 +- vendor/freetype/src/smooth/ftsmooth.h | 2 +- vendor/freetype/src/smooth/module.mk | 2 +- vendor/freetype/src/smooth/rules.mk | 2 +- vendor/freetype/src/smooth/smooth.c | 2 +- vendor/freetype/src/svg/ftsvg.c | 12 +- vendor/freetype/src/svg/ftsvg.h | 2 +- vendor/freetype/src/svg/module.mk | 2 +- vendor/freetype/src/svg/rules.mk | 2 +- vendor/freetype/src/svg/svg.c | 2 +- vendor/freetype/src/svg/svgtypes.h | 2 +- vendor/freetype/src/tools/afblue.pl | 2 +- vendor/freetype/src/tools/apinames.c | 2 +- vendor/freetype/src/tools/glnames.py | 2 +- .../freetype/src/tools/update-copyright-year | 2 +- vendor/freetype/src/truetype/module.mk | 2 +- vendor/freetype/src/truetype/rules.mk | 2 +- vendor/freetype/src/truetype/truetype.c | 2 +- vendor/freetype/src/truetype/ttdriver.c | 11 +- vendor/freetype/src/truetype/ttdriver.h | 2 +- vendor/freetype/src/truetype/tterrors.h | 2 +- vendor/freetype/src/truetype/ttgload.c | 42 +- vendor/freetype/src/truetype/ttgload.h | 2 +- vendor/freetype/src/truetype/ttgxvar.c | 73 +- vendor/freetype/src/truetype/ttgxvar.h | 2 +- vendor/freetype/src/truetype/ttinterp.c | 212 +- vendor/freetype/src/truetype/ttinterp.h | 4 +- vendor/freetype/src/truetype/ttobjs.c | 49 +- vendor/freetype/src/truetype/ttobjs.h | 2 +- vendor/freetype/src/truetype/ttpload.c | 2 +- vendor/freetype/src/truetype/ttpload.h | 2 +- vendor/freetype/src/type1/module.mk | 2 +- vendor/freetype/src/type1/rules.mk | 2 +- vendor/freetype/src/type1/t1afm.c | 2 +- vendor/freetype/src/type1/t1afm.h | 2 +- vendor/freetype/src/type1/t1driver.c | 2 +- vendor/freetype/src/type1/t1driver.h | 2 +- vendor/freetype/src/type1/t1errors.h | 2 +- vendor/freetype/src/type1/t1gload.c | 2 +- vendor/freetype/src/type1/t1gload.h | 2 +- vendor/freetype/src/type1/t1load.c | 13 +- vendor/freetype/src/type1/t1load.h | 2 +- vendor/freetype/src/type1/t1objs.c | 2 +- vendor/freetype/src/type1/t1objs.h | 2 +- vendor/freetype/src/type1/t1parse.c | 9 +- vendor/freetype/src/type1/t1parse.h | 2 +- vendor/freetype/src/type1/t1tokens.h | 4 +- vendor/freetype/src/type1/type1.c | 2 +- vendor/freetype/src/type42/module.mk | 2 +- vendor/freetype/src/type42/rules.mk | 2 +- vendor/freetype/src/type42/t42drivr.c | 2 +- vendor/freetype/src/type42/t42drivr.h | 2 +- vendor/freetype/src/type42/t42error.h | 2 +- vendor/freetype/src/type42/t42objs.c | 2 +- vendor/freetype/src/type42/t42objs.h | 2 +- vendor/freetype/src/type42/t42parse.c | 4 +- vendor/freetype/src/type42/t42parse.h | 2 +- vendor/freetype/src/type42/t42types.h | 2 +- vendor/freetype/src/type42/type42.c | 2 +- vendor/freetype/src/winfonts/fnterrs.h | 2 +- vendor/freetype/src/winfonts/module.mk | 2 +- vendor/freetype/src/winfonts/rules.mk | 2 +- vendor/freetype/src/winfonts/winfnt.c | 2 +- vendor/freetype/src/winfonts/winfnt.h | 2 +- 606 files changed, 3903 insertions(+), 28415 deletions(-) delete mode 100644 vendor/freetype/builds/amiga/README delete mode 100644 vendor/freetype/builds/amiga/include/config/ftconfig.h delete mode 100644 vendor/freetype/builds/amiga/include/config/ftmodule.h delete mode 100644 vendor/freetype/builds/amiga/makefile.os4 delete mode 100644 vendor/freetype/builds/amiga/smakefile delete mode 100644 vendor/freetype/builds/amiga/src/base/ftdebug.c delete mode 100644 vendor/freetype/builds/amiga/src/base/ftsystem.c delete mode 100644 vendor/freetype/builds/ansi/ansi-def.mk delete mode 100644 vendor/freetype/builds/ansi/ansi.mk delete mode 100644 vendor/freetype/builds/atari/ATARI.H delete mode 100644 vendor/freetype/builds/atari/FNames.SIC delete mode 100644 vendor/freetype/builds/atari/FREETYPE.PRJ delete mode 100644 vendor/freetype/builds/atari/README.TXT delete mode 100644 vendor/freetype/builds/atari/deflinejoiner.awk delete mode 100644 vendor/freetype/builds/atari/gen-purec-patch.sh delete mode 100644 vendor/freetype/builds/beos/beos-def.mk delete mode 100644 vendor/freetype/builds/beos/beos.mk delete mode 100644 vendor/freetype/builds/beos/detect.mk delete mode 100644 vendor/freetype/builds/cmake/FindBrotliDec.cmake delete mode 100644 vendor/freetype/builds/cmake/FindHarfBuzz.cmake delete mode 100644 vendor/freetype/builds/cmake/iOS.cmake delete mode 100644 vendor/freetype/builds/cmake/testbuild.sh delete mode 100644 vendor/freetype/builds/compiler/ansi-cc.mk delete mode 100644 vendor/freetype/builds/compiler/bcc-dev.mk delete mode 100644 vendor/freetype/builds/compiler/bcc.mk delete mode 100644 vendor/freetype/builds/compiler/emx.mk delete mode 100644 vendor/freetype/builds/compiler/gcc-dev.mk delete mode 100644 vendor/freetype/builds/compiler/gcc.mk delete mode 100644 vendor/freetype/builds/compiler/intelc.mk delete mode 100644 vendor/freetype/builds/compiler/unix-lcc.mk delete mode 100644 vendor/freetype/builds/compiler/visualage.mk delete mode 100644 vendor/freetype/builds/compiler/visualc.mk delete mode 100644 vendor/freetype/builds/compiler/watcom.mk delete mode 100644 vendor/freetype/builds/compiler/win-lcc.mk delete mode 100644 vendor/freetype/builds/detect.mk delete mode 100644 vendor/freetype/builds/dos/detect.mk delete mode 100644 vendor/freetype/builds/dos/dos-def.mk delete mode 100644 vendor/freetype/builds/dos/dos-emx.mk delete mode 100644 vendor/freetype/builds/dos/dos-gcc.mk delete mode 100644 vendor/freetype/builds/dos/dos-wat.mk delete mode 100644 vendor/freetype/builds/exports.mk delete mode 100644 vendor/freetype/builds/freetype.mk delete mode 100644 vendor/freetype/builds/link_dos.mk delete mode 100644 vendor/freetype/builds/link_std.mk delete mode 100644 vendor/freetype/builds/mac/FreeType.m68k_cfm.make.txt delete mode 100644 vendor/freetype/builds/mac/FreeType.m68k_far.make.txt delete mode 100644 vendor/freetype/builds/mac/FreeType.ppc_carbon.make.txt delete mode 100644 vendor/freetype/builds/mac/FreeType.ppc_classic.make.txt delete mode 100644 vendor/freetype/builds/mac/README delete mode 100644 vendor/freetype/builds/mac/ascii2mpw.py delete mode 100644 vendor/freetype/builds/mac/freetype-Info.plist delete mode 100644 vendor/freetype/builds/mac/ftlib.prj.xml delete mode 100644 vendor/freetype/builds/mac/ftmac.c delete mode 100644 vendor/freetype/builds/meson/extract_freetype_version.py delete mode 100644 vendor/freetype/builds/meson/extract_libtool_version.py delete mode 100644 vendor/freetype/builds/meson/generate_reference_docs.py delete mode 100644 vendor/freetype/builds/meson/parse_modules_cfg.py delete mode 100644 vendor/freetype/builds/meson/process_ftoption_h.py delete mode 100644 vendor/freetype/builds/modules.mk delete mode 100644 vendor/freetype/builds/os2/detect.mk delete mode 100644 vendor/freetype/builds/os2/os2-def.mk delete mode 100644 vendor/freetype/builds/os2/os2-dev.mk delete mode 100644 vendor/freetype/builds/os2/os2-gcc.mk delete mode 100644 vendor/freetype/builds/symbian/bld.inf delete mode 100644 vendor/freetype/builds/symbian/freetype.mmp delete mode 100644 vendor/freetype/builds/toplevel.mk delete mode 100644 vendor/freetype/builds/unix/.gitignore delete mode 100644 vendor/freetype/builds/unix/ax_compare_version.m4 delete mode 100644 vendor/freetype/builds/unix/ax_prog_python_version.m4 delete mode 100644 vendor/freetype/builds/unix/ax_pthread.m4 delete mode 100644 vendor/freetype/builds/unix/configure.raw delete mode 100644 vendor/freetype/builds/unix/detect.mk delete mode 100644 vendor/freetype/builds/unix/freetype-config.in delete mode 100644 vendor/freetype/builds/unix/freetype2.in delete mode 100644 vendor/freetype/builds/unix/freetype2.m4 delete mode 100644 vendor/freetype/builds/unix/ft-munmap.m4 delete mode 100644 vendor/freetype/builds/unix/ftconfig.h.in delete mode 100644 vendor/freetype/builds/unix/ftsystem.c delete mode 100644 vendor/freetype/builds/unix/install.mk delete mode 100644 vendor/freetype/builds/unix/pkg.m4 delete mode 100644 vendor/freetype/builds/unix/unix-cc.in delete mode 100644 vendor/freetype/builds/unix/unix-def.in delete mode 100644 vendor/freetype/builds/unix/unix-dev.mk delete mode 100644 vendor/freetype/builds/unix/unix-lcc.mk delete mode 100644 vendor/freetype/builds/unix/unix.mk delete mode 100644 vendor/freetype/builds/unix/unixddef.mk delete mode 100644 vendor/freetype/builds/vms/apinames_vms.bash delete mode 100644 vendor/freetype/builds/vms/ftconfig.h delete mode 100644 vendor/freetype/builds/vms/ftsystem.c delete mode 100644 vendor/freetype/builds/wince/ftdebug.c delete mode 100644 vendor/freetype/builds/wince/vc2005-ce/freetype.sln delete mode 100644 vendor/freetype/builds/wince/vc2005-ce/freetype.vcproj delete mode 100644 vendor/freetype/builds/wince/vc2005-ce/index.html delete mode 100644 vendor/freetype/builds/wince/vc2008-ce/freetype.sln delete mode 100644 vendor/freetype/builds/wince/vc2008-ce/freetype.vcproj delete mode 100644 vendor/freetype/builds/wince/vc2008-ce/index.html delete mode 100644 vendor/freetype/builds/windows/detect.mk delete mode 100644 vendor/freetype/builds/windows/vc2010/freetype.user.props delete mode 100644 vendor/freetype/builds/windows/vc2010/freetype.vcxproj delete mode 100644 vendor/freetype/builds/windows/vc2010/freetype.vcxproj.filters delete mode 100644 vendor/freetype/builds/windows/vc2010/index.html delete mode 100644 vendor/freetype/builds/windows/visualc/freetype.dsp delete mode 100644 vendor/freetype/builds/windows/visualc/freetype.dsw delete mode 100644 vendor/freetype/builds/windows/visualc/freetype.sln delete mode 100644 vendor/freetype/builds/windows/visualc/freetype.vcproj delete mode 100644 vendor/freetype/builds/windows/visualc/index.html delete mode 100644 vendor/freetype/builds/windows/visualce/freetype.dsp delete mode 100644 vendor/freetype/builds/windows/visualce/freetype.dsw delete mode 100644 vendor/freetype/builds/windows/visualce/freetype.vcproj delete mode 100644 vendor/freetype/builds/windows/visualce/index.html delete mode 100644 vendor/freetype/builds/windows/w32-bcc.mk delete mode 100644 vendor/freetype/builds/windows/w32-bccd.mk delete mode 100644 vendor/freetype/builds/windows/w32-dev.mk delete mode 100644 vendor/freetype/builds/windows/w32-gcc.mk delete mode 100644 vendor/freetype/builds/windows/w32-icc.mk delete mode 100644 vendor/freetype/builds/windows/w32-intl.mk delete mode 100644 vendor/freetype/builds/windows/w32-lcc.mk delete mode 100644 vendor/freetype/builds/windows/w32-mingw32.mk delete mode 100644 vendor/freetype/builds/windows/w32-vcc.mk delete mode 100644 vendor/freetype/builds/windows/w32-wat.mk delete mode 100644 vendor/freetype/builds/windows/win32-def.mk create mode 100644 vendor/freetype/src/hvf/hvf.c create mode 100644 vendor/freetype/src/hvf/hvfdrv.c create mode 100644 vendor/freetype/src/hvf/hvfdrv.h create mode 100644 vendor/freetype/src/hvf/hvferror.h create mode 100644 vendor/freetype/src/hvf/hvfload.c create mode 100644 vendor/freetype/src/hvf/hvfload.h create mode 100644 vendor/freetype/src/hvf/hvfobjs.c create mode 100644 vendor/freetype/src/hvf/hvfobjs.h create mode 100644 vendor/freetype/src/hvf/module.mk create mode 100644 vendor/freetype/src/hvf/rules.mk diff --git a/vendor/freetype/builds/amiga/README b/vendor/freetype/builds/amiga/README deleted file mode 100644 index b230f925fd0..00000000000 --- a/vendor/freetype/builds/amiga/README +++ /dev/null @@ -1,110 +0,0 @@ - -README for the builds/amiga subdirectory. - -Copyright (C) 2005-2025 by -Werner Lemberg and Detlef Würkner. - -This file is part of the FreeType project, and may only be used, modified, -and distributed under the terms of the FreeType project license, -LICENSE.TXT. By continuing to use, modify, or distribute this file you -indicate that you have read the license and understand and accept it -fully. - - -The makefile.os4 is for the AmigaOS4 SDK. To use it, type -"make -f makefile.os4", it produces a link library libft2_ppc.a. - -The makefile is for ppc-morphos-gcc-2.95.3-bin.tgz (gcc 2.95.3 hosted on -68k-Amiga producing MorphOS-PPC-binaries from http://www.morphos.de). -To use it, type "make assign", then "make"; it produces a link library -libft2_ppc.a. - -The smakefile is a makefile for Amiga SAS/C 6.58 (no longer available, -latest sold version was 6.50, updates can be found in Aminet). It is -based on the version found in the sourcecode of ttf.library 0.83b for -FreeType 1.3.1 from Richard Griffith (ragriffi@sprynet.com, -http://ragriffi.home.sprynet.com). - -You will also need the latest include files and amiga.lib from the -Amiga web site (https://os.amigaworld.de/download.php?id=3) for -AmigaOS 3.9; the generated code should work under AmigaOS 2.04 and up. - -To use it, call "smake assign" and then "smake" from the builds/amiga -directory. The results are: - -- A link library "ft2_680x0.lib" (where x depends on the setting of - the CPU entry in the smakefile) containing all FreeType2 parts - except of the init code, debugging code, and the system interface - code. - -- ftsystem.o, an object module containing the standard version of the - system interface code which uses fopen() fclose() fread() fseek() - ftell() malloc() realloc() and free() from lib:sc.lib (not pure). - -- ftsystempure.o, an object module containing the pure version of the - system interface code which uses Open() Close() Read() Seek() - ExamineFH() AsmAllocPooled() AsmFreePooled() etc. This version can - be used in both normal programs and in Amiga run-time shared system - librarys (can be linked with lib:libinit.o, no copying of DATA and - BSS hunks for each OpenLibrary() necessary). Source code is in - src/base/ftsystem.c. - -- 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/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 - exit(). For debugging of Amiga run-time shared system libraries. - Source code is in src/base/ftdebug.c. - -- NO ftinit.o. Because linking with a link library should result in - linking only the needed object modules in it, but standard - 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/freetype/config/ftmodule.h. - - -To use in your own programs: - -- Insert the #define and #include statements from top of - 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 - object files are compiled with PARAMETERS=BOTH. - -- "smake assign" (assign "FT:" to the FreeType2 main directory). - -- Compile your program. - -- Link with either ftsystem.o or ftsystempure.o, if debugging enabled - with either ftdebug.o or (ftdebugpure.o and lib:debug.lib), and with - ft2_680x0.lib as link library. - - -To adapt to other compilers: - -- The standard ANSI C maximum length of 31 significant characters in - identifiers is not enough for FreeType2. Check if your compiler has - a minimum length of 40 significant characters or can be switched to - it. "idlen=40" is the option for SAS/C. Setting #define - HAVE_LIMIT_ON_IDENTS in an include file may also work (not tested). - -- Make sure that the include directory in builds/amiga is searched - before the normal FreeType2 include directory, so you are able to - replace problematic include files with your own version (same may be - useful for the src directory). - -- An example of how to replace/workaround a problematic include file - 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: -coding: latin-1 -End: diff --git a/vendor/freetype/builds/amiga/include/config/ftconfig.h b/vendor/freetype/builds/amiga/include/config/ftconfig.h deleted file mode 100644 index 9ca24825938..00000000000 --- a/vendor/freetype/builds/amiga/include/config/ftconfig.h +++ /dev/null @@ -1,55 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftconfig.h */ -/* */ -/* Amiga-specific configuration file (specification only). */ -/* */ -/* Copyright (C) 2005-2025 by */ -/* Werner Lemberg and Detlef Würkner. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - -/* - * This is an example how to override the default FreeType2 header files - * with Amiga-specific changes. When the compiler searches this directory - * before the default directory, we can do some modifications. - * - * Here we must change FT_EXPORT_DEF so that SAS/C does - * generate the needed XDEFs. - */ - -#if 0 -#define FT_EXPORT_DEF( x ) extern x -#endif - -#undef FT_EXPORT_DEF -#define FT_EXPORT_DEF( x ) x - -/* Now include the original file */ -#ifndef __MORPHOS__ -#ifdef __SASC -#include "FT:include/freetype/config/ftconfig.h" -#else -#include "/FT/include/freetype/config/ftconfig.h" -#endif -#else -/* We must define that, it seems that - * lib/gcc-lib/ppc-morphos/2.95.3/include/syslimits.h is missing in - * ppc-morphos-gcc-2.95.3-bin.tgz (gcc for 68k producing MorphOS PPC elf - * binaries from http://www.morphos.de) - */ -#define _LIBC_LIMITS_H_ -#include "/FT/include/freetype/config/ftconfig.h" -#endif - -/* -Local Variables: -coding: latin-1 -End: -*/ diff --git a/vendor/freetype/builds/amiga/include/config/ftmodule.h b/vendor/freetype/builds/amiga/include/config/ftmodule.h deleted file mode 100644 index a9ea13deee1..00000000000 --- a/vendor/freetype/builds/amiga/include/config/ftmodule.h +++ /dev/null @@ -1,158 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftmodule.h */ -/* */ -/* Amiga-specific FreeType module selection. */ -/* */ -/* Copyright (C) 2005-2025 by */ -/* Werner Lemberg and Detlef Würkner. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - -/* - * To avoid that all your programs include all FreeType modules, - * you copy the following piece of source code into your own - * source file and specify which modules you really need in your - * application by uncommenting the appropriate lines. - */ -/* -//#define FT_USE_AUTOFIT // autofitter -//#define FT_USE_RASTER // monochrome rasterizer -//#define FT_USE_SMOOTH // anti-aliasing rasterizer -//#define FT_USE_TT // truetype font driver -//#define FT_USE_T1 // type1 font driver -//#define FT_USE_T42 // type42 font driver -//#define FT_USE_T1CID // cid-keyed type1 font driver // no cmap support -//#define FT_USE_CFF // opentype font driver -//#define FT_USE_BDF // bdf bitmap font driver -//#define FT_USE_PCF // pcf bitmap font driver -//#define FT_USE_PFR // pfr font driver -//#define FT_USE_WINFNT // windows .fnt|.fon bitmap font driver -//#define FT_USE_OTV // opentype validator -//#define FT_USE_GXV // truetype gx validator -#include "FT:src/base/ftinit.c" -*/ - -/* Make sure that the needed support modules are built in. - * Dependencies can be found by searching for FT_Get_Module. - */ - -#ifdef FT_USE_T42 -#define FT_USE_TT -#endif - -#ifdef FT_USE_TT -#define FT_USE_SFNT -#endif - -#ifdef FT_USE_CFF -#define FT_USE_SFNT -#define FT_USE_PSHINT -#define FT_USE_PSNAMES -#endif - -#ifdef FT_USE_T1 -#define FT_USE_PSAUX -#define FT_USE_PSHINT -#define FT_USE_PSNAMES -#endif - -#ifdef FT_USE_T1CID -#define FT_USE_PSAUX -#define FT_USE_PSHINT -#define FT_USE_PSNAMES -#endif - -#ifdef FT_USE_PSAUX -#define FT_USE_PSNAMES -#endif - -#ifdef FT_USE_SFNT -#define FT_USE_PSNAMES -#endif - -/* Now include the modules */ - -#ifdef FT_USE_AUTOFIT -FT_USE_MODULE( FT_Module_Class, autofit_module_class ) -#endif - -#ifdef FT_USE_TT -FT_USE_MODULE( FT_Driver_ClassRec, tt_driver_class ) -#endif - -#ifdef FT_USE_T1 -FT_USE_MODULE( FT_Driver_ClassRec, t1_driver_class ) -#endif - -#ifdef FT_USE_CFF -FT_USE_MODULE( FT_Driver_ClassRec, cff_driver_class ) -#endif - -#ifdef FT_USE_T1CID -FT_USE_MODULE( FT_Driver_ClassRec, t1cid_driver_class ) -#endif - -#ifdef FT_USE_PFR -FT_USE_MODULE( FT_Driver_ClassRec, pfr_driver_class ) -#endif - -#ifdef FT_USE_T42 -FT_USE_MODULE( FT_Driver_ClassRec, t42_driver_class ) -#endif - -#ifdef FT_USE_WINFNT -FT_USE_MODULE( FT_Driver_ClassRec, winfnt_driver_class ) -#endif - -#ifdef FT_USE_PCF -FT_USE_MODULE( FT_Driver_ClassRec, pcf_driver_class ) -#endif - -#ifdef FT_USE_PSAUX -FT_USE_MODULE( FT_Module_Class, psaux_module_class ) -#endif - -#ifdef FT_USE_PSNAMES -FT_USE_MODULE( FT_Module_Class, psnames_module_class ) -#endif - -#ifdef FT_USE_PSHINT -FT_USE_MODULE( FT_Module_Class, pshinter_module_class ) -#endif - -#ifdef FT_USE_RASTER -FT_USE_MODULE( FT_Renderer_Class, ft_raster1_renderer_class ) -#endif - -#ifdef FT_USE_SFNT -FT_USE_MODULE( FT_Module_Class, sfnt_module_class ) -#endif - -#ifdef FT_USE_SMOOTH -FT_USE_MODULE( FT_Renderer_Class, ft_smooth_renderer_class ) -#endif - -#ifdef FT_USE_OTV -FT_USE_MODULE( FT_Module_Class, otv_module_class ) -#endif - -#ifdef FT_USE_BDF -FT_USE_MODULE( FT_Driver_ClassRec, bdf_driver_class ) -#endif - -#ifdef FT_USE_GXV -FT_USE_MODULE( FT_Module_Class, gxv_module_class ) -#endif - -/* -Local Variables: -coding: latin-1 -End: -*/ diff --git a/vendor/freetype/builds/amiga/makefile.os4 b/vendor/freetype/builds/amiga/makefile.os4 deleted file mode 100644 index e1b85750a23..00000000000 --- a/vendor/freetype/builds/amiga/makefile.os4 +++ /dev/null @@ -1,297 +0,0 @@ -# -# Makefile for FreeType2 link library using gcc 4.0.3 from the -# AmigaOS4 SDK -# - - -# Copyright (C) 2005-2025 by -# Werner Lemberg and Detlef Würkner. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -# to build from the builds/amiga directory call -# -# make -f makefile.os4 -# -# Your programs source code should start with this -# (uncomment the parts you do not need to keep the program small): -# ---8<--- -#define FT_USE_AUTOFIT // autofitter -#define FT_USE_RASTER // monochrome rasterizer -#define FT_USE_SMOOTH // anti-aliasing rasterizer -#define FT_USE_TT // truetype font driver -#define FT_USE_T1 // type1 font driver -#define FT_USE_T42 // type42 font driver -#define FT_USE_T1CID // cid-keyed type1 font driver -#define FT_USE_CFF // opentype font driver -#define FT_USE_BDF // bdf bitmap font driver -#define FT_USE_PCF // pcf bitmap font driver -#define FT_USE_PFR // pfr font driver -#define FT_USE_WINFNT // windows .fnt|.fon bitmap font driver -#define FT_USE_OTV // opentype validator -#define FT_USE_GXV // truetype gx validator -#include "FT:src/base/ftinit.c" -# ---8<--- -# -# 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/freetype/config/ftoption.h). - -all: assign libft2_ppc.a ftsystem.ppc.o ftsystempure.ppc.o - -assign: - assign FT: // - -CC = ppc-amigaos-gcc -AR = ppc-amigaos-ar -RANLIB = ppc-amigaos-ranlib - -DIRFLAGS = -Iinclude -I/FT/src -I/FT/include -I/SDK/include - -WARNINGS = -Wall -W -Wundef -Wpointer-arith -Wbad-function-cast \ - -Waggregate-return -Wwrite-strings -Wshadow - -OPTIONS = -DFT2_BUILD_LIBRARY -DNDEBUG -fno-builtin -OPTIMIZE = -O2 -fomit-frame-pointer -fstrength-reduce -finline-functions - -CFLAGS = -mcrt=clib2 $(DIRFLAGS) $(WARNINGS) $(FT2FLAGS) $(OPTIONS) $(OPTIMIZE) - -# -# FreeType2 library base -# -ftbase.ppc.o: FT:src/base/ftbase.c - $(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftbase.c - -ftinit.ppc.o: FT:src/base/ftinit.c - $(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftinit.c - -ftsystem.ppc.o: FT:src/base/ftsystem.c - $(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftsystem.c - -# pure version for use in run-time library etc -ftsystempure.ppc.o: src/base/ftsystem.c - $(CC) -c $(CFLAGS) -o $@ src/base/ftsystem.c - -# -# FreeType2 library base extensions -# -ftbbox.ppc.o: FT:src/base/ftbbox.c - $(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftbbox.c - -ftbdf.ppc.o: FT:src/base/ftbdf.c - $(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftbdf.c - -ftbitmap.ppc.o: FT:src/base/ftbitmap.c - $(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftbitmap.c - -ftcid.ppc.o: FT:src/base/ftcid.c - $(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftcid.c - -ftdebug.ppc.o: FT:src/base/ftdebug.c - $(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftdebug.c - -# pure version for use in run-time library etc -ftdebugpure.ppc.o: src/base/ftdebug.c - $(CC) -c $(CFLAGS) -o $@ src/base/ftdebug.c - -ftfstype.ppc.o: FT:src/base/ftfstype.c - $(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftfstype.c - -ftgasp.ppc.o: FT:src/base/ftgasp.c - $(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftgasp.c - -ftglyph.ppc.o: FT:src/base/ftglyph.c - $(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftglyph.c - -ftgxval.ppc.o: FT:src/base/ftgxval.c - $(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftgxval.c - -ftmm.ppc.o: FT:src/base/ftmm.c - $(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftmm.c - -ftotval.ppc.o: FT:src/base/ftotval.c - $(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftotval.c - -ftpatent.ppc.o: FT:src/base/ftpatent.c - $(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftpatent.c - -ftpfr.ppc.o: FT:src/base/ftpfr.c - $(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftpfr.c - -ftstroke.ppc.o: FT:src/base/ftstroke.c - $(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftstroke.c - -ftsynth.ppc.o: FT:src/base/ftsynth.c - $(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftsynth.c - -fttype1.ppc.o: FT:src/base/fttype1.c - $(CC) -c $(CFLAGS) -o $@ /FT/src/base/fttype1.c - -ftwinfnt.ppc.o: FT:src/base/ftwinfnt.c - $(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftwinfnt.c - -# -# FreeType2 library autofitting module -# -autofit.ppc.o: FT:src/autofit/autofit.c - $(CC) -c $(CFLAGS) -o $@ /FT/src/autofit/autofit.c - -# -# FreeType2 library postscript hinting module -# -pshinter.ppc.o: FT:src/pshinter/pshinter.c - $(CC) -c $(CFLAGS) -o $@ /FT/src/pshinter/pshinter.c - -# -# FreeType2 library PS support module -# -psaux.ppc.o: FT:src/psaux/psaux.c - $(CC) -c $(CFLAGS) -o $@ /FT/src/psaux/psaux.c - -# -# FreeType2 library PS glyph names module -# -psnames.ppc.o: FT:src/psnames/psnames.c - $(CC) -c $(CFLAGS) -o $@ /FT/src/psnames/psnames.c - -# -# FreeType2 library monochrome raster module -# -raster.ppc.o: FT:src/raster/raster.c - $(CC) -c $(CFLAGS) -o $@ /FT/src/raster/raster.c - -# -# FreeType2 library anti-aliasing raster module -# -smooth.ppc.o: FT:src/smooth/smooth.c - $(CC) -c $(CFLAGS) -o $@ /FT/src/smooth/smooth.c - -# -# FreeType2 library 'sfnt' module -# -sfnt.ppc.o: FT:src/sfnt/sfnt.c - $(CC) -c $(CFLAGS) -o $@ /FT/src/sfnt/sfnt.c - -# -# FreeType2 library glyph and image caching system -# -ftcache.ppc.o: FT:src/cache/ftcache.c - $(CC) -c $(CFLAGS) -o $@ /FT/src/cache/ftcache.c - -# -# FreeType2 library OpenType font driver -# -cff.ppc.o: FT:src/cff/cff.c - $(CC) -c $(CFLAGS) -o $@ /FT/src/cff/cff.c - -# -# FreeType2 library TrueType font driver -# -truetype.ppc.o: FT:src/truetype/truetype.c - $(CC) -c $(CFLAGS) -o $@ /FT/src/truetype/truetype.c - -# -# FreeType2 library Type1 font driver -# -type1.ppc.o: FT:src/type1/type1.c - $(CC) -c $(CFLAGS) -o $@ /FT/src/type1/type1.c - -# -# FreeType2 library Type42 font driver -# -type42.ppc.o: FT:src/type42/type42.c - $(CC) -c $(CFLAGS) -o $@ /FT/src/type42/type42.c - -# -# FreeType2 library CID-keyed Type1 font driver -# -type1cid.ppc.o: FT:src/cid/type1cid.c - $(CC) -c $(CFLAGS) -o $@ /FT/src/cid/type1cid.c - -# -# FreeType2 library BDF bitmap font driver -# -bdf.ppc.o: FT:src/bdf/bdf.c - $(CC) -c $(CFLAGS) -o $@ /FT/src/bdf/bdf.c - -# -# FreeType2 library PCF bitmap font driver -# -pcf.ppc.o: FT:src/pcf/pcf.c - $(CC) -c $(CFLAGS) -o $@ /FT/src/pcf/pcf.c - -# -# FreeType2 library gzip support for compressed PCF bitmap fonts -# -gzip.ppc.o: FT:src/gzip/ftgzip.c - $(CC) -c $(CFLAGS) -o $@ /FT/src/gzip/ftgzip.c - -# -# FreeType2 library bzip2 support for compressed PCF bitmap fonts -# -bzip2.ppc.o: FT:src/bzip2/ftbzip2.c - $(CC) -c $(CFLAGS) -o $@ /FT/src/bzip2/ftbzip2.c - -# -# FreeType2 library compress support for compressed PCF bitmap fonts -# -lzw.ppc.o: FT:src/lzw/ftlzw.c - $(CC) -c $(CFLAGS) -o $@ /FT/src/lzw/ftlzw.c - -# -# FreeType2 library PFR font driver -# -pfr.ppc.o: FT:src/pfr/pfr.c - $(CC) -c $(CFLAGS) -o $@ /FT/src/pfr/pfr.c - -# -# FreeType2 library Windows FNT/FON bitmap font driver -# -winfnt.ppc.o: FT:src/winfonts/winfnt.c - $(CC) -c $(CFLAGS) -o $@ /FT/src/winfonts/winfnt.c - -# -# FreeType2 library TrueTypeGX Validator -# -gxvalid.ppc.o: FT:src/gxvalid/gxvalid.c - $(CC) -c $(CFLAGS) -Wno-aggregate-return -o $@ /FT/src/gxvalid/gxvalid.c - -# -# FreeType2 library OpenType validator -# -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 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 - -AFIT = autofit.ppc.o - -GXV = gxvalid.ppc.o - -OTV = otvalid.ppc.o - -PS = psaux.ppc.o psnames.ppc.o pshinter.ppc.o - -RASTER = raster.ppc.o smooth.ppc.o - -FONTD = cff.ppc.o type1.ppc.o type42.ppc.o type1cid.ppc.o truetype.ppc.o\ - bdf.ppc.o pcf.ppc.o pfr.ppc.o winfnt.ppc.o - -libft2_ppc.a: $(BASE) $(AFIT) $(GXV) $(OTV) $(PS) $(RASTER) sfnt.ppc.o ftcache.ppc.o $(FONTD) gzip.ppc.o lzw.ppc.o - $(AR) r $@ $(BASE) $(AFIT) $(GXV) $(OTV) $(PS) $(RASTER) sfnt.ppc.o ftcache.ppc.o $(FONTD) gzip.ppc.o lzw.ppc.o - $(RANLIB) $@ - -#Local Variables: -#coding: latin-1 -#End: diff --git a/vendor/freetype/builds/amiga/smakefile b/vendor/freetype/builds/amiga/smakefile deleted file mode 100644 index b8990f5a0f8..00000000000 --- a/vendor/freetype/builds/amiga/smakefile +++ /dev/null @@ -1,299 +0,0 @@ -# -# Makefile for FreeType2 link library using Amiga SAS/C 6.58 -# - - -# Copyright (C) 2005-2025 by -# Werner Lemberg and Detlef Würkner. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -# to build from the builds/amiga directory call -# -# smake assign -# smake -# -# Your programs source code should start with this -# (uncomment the parts you do not need to keep the program small): -# ---8<--- -#define FT_USE_AUTOFIT // autofitter -#define FT_USE_RASTER // monochrome rasterizer -#define FT_USE_SMOOTH // anti-aliasing rasterizer -#define FT_USE_TT // truetype font driver -#define FT_USE_T1 // type1 font driver -#define FT_USE_T42 // type42 font driver -#define FT_USE_T1CID // cid-keyed type1 font driver -#define FT_USE_CFF // opentype font driver -#define FT_USE_BDF // bdf bitmap font driver -#define FT_USE_PCF // pcf bitmap font driver -#define FT_USE_PFR // pfr font driver -#define FT_USE_WINFNT // windows .fnt|.fon bitmap font driver -#define FT_USE_OTV // opentype validator -#define FT_USE_GXV // truetype gx validator -#include "FT:src/base/ftinit.c" -# ---8<--- -# -# 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/freetype/config/ftoption.h). - -OBJBASE = ftbase.o ftbbox.o ftbdf.o ftbitmap.o ftcid.o ftfstype.o \ - ftgasp.o ftglyph.o ftgxval.o ftmm.o ftotval.o \ - ftpatent.o ftpfr.o ftstroke.o ftsynth.o fttype1.o ftwinfnt.o - -OBJSYSTEM = ftsystem.o ftsystempure.o - -OBJDEBUG = ftdebug.o ftdebugpure.o - -OBJAFIT = autofit.o - -OBJGXV = gxvalid.o - -OBJOTV = otvalid.o - -OBJPS = psaux.o psnames.o pshinter.o - -OBJRASTER = raster.o smooth.o - -OBJSFNT = sfnt.o - -OBJCACHE = ftcache.o - -OBJFONTD = cff.o type1.o type42.o type1cid.o\ - truetype.o winfnt.o bdf.o pcf.o pfr.o - -CORE = FT:src/ - -CPU = 68000 -#CPU = 68020 -#CPU = 68030 -#CPU = 68040 -#CPU = 68060 - -OPTIMIZER = optinlocal - -SCFLAGS = optimize opttime optsched strmerge data=faronly idlen=50 cpu=$(CPU)\ - idir=include/ idir=$(CORE) idir=FT:include/ nostackcheck nochkabort\ - noicons ignore=79,85,110,306 parameters=both define=FT2_BUILD_LIBRARY - -LIB = ft2_$(CPU).lib - -# sample linker options -OPTS = link lib=$(LIB),lib:sc.lib,lib:amiga.lib,lib:debug.lib\ - smallcode smalldata noicons utillib - -# sample program entry -#myprog: myprog.c ftsystem.o $(LIB) -# sc $< programname=$@ ftsystem.o $(SCFLAGS) $(OPTS) - -all: $(LIB) $(OBJSYSTEM) $(OBJDEBUG) - -assign: - assign FT: // - -# uses separate object modules in lib to make for easier debugging -# also, can make smaller programs if entire engine is not used -ft2_$(CPU).lib: $(OBJBASE) $(OBJAFIT) $(OBJOTV) $(OBJPS) $(OBJRASTER) $(OBJSFNT) $(OBJCACHE) $(OBJFONTD) lzw.o gzip.o bzip2.o - oml $@ r $(OBJBASE) $(OBJAFIT) $(OBJOTV) $(OBJPS) $(OBJRASTER) $(OBJSFNT) $(OBJCACHE) $(OBJFONTD) lzw.o gzip.o bzip2.o - -clean: - -delete \#?.o - -realclean: clean - -delete ft2$(CPU).lib - -# -# freetype library base -# -ftbase.o: $(CORE)base/ftbase.c - sc $(SCFLAGS) objname=$@ $< -ftinit.o: $(CORE)base/ftinit.c - sc $(SCFLAGS) objname=$@ $< -ftsystem.o: $(CORE)base/ftsystem.c - sc $(SCFLAGS) objname=$@ $< -ftsystempure.o: src/base/ftsystem.c ## pure version for use in run-time library etc - sc $(SCFLAGS) objname=$@ $< -ftdebug.o: $(CORE)base/ftdebug.c - sc $(SCFLAGS) objname=$@ $< -ftdebugpure.o: src/base/ftdebug.c ## pure version for use in run-time library etc - sc $(SCFLAGS) objname=$@ $< -# -# freetype library base extensions -# -ftbbox.o: $(CORE)base/ftbbox.c - sc $(SCFLAGS) objname=$@ $< -ftbdf.o: $(CORE)base/ftbdf.c - sc $(SCFLAGS) objname=$@ $< -ftbitmap.o: $(CORE)base/ftbitmap.c - sc $(SCFLAGS) objname=$@ $< -ftcid.o: $(CORE)base/ftcid.c - sc $(SCFLAGS) objname=$@ $< -ftfstype.o: $(CORE)base/ftfstype.c - sc $(SCFLAGS) objname=$@ $< -ftgasp.o: $(CORE)base/ftgasp.c - sc $(SCFLAGS) objname=$@ $< -ftglyph.o: $(CORE)base/ftglyph.c - sc $(SCFLAGS) objname=$@ $< -ftgxval.o: $(CORE)base/ftgxval.c - sc $(SCFLAGS) objname=$@ $< -ftmm.o: $(CORE)base/ftmm.c - sc $(SCFLAGS) objname=$@ $< -ftotval.o: $(CORE)base/ftotval.c - sc $(SCFLAGS) objname=$@ $< -ftpatent.o: $(CORE)base/ftpatent.c - sc $(SCFLAGS) objname=$@ $< -ftpfr.o: $(CORE)base/ftpfr.c - sc $(SCFLAGS) objname=$@ $< -ftstroke.o: $(CORE)base/ftstroke.c - sc $(SCFLAGS) objname=$@ $< -ftsynth.o: $(CORE)base/ftsynth.c - sc $(SCFLAGS) objname=$@ $< -fttype1.o: $(CORE)base/fttype1.c - sc $(SCFLAGS) objname=$@ $< -ftwinfnt.o: $(CORE)base/ftwinfnt.c - sc $(SCFLAGS) objname=$@ $< - -# -# freetype library autofitter module -# -autofit.o: $(CORE)autofit/autofit.c - sc $(SCFLAGS) objname=$@ $< - -# -# freetype library PS hinting module -# -pshinter.o: $(CORE)pshinter/pshinter.c - sc $(SCFLAGS) objname=$@ $< -# -# freetype library PS support module -# -psaux.o: $(CORE)psaux/psaux.c - sc $(SCFLAGS) objname=$@ $< - -# -# freetype library PS glyph names module -# -psnames.o: $(CORE)psnames/psnames.c - sc $(SCFLAGS) code=far objname=$@ $< - -# -# freetype library monochrome raster module -# -raster.o: $(CORE)raster/raster.c - sc $(SCFLAGS) objname=$@ $< - -# -# freetype library anti-aliasing raster module -# -smooth.o: $(CORE)smooth/smooth.c - sc $(SCFLAGS) objname=$@ $< - -# -# freetype library 'sfnt' module -# -sfnt.o: $(CORE)sfnt/sfnt.c - sc $(SCFLAGS) objname=$@ $< - -# -# freetype library glyph and image caching system (still experimental) -# -ftcache.o: $(CORE)cache/ftcache.c - sc $(SCFLAGS) objname=$@ $< - -# -# freetype library OpenType font driver -# -cff.o: $(CORE)cff/cff.c - sc $(SCFLAGS) objname=$@ $< - -# -# freetype library TrueType font driver -# -truetype.o: $(CORE)truetype/truetype.c - sc $(SCFLAGS) objname=$@ $< - -# -# freetype library Type1 font driver -# -type1.o: $(CORE)type1/type1.c - sc $(SCFLAGS) objname=$@ $< - -# -# FreeType2 library Type42 font driver -# -type42.o: $(CORE)type42/type42.c - sc $(SCFLAGS) objname=$@ $< - -# -# freetype library CID-keyed Type1 font driver -# -type1cid.o: $(CORE)cid/type1cid.c - sc $(SCFLAGS) objname=$@ $< -# -# freetype library CID-keyed Type1 font driver extensions -# -#cidafm.o: $(CORE)cid/cidafm.c -# sc $(SCFLAGS) objname=$@ $< - -# -# freetype library BDF bitmap font driver -# -bdf.o: $(CORE)bdf/bdf.c - sc $(SCFLAGS) objname=$@ $< - -# -# freetype library PCF bitmap font driver -# -pcf.o: $(CORE)pcf/pcf.c - sc $(SCFLAGS) objname=$@ $< - -# -# freetype library gzip support for compressed PCF bitmap fonts -# -gzip.o: $(CORE)gzip/ftgzip.c - sc $(SCFLAGS) define FAR objname=$@ $< - -# -# freetype library bzip2 support for compressed PCF bitmap fonts -# -bzip2.o: $(CORE)bzip2/ftbzip2.c - sc $(SCFLAGS) define FAR objname=$@ $< - -# -# freetype library compress support for compressed PCF bitmap fonts -# -lzw.o: $(CORE)lzw/ftlzw.c - sc $(SCFLAGS) objname=$@ $< - -# -# freetype library PFR font driver -# -pfr.o: $(CORE)pfr/pfr.c - sc $(SCFLAGS) objname=$@ $< - -# -# freetype library Windows FNT/FON bitmap font driver -# -winfnt.o: $(CORE)winfonts/winfnt.c - sc $(SCFLAGS) objname=$@ $< - -# -# freetype library TrueTypeGX validator -# -gxvalid.o: $(CORE)gxvalid/gxvalid.c - sc $(SCFLAGS) objname=$@ $< - -# -# freetype library OpenType validator -# -otvalid.o: $(CORE)otvalid/otvalid.c - sc $(SCFLAGS) objname=$@ $< - -#Local Variables: -#coding: latin-1 -#End: diff --git a/vendor/freetype/builds/amiga/src/base/ftdebug.c b/vendor/freetype/builds/amiga/src/base/ftdebug.c deleted file mode 100644 index 8aa0a84eb9f..00000000000 --- a/vendor/freetype/builds/amiga/src/base/ftdebug.c +++ /dev/null @@ -1,348 +0,0 @@ -/**************************************************************************** - * - * ftdebug.c - * - * Debugging and logging component for amiga (body). - * - * Copyright (C) 1996-2025 by - * David Turner, Robert Wilhelm, Werner Lemberg, and Detlef Wuerkner. - * - * This file is part of the FreeType project, and may only be used, - * modified, and distributed under the terms of the FreeType project - * license, LICENSE.TXT. By continuing to use, modify, or distribute - * this file you indicate that you have read the license and - * understand and accept it fully. - * - */ - - - /************************************************************************** - * - * This component contains various macros and functions used to ease the - * debugging of the FreeType engine. Its main purpose is in assertion - * checking, tracing, and error detection. - * - * There are now three debugging modes: - * - * - trace mode - * - * Error and trace messages are sent to the log file (which can be the - * standard error output). - * - * - error mode - * - * Only error messages are generated. - * - * - release mode: - * - * No error message is sent or generated. The code is free from any - * debugging parts. - * - */ - - - /* - * Based on the default `ftdebug.c' file, - * replaced `vprintf' with `KVPrintF', - * commented out `exit', - * replaced `getenv' with `GetVar'. - */ - -#include -#include -#include -#include - -#define __NOLIBBASE__ -#define __NOLOBALIFACE__ -#define __USE_INLINE__ - -#include -#include - -#ifndef __amigaos4__ - extern struct Library* DOSBase; -#else - extern struct DOSIFace* IDOS; -#endif - - -#include -#include -#include - - -#ifdef FT_DEBUG_LEVEL_ERROR - - /* documentation is in ftdebug.h */ - - FT_BASE_DEF( void ) - FT_Message( const char* fmt, - ... ) - { - va_list ap; - - - va_start( ap, fmt ); - KVPrintF( fmt, ap ); - va_end( ap ); - } - - - /* documentation is in ftdebug.h */ - - FT_BASE_DEF( void ) - FT_Panic( const char* fmt, - ... ) - { - va_list ap; - - - va_start( ap, fmt ); - KVPrintF( fmt, ap ); - va_end( ap ); - - /* exit( EXIT_FAILURE ); */ - } - - - /* documentation is in ftdebug.h */ - - FT_BASE_DEF( int ) - FT_Throw( FT_Error error, - int line, - const char* file ) - { -#if 0 - /* activating the code in this block makes FreeType very chatty */ - fprintf( stderr, - "%s:%d: error 0x%02x: %s\n", - file, - line, - error, - FT_Error_String( error ) ); -#else - FT_UNUSED( error ); - FT_UNUSED( line ); - FT_UNUSED( file ); -#endif - - return 0; - } - -#endif /* FT_DEBUG_LEVEL_ERROR */ - - - -#ifdef FT_DEBUG_LEVEL_TRACE - - /* array of trace levels, initialized to 0; */ - /* this gets adjusted at run-time */ - static int ft_trace_levels_enabled[trace_count]; - - /* array of trace levels, always initialized to 0 */ - static int ft_trace_levels_disabled[trace_count]; - - /* a pointer to either `ft_trace_levels_enabled' */ - /* or `ft_trace_levels_disabled' */ - int* ft_trace_levels; - - /* define array of trace toggle names */ -#define FT_TRACE_DEF( x ) #x , - - static const char* ft_trace_toggles[trace_count + 1] = - { -#include - NULL - }; - -#undef FT_TRACE_DEF - - - /* documentation is in ftdebug.h */ - - FT_BASE_DEF( FT_Int ) - FT_Trace_Get_Count( void ) - { - return trace_count; - } - - - /* documentation is in ftdebug.h */ - - FT_BASE_DEF( const char * ) - FT_Trace_Get_Name( FT_Int idx ) - { - int max = FT_Trace_Get_Count(); - - - if ( idx < max ) - return ft_trace_toggles[idx]; - else - return NULL; - } - - - /* documentation is in ftdebug.h */ - - FT_BASE_DEF( void ) - FT_Trace_Disable( void ) - { - ft_trace_levels = ft_trace_levels_disabled; - } - - - /* documentation is in ftdebug.h */ - - FT_BASE_DEF( void ) - FT_Trace_Enable( void ) - { - ft_trace_levels = ft_trace_levels_enabled; - } - - - /************************************************************************** - * - * Initialize the tracing sub-system. This is done by retrieving the - * value of the `FT2_DEBUG' environment variable. It must be a list of - * toggles, separated by spaces, `;', or `,'. Example: - * - * export FT2_DEBUG="any:3 memory:7 stream:5" - * - * This requests that all levels be set to 3, except the trace level for - * the memory and stream components which are set to 7 and 5, - * respectively. - * - * See the file `include/freetype/internal/fttrace.h' for details of - * the available toggle names. - * - * The level must be between 0 and 7; 0 means quiet (except for serious - * runtime errors), and 7 means _very_ verbose. - */ - FT_BASE_DEF( void ) - ft_debug_init( void ) - { - /* const char* ft2_debug = ft_getenv( "FT2_DEBUG" ); */ - char buf[256]; - const char* ft2_debug = &buf[0]; - - - /* if ( ft2_debug ) */ - if ( GetVar( "FT2_DEBUG", (STRPTR)ft2_debug, 256, LV_VAR ) > 0 ) - { - const char* p = ft2_debug; - const char* q; - - - for ( ; *p; p++ ) - { - /* skip leading whitespace and separators */ - if ( *p == ' ' || *p == '\t' || *p == ',' || *p == ';' || *p == '=' ) - continue; - - /* read toggle name, followed by ':' */ - q = p; - while ( *p && *p != ':' ) - p++; - - if ( !*p ) - break; - - if ( *p == ':' && p > q ) - { - FT_Int n, i, len = (FT_Int)( p - q ); - FT_Int level = -1, found = -1; - - - for ( n = 0; n < trace_count; n++ ) - { - const char* toggle = ft_trace_toggles[n]; - - - for ( i = 0; i < len; i++ ) - { - if ( toggle[i] != q[i] ) - break; - } - - if ( i == len && toggle[i] == 0 ) - { - found = n; - break; - } - } - - /* read level */ - p++; - if ( *p ) - { - level = *p - '0'; - if ( level < 0 || level > 7 ) - level = -1; - } - - if ( found >= 0 && level >= 0 ) - { - if ( found == trace_any ) - { - /* special case for `any' */ - for ( n = 0; n < trace_count; n++ ) - ft_trace_levels_enabled[n] = level; - } - else - ft_trace_levels_enabled[found] = level; - } - } - } - } - - ft_trace_levels = ft_trace_levels_enabled; - } - - -#else /* !FT_DEBUG_LEVEL_TRACE */ - - - FT_BASE_DEF( void ) - ft_debug_init( void ) - { - /* nothing */ - } - - - FT_BASE_DEF( FT_Int ) - FT_Trace_Get_Count( void ) - { - return 0; - } - - - FT_BASE_DEF( const char * ) - FT_Trace_Get_Name( FT_Int idx ) - { - FT_UNUSED( idx ); - - return NULL; - } - - - FT_BASE_DEF( void ) - FT_Trace_Disable( void ) - { - /* nothing */ - } - - - /* documentation is in ftdebug.h */ - - FT_BASE_DEF( void ) - FT_Trace_Enable( void ) - { - /* nothing */ - } - - -#endif /* !FT_DEBUG_LEVEL_TRACE */ - - -/* END */ diff --git a/vendor/freetype/builds/amiga/src/base/ftsystem.c b/vendor/freetype/builds/amiga/src/base/ftsystem.c deleted file mode 100644 index c8403fe19f0..00000000000 --- a/vendor/freetype/builds/amiga/src/base/ftsystem.c +++ /dev/null @@ -1,530 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftsystem.c */ -/* */ -/* Amiga-specific FreeType low-level system interface (body). */ -/* */ -/* Copyright (C) 1996-2025 by */ -/* David Turner, Robert Wilhelm, Werner Lemberg and Detlef Würkner. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - /*************************************************************************/ - /* */ - /* This file contains the Amiga interface used by FreeType to access */ - /* low-level, i.e. memory management, i/o access as well as thread */ - /* synchronisation. */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* Maintained by Detlef Würkner */ - /* */ - /* Based on the original ftsystem.c, */ - /* modified to avoid fopen(), fclose(), fread(), fseek(), ftell(), */ - /* malloc(), realloc(), and free(). */ - /* */ - /* Those C library functions are often not thread-safe or cant be */ - /* used in a shared Amiga library. If that's not a problem for you, */ - /* you can of course use the default ftsystem.c with C library calls */ - /* instead. */ - /* */ - /* This implementation needs exec V39+ because it uses AllocPooled() etc */ - /* */ - /*************************************************************************/ - -#define __NOLIBBASE__ -#define __NOGLOBALIFACE__ -#define __USE_INLINE__ -#include -#include -#include -#ifdef __amigaos4__ -extern struct ExecIFace *IExec; -extern struct DOSIFace *IDOS; -#else -extern struct Library *SysBase; -extern struct Library *DOSBase; -#endif - -#define IOBUF_SIZE 512 - -/* structure that helps us to avoid - * useless calls of Seek() and Read() - */ -struct SysFile -{ - BPTR file; - ULONG iobuf_start; - ULONG iobuf_end; - UBYTE iobuf[IOBUF_SIZE]; -}; - -#ifndef __amigaos4__ -/* C implementation of AllocVecPooled (see autodoc exec/AllocPooled) */ -APTR -Alloc_VecPooled( APTR poolHeader, - ULONG memSize ) -{ - ULONG newSize = memSize + sizeof ( ULONG ); - ULONG *mem = AllocPooled( poolHeader, newSize ); - - if ( !mem ) - return NULL; - *mem = newSize; - return mem + 1; -} - -/* C implementation of FreeVecPooled (see autodoc exec/AllocPooled) */ -void -Free_VecPooled( APTR poolHeader, - APTR memory ) -{ - ULONG *realmem = (ULONG *)memory - 1; - - FreePooled( poolHeader, realmem, *realmem ); -} -#endif - -#include -#include FT_CONFIG_CONFIG_H -#include -#include -#include -#include - -#include -#include -#include - - - /*************************************************************************/ - /* */ - /* MEMORY MANAGEMENT INTERFACE */ - /* */ - /*************************************************************************/ - - /*************************************************************************/ - /* */ - /* It is not necessary to do any error checking for the */ - /* allocation-related functions. This is done by the higher level */ - /* routines like ft_mem_alloc() or ft_mem_realloc(). */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* */ - /* ft_alloc */ - /* */ - /* */ - /* The memory allocation function. */ - /* */ - /* */ - /* memory :: A pointer to the memory object. */ - /* */ - /* size :: The requested size in bytes. */ - /* */ - /* */ - /* The address of newly allocated block. */ - /* */ - FT_CALLBACK_DEF( void* ) - ft_alloc( FT_Memory memory, - long size ) - { -#ifdef __amigaos4__ - return AllocVecPooled( memory->user, size ); -#else - return Alloc_VecPooled( memory->user, size ); -#endif - } - - - /*************************************************************************/ - /* */ - /* */ - /* ft_realloc */ - /* */ - /* */ - /* The memory reallocation function. */ - /* */ - /* */ - /* memory :: A pointer to the memory object. */ - /* */ - /* cur_size :: The current size of the allocated memory block. */ - /* */ - /* new_size :: The newly requested size in bytes. */ - /* */ - /* block :: The current address of the block in memory. */ - /* */ - /* */ - /* The address of the reallocated memory block. */ - /* */ - FT_CALLBACK_DEF( void* ) - ft_realloc( FT_Memory memory, - long cur_size, - long new_size, - void* block ) - { - void* new_block; - -#ifdef __amigaos4__ - new_block = AllocVecPooled ( memory->user, new_size ); -#else - new_block = Alloc_VecPooled ( memory->user, new_size ); -#endif - if ( new_block != NULL ) - { - CopyMem ( block, new_block, - ( new_size > cur_size ) ? cur_size : new_size ); -#ifdef __amigaos4__ - FreeVecPooled ( memory->user, block ); -#else - Free_VecPooled ( memory->user, block ); -#endif - } - return new_block; - } - - - /*************************************************************************/ - /* */ - /* */ - /* ft_free */ - /* */ - /* */ - /* The memory release function. */ - /* */ - /* */ - /* memory :: A pointer to the memory object. */ - /* */ - /* block :: The address of block in memory to be freed. */ - /* */ - FT_CALLBACK_DEF( void ) - ft_free( FT_Memory memory, - void* block ) - { -#ifdef __amigaos4__ - FreeVecPooled( memory->user, block ); -#else - Free_VecPooled( memory->user, block ); -#endif - } - - - /*************************************************************************/ - /* */ - /* RESOURCE MANAGEMENT INTERFACE */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ - /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log */ - /* messages during execution. */ - /* */ -#undef FT_COMPONENT -#define FT_COMPONENT io - - /* We use the macro STREAM_FILE for convenience to extract the */ - /* system-specific stream handle from a given FreeType stream object */ -#define STREAM_FILE( stream ) ( (struct SysFile *)stream->descriptor.pointer ) - - - /*************************************************************************/ - /* */ - /* */ - /* ft_amiga_stream_close */ - /* */ - /* */ - /* The function to close a stream. */ - /* */ - /* */ - /* stream :: A pointer to the stream object. */ - /* */ - FT_CALLBACK_DEF( void ) - ft_amiga_stream_close( FT_Stream stream ) - { - struct SysFile* sysfile; - - sysfile = STREAM_FILE( stream ); - Close ( sysfile->file ); - FreeMem ( sysfile, sizeof ( struct SysFile )); - - stream->descriptor.pointer = NULL; - stream->size = 0; - stream->base = NULL; - } - - - /*************************************************************************/ - /* */ - /* */ - /* ft_amiga_stream_io */ - /* */ - /* */ - /* The function to open a stream. */ - /* */ - /* */ - /* stream :: A pointer to the stream object. */ - /* */ - /* offset :: The position in the data stream to start reading. */ - /* */ - /* buffer :: The address of buffer to store the read data. */ - /* */ - /* count :: The number of bytes to read from the stream. */ - /* */ - /* */ - /* The number of bytes actually read. */ - /* */ - FT_CALLBACK_DEF( unsigned long ) - ft_amiga_stream_io( FT_Stream stream, - unsigned long offset, - unsigned char* buffer, - unsigned long count ) - { - struct SysFile* sysfile; - unsigned long read_bytes; - - if ( count != 0 ) - { - sysfile = STREAM_FILE( stream ); - - /* handle the seek */ - if ( (offset < sysfile->iobuf_start) || (offset + count > sysfile->iobuf_end) ) - { - /* requested offset implies we need a buffer refill */ - if ( !sysfile->iobuf_end || offset != sysfile->iobuf_end ) - { - /* a physical seek is necessary */ - Seek( sysfile->file, offset, OFFSET_BEGINNING ); - } - sysfile->iobuf_start = offset; - sysfile->iobuf_end = 0; /* trigger a buffer refill */ - } - - /* handle the read */ - if ( offset + count <= sysfile->iobuf_end ) - { - /* we have buffer and requested bytes are all inside our buffer */ - CopyMem( &sysfile->iobuf[offset - sysfile->iobuf_start], buffer, count ); - read_bytes = count; - } - else - { - /* (re)fill buffer */ - if ( count <= IOBUF_SIZE ) - { - /* requested bytes is a subset of the buffer */ - read_bytes = Read( sysfile->file, sysfile->iobuf, IOBUF_SIZE ); - if ( read_bytes == -1UL ) - { - /* error */ - read_bytes = 0; - } - else - { - sysfile->iobuf_end = offset + read_bytes; - CopyMem( sysfile->iobuf, buffer, count ); - if ( read_bytes > count ) - { - read_bytes = count; - } - } - } - else - { - /* we actually need more than our buffer can hold, so we decide - ** to do a single big read, and then copy the last IOBUF_SIZE - ** bytes of that to our internal buffer for later use */ - read_bytes = Read( sysfile->file, buffer, count ); - if ( read_bytes == -1UL ) - { - /* error */ - read_bytes = 0; - } - else - { - ULONG bufsize; - - bufsize = ( read_bytes > IOBUF_SIZE ) ? IOBUF_SIZE : read_bytes; - sysfile->iobuf_end = offset + read_bytes; - sysfile->iobuf_start = sysfile->iobuf_end - bufsize; - CopyMem( &buffer[read_bytes - bufsize] , sysfile->iobuf, bufsize ); - } - } - } - } - else - { - read_bytes = 0; - } - - return read_bytes; - } - - - /* documentation is in ftobjs.h */ - - FT_BASE_DEF( FT_Error ) - FT_Stream_Open( FT_Stream stream, - const char* filepathname ) - { - struct FileInfoBlock* fib; - struct SysFile* sysfile; - - - if ( !stream ) - return FT_THROW( Invalid_Stream_Handle ); - -#ifdef __amigaos4__ - sysfile = AllocMem ( sizeof (struct SysFile ), MEMF_SHARED ); -#else - sysfile = AllocMem ( sizeof (struct SysFile ), MEMF_PUBLIC ); -#endif - if ( !sysfile ) - { - FT_ERROR(( "FT_Stream_Open:" )); - FT_ERROR(( " could not open `%s'\n", filepathname )); - - return FT_THROW( Cannot_Open_Resource ); - } - sysfile->file = Open( (STRPTR)filepathname, MODE_OLDFILE ); - if ( !sysfile->file ) - { - FreeMem ( sysfile, sizeof ( struct SysFile )); - FT_ERROR(( "FT_Stream_Open:" )); - FT_ERROR(( " could not open `%s'\n", filepathname )); - - return FT_THROW( Cannot_Open_Resource ); - } - - fib = AllocDosObject( DOS_FIB, NULL ); - if ( !fib ) - { - Close ( sysfile->file ); - FreeMem ( sysfile, sizeof ( struct SysFile )); - FT_ERROR(( "FT_Stream_Open:" )); - FT_ERROR(( " could not open `%s'\n", filepathname )); - - return FT_THROW( Cannot_Open_Resource ); - } - if ( !( ExamineFH( sysfile->file, fib ) ) ) - { - FreeDosObject( DOS_FIB, fib ); - Close ( sysfile->file ); - FreeMem ( sysfile, sizeof ( struct SysFile )); - FT_ERROR(( "FT_Stream_Open:" )); - FT_ERROR(( " could not open `%s'\n", filepathname )); - - return FT_THROW( Cannot_Open_Resource ); - } - stream->size = fib->fib_Size; - FreeDosObject( DOS_FIB, fib ); - - stream->descriptor.pointer = (void *)sysfile; - stream->pathname.pointer = (char*)filepathname; - sysfile->iobuf_start = 0; - sysfile->iobuf_end = 0; - stream->pos = 0; - - stream->read = ft_amiga_stream_io; - stream->close = ft_amiga_stream_close; - - if ( !stream->size ) - { - ft_amiga_stream_close( stream ); - FT_ERROR(( "FT_Stream_Open:" )); - FT_ERROR(( " opened `%s' but zero-sized\n", filepathname )); - return FT_THROW( Cannot_Open_Stream ); - } - - FT_TRACE1(( "FT_Stream_Open:" )); - FT_TRACE1(( " opened `%s' (%ld bytes) successfully\n", - filepathname, stream->size )); - - return FT_Err_Ok; - } - - -#ifdef FT_DEBUG_MEMORY - - extern FT_Int - ft_mem_debug_init( FT_Memory memory ); - - extern void - ft_mem_debug_done( FT_Memory memory ); - -#endif - - - /* documentation is in ftobjs.h */ - - FT_BASE_DEF( FT_Memory ) - FT_New_Memory( void ) - { - FT_Memory memory; - - -#ifdef __amigaos4__ - memory = (FT_Memory)AllocVec( sizeof ( *memory ), MEMF_SHARED ); -#else - memory = (FT_Memory)AllocVec( sizeof ( *memory ), MEMF_PUBLIC ); -#endif - if ( memory ) - { -#ifdef __amigaos4__ - memory->user = CreatePool( MEMF_SHARED, 16384, 16384 ); -#else - memory->user = CreatePool( MEMF_PUBLIC, 16384, 16384 ); -#endif - if ( memory->user == NULL ) - { - FreeVec( memory ); - memory = NULL; - } - else - { - memory->alloc = ft_alloc; - memory->realloc = ft_realloc; - memory->free = ft_free; -#ifdef FT_DEBUG_MEMORY - ft_mem_debug_init( memory ); -#endif - } - } - - return memory; - } - - - /* documentation is in ftobjs.h */ - - FT_BASE_DEF( void ) - FT_Done_Memory( FT_Memory memory ) - { -#ifdef FT_DEBUG_MEMORY - ft_mem_debug_done( memory ); -#endif - - DeletePool( memory->user ); - FreeVec( memory ); - } - -/* -Local Variables: -coding: latin-1 -End: -*/ -/* END */ diff --git a/vendor/freetype/builds/ansi/ansi-def.mk b/vendor/freetype/builds/ansi/ansi-def.mk deleted file mode 100644 index b3dbcc4af08..00000000000 --- a/vendor/freetype/builds/ansi/ansi-def.mk +++ /dev/null @@ -1,77 +0,0 @@ -# -# FreeType 2 configuration rules for a `normal' ANSI system -# - - -# Copyright (C) 1996-2025 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -DELETE := rm -f -CAT := cat -SEP := / -PLATFORM_DIR := $(TOP_DIR)/builds/ansi -PLATFORM := ansi - -# This is used for `make refdoc' and `make refdoc-venv' -# -BIN := bin - -# The directory where all library files are placed. -# -# By default, this is the same as $(OBJ_DIR); however, this can be changed -# to suit particular needs. -# -LIB_DIR := $(OBJ_DIR) - - -# The name of the final library file. Note that the DOS-specific Makefile -# uses a shorter (8.3) name. -# -LIBRARY := lib$(PROJECT) - - -# Path inclusion flag. Some compilers use a different flag than `-I' to -# specify an additional include path. Examples are `/i=' or `-J'. -# -I := -I - - -# C flag used to define a macro before the compilation of a given source -# object. Usually it is `-D' like in `-DDEBUG'. -# -D := -D - - -# The link flag used to specify a given library file on link. Note that -# this is only used to compile the demo programs, not the library itself. -# -L := -l - - -# Target flag. -# -T := -o$(space) - - -# C flags -# -# These should concern: debug output, optimization & warnings. -# -# Use the ANSIFLAGS variable to define the compiler flags used to enforce -# ANSI compliance. -# -CFLAGS ?= -c - -# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. -# -ANSIFLAGS ?= - - -# EOF diff --git a/vendor/freetype/builds/ansi/ansi.mk b/vendor/freetype/builds/ansi/ansi.mk deleted file mode 100644 index 4d7a010daee..00000000000 --- a/vendor/freetype/builds/ansi/ansi.mk +++ /dev/null @@ -1,21 +0,0 @@ -# -# FreeType 2 configuration rules for a `normal' pseudo ANSI compiler/system -# - - -# Copyright (C) 1996-2025 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -include $(TOP_DIR)/builds/ansi/ansi-def.mk -include $(TOP_DIR)/builds/compiler/ansi-cc.mk -include $(TOP_DIR)/builds/link_std.mk - - -# EOF diff --git a/vendor/freetype/builds/atari/ATARI.H b/vendor/freetype/builds/atari/ATARI.H deleted file mode 100644 index 4ddd2eb2eba..00000000000 --- a/vendor/freetype/builds/atari/ATARI.H +++ /dev/null @@ -1,20 +0,0 @@ -#if defined( GXVALID_H_ ) -#pragma warn -aus /* too many unevaluated variables in gxvalid */ -#endif - -#ifndef ATARI_H -#define ATARI_H - -#pragma warn -stu - -/* PureC doesn't like 32bit enumerations */ - -#ifndef FT_IMAGE_TAG -#define FT_IMAGE_TAG( value, _x1, _x2, _x3, _x4 ) value -#endif /* FT_IMAGE_TAG */ - -#ifndef FT_ENC_TAG -#define FT_ENC_TAG( value, a, b, c, d ) value -#endif /* FT_ENC_TAG */ - -#endif /* ATARI_H */ diff --git a/vendor/freetype/builds/atari/FNames.SIC b/vendor/freetype/builds/atari/FNames.SIC deleted file mode 100644 index f3657179d91..00000000000 --- a/vendor/freetype/builds/atari/FNames.SIC +++ /dev/null @@ -1,37 +0,0 @@ -/* the following changes file names for PureC projects */ - -if (argc > 0) -{ - ordner = argv[0]; - if (basename(ordner) == "") /* ist Ordner */ - { - ChangeFilenames(ordner); - } -} - -proc ChangeFilenames(folder) -local i,entries,directory,file; -{ - entries = filelist(directory,folder); - for (i = 0; i < entries; ++i) - { - file = directory[i,0]; - if ((directory[i,3]&16) > 0) /* subdirectory */ - { - ChangeFilenames(folder+file+"\\"); - } - else - { - if ((stricmp(suffix(file),".h")==0)|(stricmp(suffix(file),".c")==0)) - ChangeFilename(folder,file); - } - } -} - -proc ChangeFilename(path,datei) -local newfile,err; -{ - newfile=datei; - newfile[0]=(newfile[0] | 32) ^ 32; - err=files.rename("-q",path+datei,newfile); -} diff --git a/vendor/freetype/builds/atari/FREETYPE.PRJ b/vendor/freetype/builds/atari/FREETYPE.PRJ deleted file mode 100644 index 4776a5bc690..00000000000 --- a/vendor/freetype/builds/atari/FREETYPE.PRJ +++ /dev/null @@ -1,32 +0,0 @@ -;FreeType project file - -FREETYPE.LIB - -.C [-K -P -R -A] -.L [-J -V] -.S - -= - -..\..\src\base\ftsystem.c -..\..\src\base\ftdebug.c - -..\..\src\base\ftinit.c -..\..\src\base\ftglyph.c -..\..\src\base\ftmm -..\..\src\base\ftbbox - -..\..\src\base\ftbase.c -..\..\src\autohint\autohint.c -;..\..\src\cache\ftcache.c -..\..\src\cff\cff.c -..\..\src\cid\type1cid.c -..\..\src\psaux\psaux.c -..\..\src\pshinter\pshinter.c -..\..\src\psnames\psnames.c -..\..\src\raster\raster.c -..\..\src\sfnt\sfnt.c -..\..\src\smooth\smooth.c -..\..\src\truetype\truetype.c -..\..\src\type1\type1.c -..\..\src\type42\type42.c diff --git a/vendor/freetype/builds/atari/README.TXT b/vendor/freetype/builds/atari/README.TXT deleted file mode 100644 index 1300817b261..00000000000 --- a/vendor/freetype/builds/atari/README.TXT +++ /dev/null @@ -1,51 +0,0 @@ -Compiling FreeType 2 with PureC compiler -======================================== - -[See below for a German version.] - -To compile FreeType 2 as a library the following changes must be applied: - -- All *.c files must start with an uppercase letter. - (In case GEMSCRIPT is available: - Simply drag the whole FreeType 2 directory to the file `FNames.SIC'.) - -- You have to change the INCLUDE directory in PureC's compiler options - to contain both the `INCLUDE' and `freetype2\include' directory. - Example: - - INCLUDE;E:\freetype2\include - -- The file `freetype/include/Ft2build.h' must be patched as follows to - include ATARI.H: - - #ifndef FT2_BUILD_GENERIC_H_ - #define FT2_BUILD_GENERIC_H_ - - #include "ATARI.H" - - - -Compilieren von FreeType 2 mit PureC -==================================== - -Um FreeType 2 als eine Bibliothek (library) zu compilieren, muss folgendes -ge„ndert werden: - -- Alle *.c-files mssen mit einem GROSSBUCHSTABEN beginnen. - (Falls GEMSCRIPT zur Verfgung steht: - Den kompletten Ordner freetype2 auf die Datei `FNames.SIC' draggen.) - -- In den Compiler-Optionen von PureC muss das INCLUDE directory auf INCLUDE - und freetype2\include verweisen. Z.B.: - - INCLUDE;E:\freetype2\include - -- In der Datei freetype/include/Ft2build.h muss zu Beginn - ein #include "ATARI.H" wie folgt eingefgt werden: - - #ifndef FT2_BUILD_GENERIC_H_ - #define FT2_BUILD_GENERIC_H_ - - #include "ATARI.H" - ---- end of README.TXT --- diff --git a/vendor/freetype/builds/atari/deflinejoiner.awk b/vendor/freetype/builds/atari/deflinejoiner.awk deleted file mode 100644 index 16d9e6dd933..00000000000 --- a/vendor/freetype/builds/atari/deflinejoiner.awk +++ /dev/null @@ -1,181 +0,0 @@ -#!/usr/bin/env awk - - -function shift( array, \ - junk, elm0, l ) -{ - elm0 = array[0] - for ( l = 0; l < asorti( array, junk ) - 1; l++ ) - array[l] = array[l+1]; - delete array[l] - return elm0 -} - - -function init_cpp_src_line() -{ - logical_line = "" - delete break_pos -} - - -function shift_valid_bp( array, \ - junk, elm ) -{ - elm = -1 - - if ( 0 < asorti( array, junk ) ) - do { - elm = shift( array ) - } while ( 0 > elm ); - - return elm -} - - -function check_cpp_src_line_break_pos( \ - i, junk ) -{ - printf( "break_pos:" ) - for ( i = 0; i < asorti( break_pos, junk ); i++ ) - printf( " %d", break_pos[i] ); - printf( "\n" ) -} - - -function check_cpp_src_line() -{ - printf( "logical_line[%s]\n", logical_line ) - check_cpp_src_line_break_pos() -} - - -function append_line( phys_line, \ - filt_line, bp_len ) -{ - filt_line = phys_line - sub( /\\$/, " ", filt_line ) - logical_line = logical_line filt_line - bp_len = asorti( break_pos, junk ) - break_pos[bp_len] = length( logical_line ) - 1 -} - - -function print_line( \ - c0, c1, i, junk, part_str ) -{ - c0 = 0 - - while( asorti( break_pos, junk ) > 1 ) - { - if ( ( c1 = shift_valid_bp( break_pos ) ) < 1 ) - { - part_str = substr( logical_line, c0 + 1 ) - printf( "%s\n", part_str ) - return - } - - part_str = substr( logical_line, c0 + 1, c1 - c0 + 1 ) - gsub( / $/, "\\", part_str ) - printf( "%s\n", part_str ) - c0 = c1 + 1 - } - - part_str = substr( logical_line, c0 + 1 ) - printf( "%s\n", part_str ) -} - - -function shrink_spaces( pos, \ - tail, removed_length, k ) -{ - tail = substr( logical_line, pos ) - sub( /^[ \t]+/, " ", tail ) - removed_length = length( logical_line ) - pos - length( tail ) + 1 - logical_line = substr( logical_line, 0, pos - 1 ) tail - - - for ( k = 0; k < asorti( break_pos, junk ); k++ ) - if ( ( pos + removed_length ) <= break_pos[k] ) - break_pos[k] = break_pos[k] - removed_length; - else if ( pos <= break_pos[k] ) - break_pos[k] = -1; - - return removed_length -} - - -function shrink_spaces_to_linebreak( pos, \ - junk, part_str, removed_length, i ) -{ - for ( i = 0; i < asorti( break_pos, junk ) && break_pos[i] < pos ; i++ ) - ; - - if ( break_pos[i] < 1 ) - return; - - part_str = substr( logical_line, pos, break_pos[i] - pos + 1 ) - sub( /^[ \t]+/, " ", part_str ) - removed_length = ( break_pos[i] - pos + 1 ) - length( part_str ) - - tail = substr( logical_line, pos + removed_length ) - logical_line = substr( logical_line, 0, pos - 1 ) tail - - for ( ; i < asorti( break_pos, junk ); i++ ) - break_pos[i] -= removed_length; - - return removed_length -} - - -function delete_linebreaks_in_2nd_token( \ - tail, paren_depth, junk, i, j, k, l ) -{ - if ( logical_line ~ /^[ \t]*#[ \t]*define[ \t]+[0-9A-Za-z_]+\(/ ) - { - tail = logical_line - sub( /^[ \t]*#[ \t]*define[ \t]+[0-9A-Za-z_]+/, "", tail ) - - paren_depth = 0 - l = 0 - i = length( logical_line ) - length( tail ) + 1 # seek to the 1st op paren - j = i - do { - if ( substr( logical_line, j, 2 ) ~ /[ \t][ \t]/ ) - l = shrink_spaces( j ); - else if ( substr( logical_line, j, 1 ) == "(" ) - paren_depth += 1; - else if ( substr( logical_line, j, 1 ) == ")" ) - paren_depth -= 1; - j += 1 - } while ( j < length( logical_line ) && paren_depth != 0 ) - - for ( k = 0; k < asorti( break_pos, junk ); k++ ) - if ( i <= break_pos[k] && break_pos[k] < j ) - break_pos[k] = -1; - - if ( l > 0 ) - shrink_spaces_to_linebreak( j ); - } -} - - -BEGIN{ - init_cpp_src_line() -} -{ - append_line( $0 ) - if ( $0 !~ /\\$/ ) - { - delete_linebreaks_in_2nd_token() - print_line() - init_cpp_src_line() - } -} -END{ - if ( 0 < length( logical_line ) ) - { - delete_linebreaks_in_2nd_token() - print_line() - } -} diff --git a/vendor/freetype/builds/atari/gen-purec-patch.sh b/vendor/freetype/builds/atari/gen-purec-patch.sh deleted file mode 100644 index 1ec050c11fa..00000000000 --- a/vendor/freetype/builds/atari/gen-purec-patch.sh +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/sh - -TOP_DIR=. -OBJ_DIR=. - -for x in "$@" -do - case x"$x" in - x--srcdir=* | x--topdir=* ) - TOP_DIR=`echo $x | sed 's/^--[a-z]*dir=//'` - ;; - x--builddir=* | x--objdir=* ) - OBJ_DIR=`echo $x | sed 's/^--[a-z]*dir=//'` - ;; - esac -done - -mkdir -p ${OBJ_DIR}/builds/atari/tmp/orig - -( cd ${TOP_DIR} && find . -name '*.[CHch]' -type f | fgrep -v builds/atari/tmp | cpio -o ) | \ -( cd ${OBJ_DIR}/builds/atari/tmp/orig && cpio -idum ) -cp ${TOP_DIR}/builds/atari/deflinejoiner.awk ${OBJ_DIR}/builds/atari/tmp - -pushd ${OBJ_DIR}/builds/atari/tmp - - cp -pr orig purec - for f in `cd orig && find . -type f` - do - echo filter $f - env LANG=C awk -f deflinejoiner.awk < orig/$f > purec/$f - done - - echo '#define FT2_BUILD_LIBRARY' > purec/include/ft2build.h - echo '#include "ATARI.H"' >> purec/include/ft2build.h - env LANG=C awk -f deflinejoiner.awk < orig/include/ft2build.h >> purec/include/ft2build.h - - env LANG=C diff -ur orig purec > ../purec.diff - -popd -rm -rf ${OBJ_DIR}/builds/atari/tmp diff --git a/vendor/freetype/builds/beos/beos-def.mk b/vendor/freetype/builds/beos/beos-def.mk deleted file mode 100644 index fc52daab993..00000000000 --- a/vendor/freetype/builds/beos/beos-def.mk +++ /dev/null @@ -1,79 +0,0 @@ -# -# FreeType 2 configuration rules for a BeOS system -# -# this is similar to the "ansi-def.mk" file, except for BUILD and PLATFORM -# - - -# Copyright (C) 1996-2025 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -DELETE := rm -f -CAT := cat -SEP := / -PLATFORM_DIR := $(TOP_DIR)/builds/beos -PLATFORM := beos - -# This is used for `make refdoc' and `make refdoc-venv' -# -BIN := bin - -# The directory where all library files are placed. -# -# By default, this is the same as $(OBJ_DIR); however, this can be changed -# to suit particular needs. -# -LIB_DIR := $(OBJ_DIR) - - -# The name of the final library file. Note that the DOS-specific Makefile -# uses a shorter (8.3) name. -# -LIBRARY := lib$(PROJECT) - - -# Path inclusion flag. Some compilers use a different flag than `-I' to -# specify an additional include path. Examples are `/i=' or `-J'. -# -I := -I - - -# C flag used to define a macro before the compilation of a given source -# object. Usually it is `-D' like in `-DDEBUG'. -# -D := -D - - -# The link flag used to specify a given library file on link. Note that -# this is only used to compile the demo programs, not the library itself. -# -L := -l - - -# Target flag. -# -T := -o$(space) - - -# C flags -# -# These should concern: debug output, optimization & warnings. -# -# Use the ANSIFLAGS variable to define the compiler flags used to enforce -# ANSI compliance. -# -CFLAGS ?= -c - -# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. -# -ANSIFLAGS ?= - - -# EOF diff --git a/vendor/freetype/builds/beos/beos.mk b/vendor/freetype/builds/beos/beos.mk deleted file mode 100644 index 9c2be171185..00000000000 --- a/vendor/freetype/builds/beos/beos.mk +++ /dev/null @@ -1,19 +0,0 @@ -# -# FreeType 2 configuration rules for a BeOS system -# - -# Copyright (C) 1996-2025 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - -include $(TOP_DIR)/builds/beos/beos-def.mk -include $(TOP_DIR)/builds/compiler/ansi-cc.mk -include $(TOP_DIR)/builds/link_std.mk - - -# EOF diff --git a/vendor/freetype/builds/beos/detect.mk b/vendor/freetype/builds/beos/detect.mk deleted file mode 100644 index d0a626d8012..00000000000 --- a/vendor/freetype/builds/beos/detect.mk +++ /dev/null @@ -1,41 +0,0 @@ -# -# FreeType 2 configuration file to detect an BeOS host platform. -# - - -# Copyright (C) 1996-2025 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -.PHONY: setup - - -ifeq ($(PLATFORM),ansi) - - ifdef BE_HOST_CPU - - PLATFORM := beos - - endif # test MACHTYPE beos -endif - -ifeq ($(PLATFORM),beos) - - DELETE := rm -f - CAT := cat - SEP := / - PLATFORM_DIR := $(TOP_DIR)/builds/beos - CONFIG_FILE := beos.mk - - setup: std_setup - -endif # test PLATFORM beos - - -# EOF diff --git a/vendor/freetype/builds/cmake/FindBrotliDec.cmake b/vendor/freetype/builds/cmake/FindBrotliDec.cmake deleted file mode 100644 index 68997a34bbb..00000000000 --- a/vendor/freetype/builds/cmake/FindBrotliDec.cmake +++ /dev/null @@ -1,52 +0,0 @@ -# FindBrotliDec.cmake -# -# Copyright (C) 2019-2025 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# Written by Werner Lemberg -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. -# -# -# Try to find libbrotlidec include and library directories. -# -# If found, the following variables are set. -# -# BROTLIDEC_INCLUDE_DIRS -# BROTLIDEC_LIBRARIES - -find_package(PkgConfig QUIET) - -pkg_check_modules(PC_BROTLIDEC QUIET libbrotlidec) - -if (PC_BROTLIDEC_VERSION) - set(BROTLIDEC_VERSION "${PC_BROTLIDEC_VERSION}") -endif () - - -find_path(BROTLIDEC_INCLUDE_DIRS - NAMES brotli/decode.h - HINTS ${PC_BROTLIDEC_INCLUDEDIR} - ${PC_BROTLIDEC_INCLUDE_DIRS} - PATH_SUFFIXES brotli) - -find_library(BROTLIDEC_LIBRARIES - NAMES brotlidec - HINTS ${PC_BROTLIDEC_LIBDIR} - ${PC_BROTLIDEC_LIBRARY_DIRS}) - - -include(FindPackageHandleStandardArgs) -find_package_handle_standard_args( - BrotliDec - REQUIRED_VARS BROTLIDEC_INCLUDE_DIRS BROTLIDEC_LIBRARIES - FOUND_VAR BROTLIDEC_FOUND - VERSION_VAR BROTLIDEC_VERSION) - -mark_as_advanced( - BROTLIDEC_INCLUDE_DIRS - BROTLIDEC_LIBRARIES) diff --git a/vendor/freetype/builds/cmake/FindHarfBuzz.cmake b/vendor/freetype/builds/cmake/FindHarfBuzz.cmake deleted file mode 100644 index 0f0e33a1a1f..00000000000 --- a/vendor/freetype/builds/cmake/FindHarfBuzz.cmake +++ /dev/null @@ -1,203 +0,0 @@ -# Copyright (c) 2012, Intel Corporation -# Copyright (c) 2019 Sony Interactive Entertainment Inc. -# -# 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 - containing the HarfBuzz headers -# HarfBuzz_LIBRARIES - containing the HarfBuzz library - -#[=======================================================================[.rst: -FindHarfBuzz --------------- - -Find HarfBuzz headers and libraries. - -Imported Targets -^^^^^^^^^^^^^^^^ - -``HarfBuzz::HarfBuzz`` - The HarfBuzz library, if found. - -``HarfBuzz::ICU`` - The HarfBuzz ICU library, if found. - -Result Variables -^^^^^^^^^^^^^^^^ - -This will define the following variables in your project: - -``HarfBuzz_FOUND`` - true if (the requested version of) HarfBuzz is available. -``HarfBuzz_VERSION`` - the version of HarfBuzz. -``HarfBuzz_LIBRARIES`` - the libraries to link against to use HarfBuzz. -``HarfBuzz_INCLUDE_DIRS`` - where to find the HarfBuzz headers. -``HarfBuzz_COMPILE_OPTIONS`` - this should be passed to target_compile_options(), if the - target is not used for linking - -#]=======================================================================] - -find_package(PkgConfig QUIET) -pkg_check_modules(PC_HARFBUZZ QUIET harfbuzz) -set(HarfBuzz_COMPILE_OPTIONS ${PC_HARFBUZZ_CFLAGS_OTHER}) -set(HarfBuzz_VERSION ${PC_HARFBUZZ_CFLAGS_VERSION}) - -find_path(HarfBuzz_INCLUDE_DIR - NAMES hb.h - HINTS ${PC_HARFBUZZ_INCLUDEDIR} ${PC_HARFBUZZ_INCLUDE_DIRS} - PATH_SUFFIXES harfbuzz -) - -find_library(HarfBuzz_LIBRARY - NAMES ${HarfBuzz_NAMES} harfbuzz - HINTS ${PC_HARFBUZZ_LIBDIR} ${PC_HARFBUZZ_LIBRARY_DIRS} -) - -if (HarfBuzz_INCLUDE_DIR AND NOT HarfBuzz_VERSION) - if (EXISTS "${HarfBuzz_INCLUDE_DIR}/hb-version.h") - file(READ "${HarfBuzz_INCLUDE_DIR}/hb-version.h" _harfbuzz_version_content) - - string(REGEX MATCH "#define +HB_VERSION_STRING +\"([0-9]+\\.[0-9]+\\.[0-9]+)\"" _dummy "${_harfbuzz_version_content}") - set(HarfBuzz_VERSION "${CMAKE_MATCH_1}") - endif () -endif () - -if ("${HarfBuzz_FIND_VERSION}" VERSION_GREATER "${HarfBuzz_VERSION}") - if (HarfBuzz_FIND_REQUIRED) - message(FATAL_ERROR - "Required version (" ${HarfBuzz_FIND_VERSION} ")" - " is higher than found version (" ${HarfBuzz_VERSION} ")") - else () - message(WARNING - "Required version (" ${HarfBuzz_FIND_VERSION} ")" - " is higher than found version (" ${HarfBuzz_VERSION} ")") - unset(HarfBuzz_VERSION) - unset(HarfBuzz_INCLUDE_DIRS) - unset(HarfBuzz_LIBRARIES) - return () - endif () -endif () - -# Find components -if (HarfBuzz_INCLUDE_DIR AND HarfBuzz_LIBRARY) - set(_HarfBuzz_REQUIRED_LIBS_FOUND ON) - set(HarfBuzz_LIBS_FOUND "HarfBuzz (required): ${HarfBuzz_LIBRARY}") -else () - set(_HarfBuzz_REQUIRED_LIBS_FOUND OFF) - set(HarfBuzz_LIBS_NOT_FOUND "HarfBuzz (required)") -endif () - -if (NOT CMAKE_VERSION VERSION_LESS 3.3) - if ("ICU" IN_LIST HarfBuzz_FIND_COMPONENTS) - pkg_check_modules(PC_HARFBUZZ_ICU QUIET harfbuzz-icu) - set(HarfBuzz_ICU_COMPILE_OPTIONS ${PC_HARFBUZZ_ICU_CFLAGS_OTHER}) - - find_path(HarfBuzz_ICU_INCLUDE_DIR - NAMES hb-icu.h - HINTS ${PC_HARFBUZZ_ICU_INCLUDEDIR} ${PC_HARFBUZZ_ICU_INCLUDE_DIRS} - PATH_SUFFIXES harfbuzz - ) - - find_library(HarfBuzz_ICU_LIBRARY - NAMES ${HarfBuzz_ICU_NAMES} harfbuzz-icu - HINTS ${PC_HARFBUZZ_ICU_LIBDIR} ${PC_HARFBUZZ_ICU_LIBRARY_DIRS} - ) - - if (HarfBuzz_ICU_LIBRARY) - if (HarfBuzz_FIND_REQUIRED_ICU) - list(APPEND HarfBuzz_LIBS_FOUND "ICU (required): ${HarfBuzz_ICU_LIBRARY}") - else () - list(APPEND HarfBuzz_LIBS_FOUND "ICU (optional): ${HarfBuzz_ICU_LIBRARY}") - endif () - else () - if (HarfBuzz_FIND_REQUIRED_ICU) - set(_HarfBuzz_REQUIRED_LIBS_FOUND OFF) - list(APPEND HarfBuzz_LIBS_NOT_FOUND "ICU (required)") - else () - list(APPEND HarfBuzz_LIBS_NOT_FOUND "ICU (optional)") - endif () - endif () - endif () -endif () - -if (NOT HarfBuzz_FIND_QUIETLY) - if (HarfBuzz_LIBS_FOUND) - message(STATUS "Found the following HarfBuzz libraries:") - foreach (found ${HarfBuzz_LIBS_FOUND}) - message(STATUS " ${found}") - endforeach () - endif () - if (HarfBuzz_LIBS_NOT_FOUND) - message(STATUS "The following HarfBuzz libraries were not found:") - foreach (found ${HarfBuzz_LIBS_NOT_FOUND}) - message(STATUS " ${found}") - endforeach () - endif () -endif () - -include(FindPackageHandleStandardArgs) -find_package_handle_standard_args(HarfBuzz - FOUND_VAR HarfBuzz_FOUND - REQUIRED_VARS HarfBuzz_INCLUDE_DIR HarfBuzz_LIBRARY _HarfBuzz_REQUIRED_LIBS_FOUND - VERSION_VAR HarfBuzz_VERSION -) - -if (NOT CMAKE_VERSION VERSION_LESS 3.1) - if (HarfBuzz_LIBRARY AND NOT TARGET HarfBuzz::HarfBuzz) - add_library(HarfBuzz::HarfBuzz UNKNOWN IMPORTED GLOBAL) - set_target_properties(HarfBuzz::HarfBuzz PROPERTIES - IMPORTED_LOCATION "${HarfBuzz_LIBRARY}" - INTERFACE_COMPILE_OPTIONS "${HarfBuzz_COMPILE_OPTIONS}" - INTERFACE_INCLUDE_DIRECTORIES "${HarfBuzz_INCLUDE_DIR}" - ) - endif () - - if (HarfBuzz_ICU_LIBRARY AND NOT TARGET HarfBuzz::ICU) - add_library(HarfBuzz::ICU UNKNOWN IMPORTED GLOBAL) - set_target_properties(HarfBuzz::ICU PROPERTIES - IMPORTED_LOCATION "${HarfBuzz_ICU_LIBRARY}" - INTERFACE_COMPILE_OPTIONS "${HarfBuzz_ICU_COMPILE_OPTIONS}" - INTERFACE_INCLUDE_DIRECTORIES "${HarfBuzz_ICU_INCLUDE_DIR}" - ) - endif () -endif () - -mark_as_advanced( - HarfBuzz_INCLUDE_DIR - HarfBuzz_ICU_INCLUDE_DIR - HarfBuzz_LIBRARY - HarfBuzz_ICU_LIBRARY -) - -if (HarfBuzz_FOUND) - set(HarfBuzz_LIBRARIES ${HarfBuzz_LIBRARY} ${HarfBuzz_ICU_LIBRARY}) - set(HarfBuzz_INCLUDE_DIRS ${HarfBuzz_INCLUDE_DIR} ${HarfBuzz_ICU_INCLUDE_DIR}) -endif () diff --git a/vendor/freetype/builds/cmake/iOS.cmake b/vendor/freetype/builds/cmake/iOS.cmake deleted file mode 100644 index d33a1e45901..00000000000 --- a/vendor/freetype/builds/cmake/iOS.cmake +++ /dev/null @@ -1,270 +0,0 @@ -# iOS.cmake -# -# Copyright (C) 2014-2025 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# Written by David Wimsey -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. -# -# -# This file is derived from the files `Platform/Darwin.cmake' and -# `Platform/UnixPaths.cmake', which are part of CMake 2.8.4. It has been -# altered for iOS development. - - -# Options -# ------- -# -# IOS_PLATFORM = OS | SIMULATOR -# -# This decides whether SDKS are selected from the `iPhoneOS.platform' or -# `iPhoneSimulator.platform' folders. -# -# OS - the default, used to build for iPhone and iPad physical devices, -# which have an ARM architecture. -# SIMULATOR - used to build for the Simulator platforms, which have an -# x86 architecture. -# -# CMAKE_IOS_DEVELOPER_ROOT = /path/to/platform/Developer folder -# -# By default, this location is automatically chosen based on the -# IOS_PLATFORM value above. If you manually set this variable, it -# overrides the default location and forces the use of a particular -# Developer Platform. -# -# CMAKE_IOS_SDK_ROOT = /path/to/platform/Developer/SDKs/SDK folder -# -# By default, this location is automatically chosen based on the -# CMAKE_IOS_DEVELOPER_ROOT value. In this case it is always the most -# up-to-date SDK found in the CMAKE_IOS_DEVELOPER_ROOT path. If you -# manually set this variable, it forces the use of a specific SDK -# version. -# -# -# Macros -# ------ -# -# set_xcode_property (TARGET XCODE_PROPERTY XCODE_VALUE) -# -# A convenience macro for setting Xcode specific properties on targets. -# -# Example: -# -# set_xcode_property(myioslib IPHONEOS_DEPLOYMENT_TARGET "3.1") -# -# find_host_package (PROGRAM ARGS) -# -# A macro to find executable programs on the host system, not within the -# iOS environment. Thanks to the `android-cmake' project for providing -# the command. - - -# standard settings -set(CMAKE_SYSTEM_NAME Darwin) -set(CMAKE_SYSTEM_VERSION 1) -set(UNIX True) -set(APPLE True) -set(IOS True) - -# required as of cmake 2.8.10 -set(CMAKE_OSX_DEPLOYMENT_TARGET "" - CACHE STRING "Force unset of the deployment target for iOS" FORCE -) - -# determine the cmake host system version so we know where to find the iOS -# SDKs -find_program(CMAKE_UNAME uname /bin /usr/bin /usr/local/bin) -if (CMAKE_UNAME) - exec_program(uname ARGS -r OUTPUT_VARIABLE CMAKE_HOST_SYSTEM_VERSION) - string(REGEX REPLACE "^([0-9]+)\\.([0-9]+).*$" "\\1" - DARWIN_MAJOR_VERSION "${CMAKE_HOST_SYSTEM_VERSION}") -endif (CMAKE_UNAME) - -# skip the platform compiler checks for cross compiling -set(CMAKE_CXX_COMPILER_WORKS TRUE) -set(CMAKE_C_COMPILER_WORKS TRUE) - -# all iOS/Darwin specific settings - some may be redundant -set(CMAKE_SHARED_LIBRARY_PREFIX "lib") -set(CMAKE_SHARED_LIBRARY_SUFFIX ".dylib") -set(CMAKE_SHARED_MODULE_PREFIX "lib") -set(CMAKE_SHARED_MODULE_SUFFIX ".so") -set(CMAKE_MODULE_EXISTS 1) -set(CMAKE_DL_LIBS "") - -set(CMAKE_C_OSX_COMPATIBILITY_VERSION_FLAG - "-compatibility_version ") -set(CMAKE_C_OSX_CURRENT_VERSION_FLAG - "-current_version ") -set(CMAKE_CXX_OSX_COMPATIBILITY_VERSION_FLAG - "${CMAKE_C_OSX_COMPATIBILITY_VERSION_FLAG}") -set(CMAKE_CXX_OSX_CURRENT_VERSION_FLAG - "${CMAKE_C_OSX_CURRENT_VERSION_FLAG}") - -# hidden visibility is required for cxx on iOS -set(CMAKE_C_FLAGS_INIT "") -set(CMAKE_CXX_FLAGS_INIT - "-headerpad_max_install_names -fvisibility=hidden -fvisibility-inlines-hidden") - -set(CMAKE_C_LINK_FLAGS - "-Wl,-search_paths_first ${CMAKE_C_LINK_FLAGS}") -set(CMAKE_CXX_LINK_FLAGS - "-Wl,-search_paths_first ${CMAKE_CXX_LINK_FLAGS}") - -set(CMAKE_PLATFORM_HAS_INSTALLNAME 1) -set(CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS - "-dynamiclib -headerpad_max_install_names") -set(CMAKE_SHARED_MODULE_CREATE_C_FLAGS - "-bundle -headerpad_max_install_names") -set(CMAKE_SHARED_MODULE_LOADER_C_FLAG - "-Wl,-bundle_loader,") -set(CMAKE_SHARED_MODULE_LOADER_CXX_FLAG - "-Wl,-bundle_loader,") -set(CMAKE_FIND_LIBRARY_SUFFIXES - ".dylib" ".so" ".a") - -# hack: If a new cmake (which uses CMAKE_INSTALL_NAME_TOOL) runs on an old -# build tree (where `install_name_tool' was hardcoded), and where -# CMAKE_INSTALL_NAME_TOOL isn't in the cache and still cmake didn't -# fail in `CMakeFindBinUtils.cmake' (because it isn't rerun), hardcode -# CMAKE_INSTALL_NAME_TOOL here to `install_name_tool' so it behaves as -# it did before. -if (NOT DEFINED CMAKE_INSTALL_NAME_TOOL) - find_program(CMAKE_INSTALL_NAME_TOOL install_name_tool) -endif (NOT DEFINED CMAKE_INSTALL_NAME_TOOL) - -# set up iOS platform unless specified manually with IOS_PLATFORM -if (NOT DEFINED IOS_PLATFORM) - set(IOS_PLATFORM "OS") -endif (NOT DEFINED IOS_PLATFORM) - -set(IOS_PLATFORM ${IOS_PLATFORM} CACHE STRING "Type of iOS Platform") - -# check the platform selection and setup for developer root -if (${IOS_PLATFORM} STREQUAL "OS") - set(IOS_PLATFORM_LOCATION "iPhoneOS.platform") - - # this causes the installers to properly locate the output libraries - set(CMAKE_XCODE_EFFECTIVE_PLATFORMS "-iphoneos") - -elseif (${IOS_PLATFORM} STREQUAL "SIMULATOR") - set(IOS_PLATFORM_LOCATION "iPhoneSimulator.platform") - - # this causes the installers to properly locate the output libraries - set(CMAKE_XCODE_EFFECTIVE_PLATFORMS "-iphonesimulator") - -else (${IOS_PLATFORM} STREQUAL "OS") - message(FATAL_ERROR - "Unsupported IOS_PLATFORM value selected. Please choose OS or SIMULATOR.") - -endif (${IOS_PLATFORM} STREQUAL "OS") - -# set up iOS developer location unless specified manually with -# CMAKE_IOS_DEVELOPER_ROOT -- -# note that Xcode 4.3 changed the installation location; choose the most -# recent one available -set(XCODE_POST_43_ROOT - "/Applications/Xcode.app/Contents/Developer/Platforms/${IOS_PLATFORM_LOCATION}/Developer") -set(XCODE_PRE_43_ROOT - "/Developer/Platforms/${IOS_PLATFORM_LOCATION}/Developer") - -if (NOT DEFINED CMAKE_IOS_DEVELOPER_ROOT) - if (EXISTS ${XCODE_POST_43_ROOT}) - set(CMAKE_IOS_DEVELOPER_ROOT ${XCODE_POST_43_ROOT}) - elseif (EXISTS ${XCODE_PRE_43_ROOT}) - set(CMAKE_IOS_DEVELOPER_ROOT ${XCODE_PRE_43_ROOT}) - endif (EXISTS ${XCODE_POST_43_ROOT}) -endif (NOT DEFINED CMAKE_IOS_DEVELOPER_ROOT) - -set(CMAKE_IOS_DEVELOPER_ROOT ${CMAKE_IOS_DEVELOPER_ROOT} - CACHE PATH "Location of iOS Platform" -) - -# find and use the most recent iOS SDK unless specified manually with -# CMAKE_IOS_SDK_ROOT -if (NOT DEFINED CMAKE_IOS_SDK_ROOT) - file(GLOB _CMAKE_IOS_SDKS "${CMAKE_IOS_DEVELOPER_ROOT}/SDKs/*") - if (_CMAKE_IOS_SDKS) - list(SORT _CMAKE_IOS_SDKS) - list(REVERSE _CMAKE_IOS_SDKS) - list(GET _CMAKE_IOS_SDKS 0 CMAKE_IOS_SDK_ROOT) - else (_CMAKE_IOS_SDKS) - message(FATAL_ERROR - "No iOS SDK's found in default search path ${CMAKE_IOS_DEVELOPER_ROOT}. Manually set CMAKE_IOS_SDK_ROOT or install the iOS SDK.") - endif (_CMAKE_IOS_SDKS) - - message(STATUS "Toolchain using default iOS SDK: ${CMAKE_IOS_SDK_ROOT}") -endif (NOT DEFINED CMAKE_IOS_SDK_ROOT) - -set(CMAKE_IOS_SDK_ROOT ${CMAKE_IOS_SDK_ROOT} - CACHE PATH "Location of the selected iOS SDK" -) - -# set the sysroot default to the most recent SDK -set(CMAKE_OSX_SYSROOT ${CMAKE_IOS_SDK_ROOT} - CACHE PATH "Sysroot used for iOS support" -) - -# set the architecture for iOS -- -# note that currently both ARCHS_STANDARD_32_BIT and -# ARCHS_UNIVERSAL_IPHONE_OS set armv7 only, so set both manually -if (${IOS_PLATFORM} STREQUAL "OS") - set(IOS_ARCH $(ARCHS_STANDARD_32_64_BIT)) -else (${IOS_PLATFORM} STREQUAL "OS") - set(IOS_ARCH i386) -endif (${IOS_PLATFORM} STREQUAL "OS") - -set(CMAKE_OSX_ARCHITECTURES ${IOS_ARCH} - CACHE string "Build architecture for iOS" -) - -# set the find root to the iOS developer roots and to user defined paths -set(CMAKE_FIND_ROOT_PATH - ${CMAKE_IOS_DEVELOPER_ROOT} - ${CMAKE_IOS_SDK_ROOT} - ${CMAKE_PREFIX_PATH} - CACHE string "iOS find search path root" -) - -# default to searching for frameworks first -set(CMAKE_FIND_FRAMEWORK FIRST) - -# set up the default search directories for frameworks -set(CMAKE_SYSTEM_FRAMEWORK_PATH - ${CMAKE_IOS_SDK_ROOT}/System/Library/Frameworks - ${CMAKE_IOS_SDK_ROOT}/System/Library/PrivateFrameworks - ${CMAKE_IOS_SDK_ROOT}/Developer/Library/Frameworks -) - -# only search the iOS SDKs, not the remainder of the host filesystem -set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY) -set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) -set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) - -# this little macro lets you set any Xcode specific property -macro(set_xcode_property TARGET XCODE_PROPERTY XCODE_VALUE) - set_property(TARGET ${TARGET} - PROPERTY XCODE_ATTRIBUTE_${XCODE_PROPERTY} ${XCODE_VALUE}) -endmacro(set_xcode_property) - -# this macro lets you find executable programs on the host system -macro(find_host_package) - set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) - set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY NEVER) - set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE NEVER) - set(IOS FALSE) - - find_package(${ARGN}) - - set(IOS TRUE) - set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY) - set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) - set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) -endmacro(find_host_package) - -# eof diff --git a/vendor/freetype/builds/cmake/testbuild.sh b/vendor/freetype/builds/cmake/testbuild.sh deleted file mode 100644 index 0eaaef896fb..00000000000 --- a/vendor/freetype/builds/cmake/testbuild.sh +++ /dev/null @@ -1,157 +0,0 @@ -#!/bin/sh -e - -# Copyright (C) 2015-2025 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.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_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/vendor/freetype/builds/compiler/ansi-cc.mk b/vendor/freetype/builds/compiler/ansi-cc.mk deleted file mode 100644 index e9d401a9114..00000000000 --- a/vendor/freetype/builds/compiler/ansi-cc.mk +++ /dev/null @@ -1,80 +0,0 @@ -# -# FreeType 2 generic pseudo ANSI compiler -# - - -# Copyright (C) 1996-2025 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -# Compiler command line name -# -CC := cc -COMPILER_SEP := $(SEP) - - -# The object file extension (for standard and static libraries). This can be -# .o, .tco, .obj, etc., depending on the platform. -# -O := o -SO := o - -# The library file extension (for standard and static libraries). This can -# be .a, .lib, etc., depending on the platform. -# -A := a -SA := a - - -# Path inclusion flag. Some compilers use a different flag than `-I' to -# specify an additional include path. Examples are `/i=' or `-J'. -# -I := -I - - -# C flag used to define a macro before the compilation of a given source -# object. Usually it is `-D' like in `-DDEBUG'. -# -D := -D - - -# The link flag used to specify a given library file on link. Note that -# this is only used to compile the demo programs, not the library itself. -# -L := -l - - -# Target flag. -# -T := -o$(space) - - -# C flags -# -# These should concern: debug output, optimization & warnings. -# -# Use the ANSIFLAGS variable to define the compiler flags used to enforce -# ANSI compliance. -# -CFLAGS ?= -c - -# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. -# -# we assume the compiler is already strictly ANSI -# -ANSIFLAGS ?= - - -# Library linking -# -CLEAN_LIBRARY ?= $(DELETE) $(subst /,$(SEP),$(PROJECT_LIBRARY)) -LINK_LIBRARY = $(AR) -r $@ $(subst /,$(COMPILER_SEP),$(OBJECTS_LIST)) - - -# EOF diff --git a/vendor/freetype/builds/compiler/bcc-dev.mk b/vendor/freetype/builds/compiler/bcc-dev.mk deleted file mode 100644 index 0f9de89bb19..00000000000 --- a/vendor/freetype/builds/compiler/bcc-dev.mk +++ /dev/null @@ -1,86 +0,0 @@ -# -# FreeType 2 Borland C++-specific with NO OPTIMIZATIONS + DEBUGGING -# - - -# Copyright (C) 1996-2025 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -# Compiler command line name -# -CC := bcc32 -COMPILER_SEP := $(SEP) - - -# The object file extension (for standard and static libraries). This can be -# .o, .tco, .obj, etc., depending on the platform. -# -O := obj -SO := obj - -# The library file extension (for standard and static libraries). This can -# be .a, .lib, etc., depending on the platform. -# -A := lib -SA := lib - - -# Path inclusion flag. Some compilers use a different flag than `-I' to -# specify an additional include path. Examples are `/i=' or `-J'. -# -I := -I - - -# C flag used to define a macro before the compilation of a given source -# object. Usually it is `-D' like in `-DDEBUG'. -# -D := -D - - -# The link flag used to specify a given library file on link. Note that -# this is only used to compile the demo programs, not the library itself. -# -L := - - -# Target flag -- no trailing space. -# -T := -o -TE := -e - - -# C flags -# -# These should concern: debug output, optimization & warnings. -# -# Use the ANSIFLAGS variable to define the compiler flags used to enforce -# ANSI compliance. -# -CFLAGS ?= -q -c -y -d -v -Od -w-par -w-ccc -w-rch -w-pro -w-aus - -# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. -# -ANSIFLAGS ?= -A - - -# Library linking -# -CLEAN_LIBRARY ?= $(DELETE) $(subst /,$(SEP),$(PROJECT_LIBRARY)) -LINK_LIBRARY = tlib /u /P128 $(subst /,$(COMPILER_SEP),$@ $(OBJECTS_LIST:%=+%)) - - -# Borland C++ specific temporary files -# -CLEAN += \ - $(subst /,$(SEP),$(TOP_DIR)/apinames.$(O)) \ - $(subst /,$(SEP),$(OBJ_DIR)/apinames.tds) - - -# EOF diff --git a/vendor/freetype/builds/compiler/bcc.mk b/vendor/freetype/builds/compiler/bcc.mk deleted file mode 100644 index 649e8338d20..00000000000 --- a/vendor/freetype/builds/compiler/bcc.mk +++ /dev/null @@ -1,86 +0,0 @@ -# -# FreeType 2 Borland C++-specific rules -# - - -# Copyright (C) 1996-2025 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -# Compiler command line name -# -CC := bcc32 -COMPILER_SEP := $(SEP) - - -# The object file extension (for standard and static libraries). This can be -# .o, .tco, .obj, etc., depending on the platform. -# -O := obj -SO := obj - -# The library file extension (for standard and static libraries). This can -# be .a, .lib, etc., depending on the platform. -# -A := lib -SA := lib - - -# Path inclusion flag. Some compilers use a different flag than `-I' to -# specify an additional include path. Examples are `/i=' or `-J'. -# -I := -I - - -# C flag used to define a macro before the compilation of a given source -# object. Usually it is `-D' like in `-DDEBUG'. -# -D := -D - - -# The link flag used to specify a given library file on link. Note that -# this is only used to compile the demo programs, not the library itself. -# -L := - - -# Target flag -- no trailing space. -# -T := -o -TE := -e - - -# C flags -# -# These should concern: debug output, optimization & warnings. -# -# Use the ANSIFLAGS variable to define the compiler flags used to enforce -# ANSI compliance. -# -CFLAGS ?= -c -q -y -d -v -Od -w-par -w-ccc -w-rch -w-pro -w-aus - -# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. -# -ANSIFLAGS ?= -A - - -# Library linking -# -CLEAN_LIBRARY ?= $(DELETE) $(subst /,$(SEP),$(PROJECT_LIBRARY)) -LINK_LIBRARY = tlib /u /P128 $(subst /,$(COMPILER_SEP),$@ $(OBJECTS_LIST:%=+%)) - - -# Borland C++ specific temporary files -# -CLEAN += \ - $(subst /,$(SEP),$(TOP_DIR)/apinames.$(O)) \ - $(subst /,$(SEP),$(OBJ_DIR)/apinames.tds) - - -# EOF diff --git a/vendor/freetype/builds/compiler/emx.mk b/vendor/freetype/builds/compiler/emx.mk deleted file mode 100644 index a07b3d99b31..00000000000 --- a/vendor/freetype/builds/compiler/emx.mk +++ /dev/null @@ -1,77 +0,0 @@ -# -# FreeType 2 emx-specific definitions -# - - -# Copyright (C) 2003-2025 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -# Compiler command line name -# -CC := set GCCOPT="-ansi -pedantic"; gcc -COMPILER_SEP := / - - -# The object file extension (for standard and static libraries). This can be -# .o, .tco, .obj, etc., depending on the platform. -# -O := o -SO := o - -# The library file extension (for standard and static libraries). This can -# be .a, .lib, etc., depending on the platform. -# -A := a -SA := a - - -# Path inclusion flag. Some compilers use a different flag than `-I' to -# specify an additional include path. Examples are `/i=' or `-J'. -# -I := -I - - -# C flag used to define a macro before the compilation of a given source -# object. Usually it is `-D' like in `-DDEBUG'. -# -D := -D - - -# The link flag used to specify a given library file on link. Note that -# this is only used to compile the demo programs, not the library itself. -# -L := -l - - -# Target flag. -# -T := -o$(space) - -# C flags -# -# These should concern: debug output, optimization & warnings. -# -# Use the ANSIFLAGS variable to define the compiler flags used to enforce -# ANSI compliance. -# -CFLAGS ?= -c -g -O6 -Wall - -# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. -# -ANSIFLAGS ?= - - -# Library linking -# -CLEAN_LIBRARY ?= $(DELETE) $(subst /,$(SEP),$(PROJECT_LIBRARY)) -LINK_LIBRARY = $(foreach m,$(OBJECTS_LIST),$(AR) -r $@ $(m);) echo > nul - - -# EOF diff --git a/vendor/freetype/builds/compiler/gcc-dev.mk b/vendor/freetype/builds/compiler/gcc-dev.mk deleted file mode 100644 index 490de9f46d0..00000000000 --- a/vendor/freetype/builds/compiler/gcc-dev.mk +++ /dev/null @@ -1,97 +0,0 @@ -# -# FreeType 2 gcc-specific with NO OPTIMIZATIONS + DEBUGGING -# - - -# Copyright (C) 1996-2025 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -# Compiler command line name -# -CC := gcc -COMPILER_SEP := / - - -# The object file extension (for standard and static libraries). This can be -# .o, .tco, .obj, etc., depending on the platform. -# -O := o -SO := o - -# The library file extension (for standard and static libraries). This can -# be .a, .lib, etc., depending on the platform. -# -A := a -SA := a - - -# Path inclusion flag. Some compilers use a different flag than `-I' to -# specify an additional include path. Examples are `/i=' or `-J'. -# -I := -I - - -# C flag used to define a macro before the compilation of a given source -# object. Usually it is `-D' like in `-DDEBUG'. -# -D := -D - - -# The link flag used to specify a given library file on link. Note that -# this is only used to compile the demo programs, not the library itself. -# -L := -l - - -# Target flag. -# -T := -o$(space) - - -# C flags -# -# These should concern: debug output, optimization & warnings. -# -# Use the ANSIFLAGS variable to define the compiler flags used to enforce -# ANSI compliance. -# -ifndef CFLAGS - ifeq ($(findstring g++,$(CC)),) - nested_externs := -Wnested-externs - strict_prototypes := -Wstrict-prototypes - endif - - CFLAGS := -c -g -O0 \ - -Wall \ - -W \ - -Wundef \ - -Wshadow \ - -Wpointer-arith \ - -Wwrite-strings \ - -Wredundant-decls \ - -Wno-format-extra-args \ - -Wno-long-long \ - $(nested_externs) \ - $(strict_prototypes) -endif - -# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. -# You can override this on the command line. -# -ANSIFLAGS ?= -std=c99 -pedantic - - -# Library linking -# -CLEAN_LIBRARY ?= $(DELETE) $(subst /,$(SEP),$(PROJECT_LIBRARY)) -LINK_LIBRARY = $(AR) -r $@ $(OBJECTS_LIST) - - -# EOF diff --git a/vendor/freetype/builds/compiler/gcc.mk b/vendor/freetype/builds/compiler/gcc.mk deleted file mode 100644 index 59a011eb5a4..00000000000 --- a/vendor/freetype/builds/compiler/gcc.mk +++ /dev/null @@ -1,77 +0,0 @@ -# -# FreeType 2 gcc-specific definitions -# - - -# Copyright (C) 1996-2025 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -# Compiler command line name -# -CC := gcc -COMPILER_SEP := / - - -# The object file extension (for standard and static libraries). This can be -# .o, .tco, .obj, etc., depending on the platform. -# -O := o -SO := o - -# The library file extension (for standard and static libraries). This can -# be .a, .lib, etc., depending on the platform. -# -A := a -SA := a - - -# Path inclusion flag. Some compilers use a different flag than `-I' to -# specify an additional include path. Examples are `/i=' or `-J'. -# -I := -I - - -# C flag used to define a macro before the compilation of a given source -# object. Usually it is `-D' like in `-DDEBUG'. -# -D := -D - - -# The link flag used to specify a given library file on link. Note that -# this is only used to compile the demo programs, not the library itself. -# -L := -l - - -# Target flag. -# -T := -o$(space) - -# C flags -# -# These should concern: debug output, optimization & warnings. -# -# Use the ANSIFLAGS variable to define the compiler flags used to enforce -# ANSI compliance. -# -CFLAGS ?= -c -g -O3 -Wall - -# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. -# -ANSIFLAGS ?= -std=c99 -pedantic - - -# Library linking -# -CLEAN_LIBRARY ?= $(DELETE) $(subst /,$(SEP),$(PROJECT_LIBRARY)) -LINK_LIBRARY = $(AR) -r $@ $(OBJECTS_LIST) - - -# EOF diff --git a/vendor/freetype/builds/compiler/intelc.mk b/vendor/freetype/builds/compiler/intelc.mk deleted file mode 100644 index 5f22fa7c9a6..00000000000 --- a/vendor/freetype/builds/compiler/intelc.mk +++ /dev/null @@ -1,85 +0,0 @@ -# -# FreeType 2 Intel C/C++ definitions (VC++ compatibility mode) -# - - -# Copyright (C) 1996-2025 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -# compiler command line name -# -CC := icl -COMPILER_SEP := $(SEP) - - -# The object file extension (for standard and static libraries). This can be -# .o, .tco, .obj, etc., depending on the platform. -# -O := obj -SO := obj - - -# The library file extension (for standard and static libraries). This can -# be .a, .lib, etc., depending on the platform. -# -A := lib -SA := lib - - -# Path inclusion flag. Some compilers use a different flag than `-I' to -# specify an additional include path. Examples are `/i=' or `-J'. -# -I := /I - - -# C flag used to define a macro before the compilation of a given source -# object. Usually it is `-D' like in `-DDEBUG'. -# -D := /D - - -# The link flag used to specify a given library file on link. Note that -# this is only used to compile the demo programs, not the library itself. -# -L := /Fl - - -# Target flag. -# -T := /Fo -TE := /Fe - - -# C flags -# -# These should concern: debug output, optimization & warnings. -# -# Use the ANSIFLAGS variable to define the compiler flags used to enforce -# ANSI compliance. -# -# Note that the Intel C/C++ compiler version 4.5 complains about -# the use of FT_FIELD_OFFSET with "value must be arithmetic type"! -# This really looks like a bug in the compiler because the macro -# _does_ compute an arithmetic value, so we disable this warning -# with "/Qwd32". -# -CFLAGS ?= /nologo /c /Ox /G5 /W3 /Qwd32 - -# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. -# -ANSIFLAGS ?= /Qansi_alias /Za - -# Library linking -# -#CLEAN_LIBRARY = -LINK_LIBRARY = lib /nologo /out:$(subst /,$(COMPILER_SEP),$@ $(OBJECTS_LIST)) - - -# EOF diff --git a/vendor/freetype/builds/compiler/unix-lcc.mk b/vendor/freetype/builds/compiler/unix-lcc.mk deleted file mode 100644 index b755c7ea635..00000000000 --- a/vendor/freetype/builds/compiler/unix-lcc.mk +++ /dev/null @@ -1,83 +0,0 @@ -# -# FreeType 2 Unix LCC specific definitions -# - - -# Copyright (C) 1996-2025 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -# Command line name -# -CC := lcc -COMPILER_SEP := $(SEP) - - -# The object file extension (for standard and static libraries). This can be -# .o, .tco, .obj, etc., depending on the platform. -# -O := o -SO := o - - -# The library file extension (for standard and static libraries). This can -# be .a, .lib, etc., depending on the platform. -# -A := a -SA := a - - -# Path inclusion flag. Some compilers use a different flag than `-I' to -# specify an additional include path. Examples are `/i=' or `-J'. -# -I := -I - - -# C flag used to define a macro before the compilation of a given source -# object. Usually it is `-D' like in `-DDEBUG'. -# -D := -D - - -# The link flag used to specify a given library file on link. Note that -# this is only used to compile the demo programs, not the library itself. -# -L := -l - - -# Target flag. -# -T := -o$(space) - - -# C flags -# -# These should concern: debug output, optimization & warnings. -# -# Use the ANSIFLAGS variable to define the compiler flags used to enforce -# ANSI compliance. -# -CFLAGS ?= -c -g - -# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. -# -# LCC is pure ANSI anyway! -# -# the "-A" flag simply increments verbosity about non ANSI code -# -ANSIFLAGS ?= -A - - -# library linking -# -CLEAN_LIBRARY ?= $(DELETE) $(PROJECT_LIBRARY) -LINK_LIBRARY = $(AR) -r $@ $(OBJECTS_LIST) - - -# EOF diff --git a/vendor/freetype/builds/compiler/visualage.mk b/vendor/freetype/builds/compiler/visualage.mk deleted file mode 100644 index 7d0add5fe09..00000000000 --- a/vendor/freetype/builds/compiler/visualage.mk +++ /dev/null @@ -1,76 +0,0 @@ -# -# FreeType 2 Visual Age C++ specific definitions -# - - -# Copyright (C) 1996-2025 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -# command line compiler name -# -CC := icc -COMPILER_SEP := $(SEP) - - -# The object file extension (for standard and static libraries). This can be -# .o, .tco, .obj, etc., depending on the platform. -# -O := obj -SO := obj - - -# The library file extension (for standard and static libraries). This can -# be .a, .lib, etc., depending on the platform. -# -A := lib -SA := lib - - -# Path inclusion flag. Some compilers use a different flag than `-I' to -# specify an additional include path. Examples are `/i=' or `-J'. -# -I := /I - - -# C flag used to define a macro before the compilation of a given source -# object. Usually it is `-D' like in `-DDEBUG'. -# -D := /D - - -# The link flag used to specify a given library file on link. Note that -# this is only used to compile the demo programs, not the library itself. -# -L := /Fl - - -# Target flag. -# -T := /Fo - - -# C flags -# -# These should concern: debug output, optimization & warnings. -# -CFLAGS ?= /Q- /Gd+ /O2 /G5 /W3 /C - -# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. -# -ANSI_FLAGS := /Sa - - -# Library linking -# -#CLEAN_LIBRARY := -LINK_LIBRARY = lib /nologo /out:$(subst /,$(COMPILER_SEP),$@ $(OBJECTS_LIST)) - - -# EOF diff --git a/vendor/freetype/builds/compiler/visualc.mk b/vendor/freetype/builds/compiler/visualc.mk deleted file mode 100644 index 10c021c9a81..00000000000 --- a/vendor/freetype/builds/compiler/visualc.mk +++ /dev/null @@ -1,82 +0,0 @@ -# -# FreeType 2 Visual C++ definitions -# - - -# Copyright (C) 1996-2025 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -# compiler command line name -# -CC := cl -COMPILER_SEP := $(SEP) - - -# The object file extension (for standard and static libraries). This can be -# .o, .tco, .obj, etc., depending on the platform. -# -O := obj -SO := obj - - -# The library file extension (for standard and static libraries). This can -# be .a, .lib, etc., depending on the platform. -# -A := lib -SA := lib - - -# Path inclusion flag. Some compilers use a different flag than `-I' to -# specify an additional include path. Examples are `/i=' or `-J'. -# -I := /I - - -# C flag used to define a macro before the compilation of a given source -# object. Usually it is `-D' like in `-DDEBUG'. -# -D := /D - - -# The link flag used to specify a given library file on link. Note that -# this is only used to compile the demo programs, not the library itself. -# -L := /Fl - - -# Target flag. -# -T := /Fo - -# Target executable flag -# -TE := /Fe - -# C flags -# -# These should concern: debug output, optimization & warnings. -# -# Use the ANSIFLAGS variable to define the compiler flags used to enforce -# ANSI compliance. -# -CFLAGS ?= /nologo /c /Ox /W3 /WX - -# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. -# -ANSIFLAGS ?= /Za /D_CRT_SECURE_NO_DEPRECATE - - -# Library linking -# -#CLEAN_LIBRARY = -LINK_LIBRARY = lib /nologo /out:$(subst /,$(COMPILER_SEP),$@ $(OBJECTS_LIST)) - - -# EOF diff --git a/vendor/freetype/builds/compiler/watcom.mk b/vendor/freetype/builds/compiler/watcom.mk deleted file mode 100644 index 63c34b16902..00000000000 --- a/vendor/freetype/builds/compiler/watcom.mk +++ /dev/null @@ -1,81 +0,0 @@ -# -# FreeType 2 Watcom-specific definitions -# - - -# Copyright (C) 1996-2025 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -# Compiler command line name -# -CC := wcc386 -COMPILER_SEP := $(SEP) - - -# The object file extension (for standard and static libraries). This can be -# .o, .tco, .obj, etc., depending on the platform. -# -O := obj -SO := obj - - -# The library file extension (for standard and static libraries). This can -# be .a, .lib, etc., depending on the platform. -# -A := lib -SA := lib - - -# Path inclusion flag. Some compilers use a different flag than `-I' to -# specify an additional include path. Examples are `/i=' or `-J'. -# -I := -I= - - -# C flag used to define a macro before the compilation of a given source -# object. Usually it is `-D' like in `-DDEBUG'. -# -D := -D - - -# The link flag used to specify a given library file on link. Note that -# this is only used to compile the demo programs, not the library itself. -# -L := -l - - -# Target flag. -# -T := -FO= - - -# C flags -# -# These should concern: debug output, optimization & warnings. -# -# Use the ANSIFLAGS variable to define the compiler flags used to enforce -# ANSI compliance. -# -CFLAGS ?= -zq - -# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. -# -ANSIFLAGS ?= -za - - -# Library linking -# -CLEAN_LIBRARY ?= $(DELETE) $(subst /,$(SEP),$(PROJECT_LIBRARY)) -LINK_LIBRARY = $(subst /,$(COMPILER_SEP), \ - wlib -q -n $@; \ - $(foreach m, $(OBJECTS_LIST), wlib -q $@ +$(m);) \ - echo > nul) - -# EOF diff --git a/vendor/freetype/builds/compiler/win-lcc.mk b/vendor/freetype/builds/compiler/win-lcc.mk deleted file mode 100644 index 102afd9a76e..00000000000 --- a/vendor/freetype/builds/compiler/win-lcc.mk +++ /dev/null @@ -1,81 +0,0 @@ -# -# FreeType 2 Win32-LCC specific definitions -# - - -# Copyright (C) 1996-2025 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -# Command line name -# -CC := lcc -COMPILER_SEP := $(SEP) - - -# The object file extension (for standard and static libraries). This can be -# .o, .tco, .obj, etc., depending on the platform. -# -O := obj -SO := obj - - -# The library file extension (for standard and static libraries). This can -# be .a, .lib, etc., depending on the platform. -# -A := lib -SA := lib - - -# Path inclusion flag. Some compilers use a different flag than `-I' to -# specify an additional include path. Examples are `/i=' or `-J'. -# -I := -I - - -# C flag used to define a macro before the compilation of a given source -# object. Usually it is `-D' like in `-DDEBUG'. -# -D := -D - - -# The link flag used to specify a given library file on link. Note that -# this is only used to compile the demo programs, not the library itself. -# -L := -Fl - - -# Target flag. -# -T := -Fo - - -# C flags -# -# These should concern: debug output, optimization & warnings. -# -# Use the ANSIFLAGS variable to define the compiler flags used to enforce -# ANSI compliance. -# -CFLAGS ?= -c -g2 -O - -# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. -# -# LCC is pure ANSI anyway! -# -ANSIFLAGS ?= - - -# library linking -# -#CLEAN_LIBRARY := -LINK_LIBRARY = lcclib /out:$(subst /,$(COMPILER_SEP),$@ $(OBJECTS_LIST)) - - -# EOF diff --git a/vendor/freetype/builds/detect.mk b/vendor/freetype/builds/detect.mk deleted file mode 100644 index 9db9d6e1dee..00000000000 --- a/vendor/freetype/builds/detect.mk +++ /dev/null @@ -1,128 +0,0 @@ -# -# FreeType 2 host platform detection rules -# - - -# Copyright (C) 1996-2025 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.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 sub-Makefile is in charge of detecting the current platform. It sets -# the following variables: -# -# PLATFORM_DIR The configuration and system-specific directory. Usually -# `builds/$(PLATFORM)' but can be different for custom builds -# of the library. -# -# The following variables must be defined in system specific `detect.mk' -# files: -# -# PLATFORM The detected platform. This will default to `ansi' if -# auto-detection fails. -# CONFIG_FILE The configuration sub-makefile to use. This usually depends -# on the compiler defined in the `CC' environment variable. -# DELETE The shell command used to remove a given file. -# COPY The shell command used to copy one file. -# SEP The platform-specific directory separator. -# COMPILER_SEP The separator used in arguments of the compilation tools. -# CC The compiler to use. -# -# You need to set the following variable(s) before calling it: -# -# TOP_DIR The top-most directory in the FreeType library source -# hierarchy. If not defined, it will default to `.'. - -# Set auto-detection default to `ansi' resp. UNIX-like operating systems. -# -PLATFORM := ansi -DELETE := $(RM) -COPY := cp -CAT := cat -SEP := / - -BUILD_CONFIG := $(TOP_DIR)/builds - -# These two assignments must be delayed. -PLATFORM_DIR = $(BUILD_CONFIG)/$(PLATFORM) -CONFIG_RULES = $(PLATFORM_DIR)/$(CONFIG_FILE) - -# We define the BACKSLASH variable to hold a single back-slash character. -# This is needed because a line like -# -# SEP := \ -# -# does not work with GNU Make (the backslash is interpreted as a line -# continuation). While a line like -# -# SEP := \\ -# -# really defines $(SEP) as `\' on Unix, and `\\' on Dos and Windows! -# -BACKSLASH := $(strip \ ) - -# Find all auto-detectable platforms. -# -PLATFORMS := $(notdir $(subst /detect.mk,,$(wildcard $(BUILD_CONFIG)/*/detect.mk))) -.PHONY: $(PLATFORMS) ansi - -# Filter out platform specified as setup target. -# -PLATFORM := $(firstword $(filter $(MAKECMDGOALS),$(PLATFORMS))) - -# If no setup target platform was specified, enable auto-detection/ -# default platform. -# -ifeq ($(PLATFORM),) - PLATFORM := ansi -endif - -# If the user has explicitly asked for `ansi' on the command line, -# disable auto-detection. -# -ifeq ($(findstring ansi,$(MAKECMDGOALS)),) - # Now, include all detection rule files found in the `builds/' - # directories. Note that the calling order of the various `detect.mk' - # files isn't predictable. - # - include $(wildcard $(BUILD_CONFIG)/*/detect.mk) -endif - -# In case no detection rule file was successful, use the default. -# -ifndef CONFIG_FILE - CONFIG_FILE := ansi.mk - setup: std_setup - .PHONY: setup -endif - -# Flash out and copy rules. -# -.PHONY: std_setup - -std_setup: - $(info ) - $(info $(PROJECT_TITLE) build system -- automatic system detection) - $(info ) - $(info The following settings are used:) - $(info ) - $(info $(empty) platform $(PLATFORM)) - $(info $(empty) compiler $(CC)) - $(info $(empty) configuration directory $(subst /,$(SEP),$(PLATFORM_DIR))) - $(info $(empty) configuration rules $(subst /,$(SEP),$(CONFIG_RULES))) - $(info ) - $(info If this does not correspond to your system or settings please remove the file) - $(info `$(CONFIG_MK)' from this directory then read the INSTALL file for help.) - $(info ) - $(info Otherwise, simply type `$(MAKE)' again to build the library,) - $(info or `$(MAKE) refdoc' to build the API reference (this needs Python >= 3.5).) - $(info ) - @$(COPY) $(subst /,$(SEP),$(CONFIG_RULES) $(CONFIG_MK)) - - -# EOF diff --git a/vendor/freetype/builds/dos/detect.mk b/vendor/freetype/builds/dos/detect.mk deleted file mode 100644 index 0a5b27b7c56..00000000000 --- a/vendor/freetype/builds/dos/detect.mk +++ /dev/null @@ -1,152 +0,0 @@ -# -# FreeType 2 configuration file to detect a DOS host platform. -# - - -# Copyright (C) 1996-2025 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -.PHONY: setup - - -ifeq ($(PLATFORM),ansi) - - # Test for DJGPP by checking the DJGPP environment variable, which must be - # set in order to use the system (ie. it will always be present when the - # `make' utility is run). - # - # We test for the COMSPEC environment variable, then run the `ver' - # command-line program to see if its output contains the word `Dos' or - # `DOS'. - # - # If this is true, we are running a Dos-ish platform (or an emulation). - # - ifdef DJGPP - PLATFORM := dos - else - ifdef COMSPEC - is_dos := $(findstring DOS,$(subst Dos,DOS,$(shell ver))) - - # We try to recognize a Dos session under OS/2. The `ver' command - # returns `Operating System/2 ...' there, so `is_dos' should be empty. - # - # To recognize a Dos session under OS/2, we check COMSPEC for the - # substring `MDOS\COMMAND' - # - ifeq ($(is_dos),) - is_dos := $(findstring MDOS\COMMAND,$(COMSPEC)) - endif - - # We also try to recognize Dos 7.x without Windows 9X launched. - # See builds/windows/detect.mk for explanations about the logic. - # - ifeq ($(is_dos),) - ifdef winbootdir -#ifneq ($(OS),Windows_NT) - # If windows is available, do not trigger this test. - ifndef windir - is_dos := $(findstring Windows,$(strip $(shell ver))) - endif -#endif - endif - endif - - endif # test COMSPEC - - ifneq ($(is_dos),) - - PLATFORM := dos - - endif # test Dos - endif # test DJGPP -endif # test PLATFORM ansi - -ifeq ($(PLATFORM),dos) - - # Use DJGPP (i.e. gcc) by default. - # - CONFIG_FILE := dos-gcc.mk - CC ?= gcc - - # additionally, we provide hooks for various other compilers - # - ifneq ($(findstring emx,$(MAKECMDGOALS)),) # EMX gcc - CONFIG_FILE := dos-emx.mk - CC := gcc - - .PHONY: emx - emx: setup - @cd . - endif - - ifneq ($(findstring turboc,$(MAKECMDGOALS)),) # Turbo C - CONFIG_FILE := dos-tcc.mk - CC := tcc - - .PHONY: turboc - turboc: setup - @cd . - endif - - ifneq ($(findstring watcom,$(MAKECMDGOALS)),) # Watcom C/C++ - CONFIG_FILE := dos-wat.mk - CC := wcc386 - - .PHONY: watcom - watcom: setup - @cd . - endif - - ifneq ($(findstring borlandc,$(MAKECMDGOALS)),) # Borland C/C++ 32-bit - CONFIG_FILE := dos-bcc.mk - CC := bcc32 - - .PHONY: borlandc - borlandc: setup - @cd . - endif - - ifneq ($(findstring borlandc16,$(MAKECMDGOALS)),) # Borland C/C++ 16-bit - CONFIG_FILE := dos-bcc.mk - CC := bcc - - .PHONY: borlandc16 - borlandc16: setup - @cd . - endif - - ifneq ($(findstring bash,$(SHELL)),) # check for bash - SEP := / - DELETE := rm - COPY := cp - CAT := cat - setup: std_setup - else - SEP := $(BACKSLASH) - DELETE := del - CAT := type - - # Setting COPY is a bit trickier. We can be running DJGPP on some - # Windows NT derivatives, like XP. See builds/windows/detect.mk for - # explanations why we need hacking here. - # - ifeq ($(OS),Windows_NT) - COPY := cmd.exe /c copy - else - COPY := copy - endif # test NT - - setup: std_setup - endif - -endif # test PLATFORM dos - - -# EOF diff --git a/vendor/freetype/builds/dos/dos-def.mk b/vendor/freetype/builds/dos/dos-def.mk deleted file mode 100644 index b1619e6f26b..00000000000 --- a/vendor/freetype/builds/dos/dos-def.mk +++ /dev/null @@ -1,48 +0,0 @@ -# -# FreeType 2 DOS specific definitions -# - - -# Copyright (C) 1996-2025 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -DELETE := del -CAT := type -SEP := $(strip \ ) -PLATFORM_DIR := $(TOP_DIR)/builds/dos -PLATFORM := dos - -# This is used for `make refdoc' and `make refdoc-venv' -# -BIN := Scripts - -# The executable file extension (for tools), *with* leading dot. -# -E := .exe - -# The directory where all library files are placed. -# -# By default, this is the same as $(OBJ_DIR); however, this can be changed -# to suit particular needs. -# -LIB_DIR := $(OBJ_DIR) - -# The name of the final library file. Note that the DOS-specific Makefile -# uses a shorter (8.3) name. -# -LIBRARY := $(PROJECT) - - -# The NO_OUTPUT macro is used to ignore the output of commands. -# -NO_OUTPUT = > nul - - -# EOF diff --git a/vendor/freetype/builds/dos/dos-emx.mk b/vendor/freetype/builds/dos/dos-emx.mk deleted file mode 100644 index 88393522781..00000000000 --- a/vendor/freetype/builds/dos/dos-emx.mk +++ /dev/null @@ -1,21 +0,0 @@ -# -# FreeType 2 configuration rules for the EMX gcc compiler -# - - -# Copyright (C) 2003-2025 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -include $(TOP_DIR)/builds/dos/dos-def.mk -include $(TOP_DIR)/builds/compiler/emx.mk -include $(TOP_DIR)/builds/link_dos.mk - - -# EOF diff --git a/vendor/freetype/builds/dos/dos-gcc.mk b/vendor/freetype/builds/dos/dos-gcc.mk deleted file mode 100644 index 4cfceb2029c..00000000000 --- a/vendor/freetype/builds/dos/dos-gcc.mk +++ /dev/null @@ -1,21 +0,0 @@ -# -# FreeType 2 configuration rules for the DJGPP compiler -# - - -# Copyright (C) 1996-2025 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -include $(TOP_DIR)/builds/dos/dos-def.mk -include $(TOP_DIR)/builds/compiler/gcc.mk -include $(TOP_DIR)/builds/link_dos.mk - - -# EOF diff --git a/vendor/freetype/builds/dos/dos-wat.mk b/vendor/freetype/builds/dos/dos-wat.mk deleted file mode 100644 index 2e3bd8454a2..00000000000 --- a/vendor/freetype/builds/dos/dos-wat.mk +++ /dev/null @@ -1,20 +0,0 @@ -# -# FreeType 2 configuration rules for the Watcom C/C++ compiler -# - - -# Copyright (C) 2003-2025 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - -include $(TOP_DIR)/builds/dos/dos-def.mk -include $(TOP_DIR)/builds/compiler/watcom.mk -include $(TOP_DIR)/builds/link_dos.mk - - -# EOF diff --git a/vendor/freetype/builds/exports.mk b/vendor/freetype/builds/exports.mk deleted file mode 100644 index 7e380ea2d8f..00000000000 --- a/vendor/freetype/builds/exports.mk +++ /dev/null @@ -1,80 +0,0 @@ -# -# FreeType 2 exports sub-Makefile -# - - -# Copyright (C) 2005-2025 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -# DO NOT INVOKE THIS MAKEFILE DIRECTLY! IT IS MEANT TO BE INCLUDED BY -# OTHER MAKEFILES. - - -# This sub-Makefile is used to compute the list of exported symbols whenever -# the EXPORTS_LIST variable is defined by one of the platform or compiler -# specific build files. -# -# EXPORTS_LIST contains the name of the `list' file, for example a Windows -# .DEF file. -# -ifneq ($(EXPORTS_LIST),) - - # CCexe is the compiler used to compile the `apinames' tool program - # on the host machine. This isn't necessarily the same as the compiler - # which can be a cross-compiler for a different architecture, for example. - # - ifeq ($(CCexe),) - CCexe := $(CC) - endif - - # TE acts like T, but for executables instead of object files. - ifeq ($(TE),) - TE := $T - endif - - # The list of public headers we're going to parse. - 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. - # - # Note that $(APINAMES_OPTIONS) is empty, except for Windows compilers. - # - APINAMES_SRC := $(subst /,$(SEP),$(TOP_DIR)/src/tools/apinames.c) - APINAMES_EXE := $(subst /,$(SEP),$(OBJ_DIR)/apinames$(E_BUILD)) - - $(APINAMES_EXE): $(APINAMES_SRC) - $(CCexe) $(CCexe_CFLAGS) $(TE)$@ $< $(CCexe_LDFLAGS) - - .PHONY: symbols_list - - symbols_list: $(EXPORTS_LIST) - - # We manually add TT_New_Context and TT_RunIns, which are needed by TT - # debuggers, to the EXPORTS_LIST. - # - $(EXPORTS_LIST): $(APINAMES_EXE) $(PUBLIC_HEADERS) - $(subst /,$(SEP),$(APINAMES_EXE)) -o$@ $(APINAMES_OPTIONS) $(PUBLIC_HEADERS) - @echo TT_New_Context >> $(EXPORTS_LIST) - @echo TT_RunIns >> $(EXPORTS_LIST) - - $(PROJECT_LIBRARY): $(EXPORTS_LIST) - - CLEAN += $(EXPORTS_LIST) \ - $(APINAMES_EXE) - -endif - - -# EOF diff --git a/vendor/freetype/builds/freetype.mk b/vendor/freetype/builds/freetype.mk deleted file mode 100644 index fd3fad5ab33..00000000000 --- a/vendor/freetype/builds/freetype.mk +++ /dev/null @@ -1,385 +0,0 @@ -# -# FreeType 2 library sub-Makefile -# - - -# Copyright (C) 1996-2025 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -# DO NOT INVOKE THIS MAKEFILE DIRECTLY! IT IS MEANT TO BE INCLUDED BY -# OTHER MAKEFILES. - - -# The following variables (set by other Makefile components, in the -# environment, or on the command line) are used: -# -# PLATFORM_DIR The architecture-dependent directory, -# e.g., `$(TOP_DIR)/builds/unix'. Added to INCLUDES also. -# -# OBJ_DIR The directory in which object files are created. -# -# LIB_DIR The directory in which the library is created. -# -# DOC_DIR The directory in which the API reference is created. -# -# INCLUDES A list of directories to be included additionally. -# -# DEVEL_DIR Development directory which is added to the INCLUDES -# variable before the standard include directories. -# -# CFLAGS Compilation flags. This overrides the default settings -# in the platform-specific configuration files. -# -# FTSYS_SRC If set, its value is used as the name of a replacement -# file for `src/base/ftsystem.c'. -# -# FTDEBUG_SRC If set, its value is used as the name of a replacement -# file for `src/base/ftdebug.c'. [For a normal build, this -# file does nothing.] -# -# FTMODULE_H The file which contains the list of module classes for -# the current build. Usually, this is automatically -# created by `modules.mk'. -# -# BASE_OBJ_S -# BASE_OBJ_M A list of base objects (for single object and multiple -# object builds, respectively). Set up in -# `src/base/rules.mk'. -# -# BASE_EXT_OBJ A list of base extension objects. Set up in -# `src/base/rules.mk'. -# -# DRV_OBJ_S -# DRV_OBJ_M A list of driver objects (for single object and multiple -# object builds, respectively). Set up cumulatively in -# `src//rules.mk'. -# -# CLEAN -# DISTCLEAN The sub-makefiles can append additional stuff to these two -# variables which is to be removed for the `clean' resp. -# `distclean' target. -# -# TOP_DIR, SEP, -# COMPILER_SEP, -# LIBRARY, CC, -# A, I, O, T Check `config.mk' for details. - - -# The targets `objects' and `library' are defined at the end of this -# Makefile after all other rules have been included. -# -.PHONY: single multi objects library refdoc refdoc-venv - -# default target -- build single objects and library -# -single: objects library - -# `multi' target -- build multiple objects and library -# -multi: objects library - - -# The FreeType source directory, usually `./src'. -# -SRC_DIR := $(TOP_DIR)/src - -# The directory where the base layer components are placed, usually -# `./src/base'. -# -BASE_DIR := $(SRC_DIR)/base - -# Other derived directories. -# -PUBLIC_DIR := $(TOP_DIR)/include/freetype -INTERNAL_DIR := $(PUBLIC_DIR)/internal -SERVICES_DIR := $(INTERNAL_DIR)/services -CONFIG_DIR := $(PUBLIC_DIR)/config - -# The documentation directory. -# -DOC_DIR ?= $(TOP_DIR)/docs - -# The final name of the library file. -# -PROJECT_LIBRARY := $(LIB_DIR)/$(LIBRARY).$A - - -# include paths -# -# IMPORTANT NOTE: The architecture-dependent directory must ALWAYS be placed -# before the standard include list. Porters are then able to -# put their own version of some of the FreeType components -# in the `builds/' directory, as these files will -# override the default sources. -# -INCLUDES := $(subst /,$(COMPILER_SEP),$(OBJ_DIR) \ - $(DEVEL_DIR) \ - $(PLATFORM_DIR) \ - $(TOP_DIR)/include) - -INCLUDE_FLAGS := $(INCLUDES:%=$I%) - -# For a development build, we assume that the external library dependencies -# defined in `ftoption.h' are fulfilled, so we directly access the necessary -# include directory information using `pkg-config'. -# -ifdef DEVEL_DIR - INCLUDE_FLAGS += $(shell pkg-config --cflags libpng) - INCLUDE_FLAGS += $(shell pkg-config --cflags harfbuzz) - INCLUDE_FLAGS += $(shell pkg-config --cflags libbrotlidec) -endif - - -# C flags used for the compilation of an object file. This must include at -# least the paths for the `base' and `builds/' directories; -# debug/optimization/warning flags + ansi compliance if needed. -# -# $(INCLUDE_FLAGS) should come before $(CFLAGS) to avoid problems with -# old FreeType versions. -# -# Note what we also define the macro FT2_BUILD_LIBRARY when building -# FreeType. This is required to let our sources include the internal -# headers (something forbidden by clients). -# -# `CPPFLAGS' might be specified by the user in the environment. -# -FT_CFLAGS = $(CPPFLAGS) \ - $(CFLAGS) \ - $DFT2_BUILD_LIBRARY - -FT_COMPILE := $(CC) $(ANSIFLAGS) $(INCLUDE_FLAGS) $(FT_CFLAGS) - - -# Include the `exports' rules file. -# -include $(TOP_DIR)/builds/exports.mk - - -# Initialize the list of objects. -# -OBJECTS_LIST := - - -# Define $(PUBLIC_H) as the list of all public header files located in -# `$(TOP_DIR)/include/freetype'. $(INTERNAL_H), and $(CONFIG_H) are defined -# similarly. $(FTOPTION_H) is the option file used in the compilation. -# -# This is used to simplify the dependency rules -- if one of these files -# changes, the whole library is recompiled. -# -ifneq ($(wildcard $(OBJ_DIR)/ftoption.h),) - FTOPTION_H := $(OBJ_DIR)/ftoption.h -else ifneq ($(wildcard $(PLATFORM_DIR)/ftoption.h),) - FTOPTION_H := $(PLATFORM_DIR)/ftoption.h -endif - -PUBLIC_H := $(wildcard $(PUBLIC_DIR)/*.h) -INTERNAL_H := $(wildcard $(INTERNAL_DIR)/*.h) \ - $(wildcard $(SERVICES_DIR)/*.h) -CONFIG_H := $(wildcard $(CONFIG_DIR)/*.h) \ - $(wildcard $(PLATFORM_DIR)/config/*.h) \ - $(FTMODULE_H) \ - $(FTOPTION_H) -DEVEL_H := $(wildcard $(TOP_DIR)/devel/*.h) - -FREETYPE_H := $(PUBLIC_H) $(INTERNAL_H) $(CONFIG_H) $(DEVEL_H) - - -# ftsystem component -# -FTSYS_SRC ?= $(BASE_DIR)/ftsystem.c - -FTSYS_OBJ := $(OBJ_DIR)/ftsystem.$O - -OBJECTS_LIST += $(FTSYS_OBJ) - -$(FTSYS_OBJ): $(FTSYS_SRC) $(FREETYPE_H) - $(FT_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<) - - -# ftdebug component -# -FTDEBUG_SRC ?= $(BASE_DIR)/ftdebug.c - -FTDEBUG_OBJ := $(OBJ_DIR)/ftdebug.$O - -OBJECTS_LIST += $(FTDEBUG_OBJ) - -$(FTDEBUG_OBJ): $(FTDEBUG_SRC) $(FREETYPE_H) - $(FT_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<) - - -# Include all rule files from FreeType components. -# -include $(SRC_DIR)/base/rules.mk -include $(patsubst %,$(SRC_DIR)/%/rules.mk,$(MODULES)) -include $(SRC_DIR)/dlg/rules.mk - - -# ftinit component -# -# The C source `ftinit.c' contains the FreeType initialization routines. -# It is able to automatically register one or more drivers when the API -# function FT_Init_FreeType() is called. -# -# The set of initial drivers is determined by the driver Makefiles -# includes above. Each driver Makefile updates the FTINIT_xxx lists -# which contain additional include paths and macros used to compile the -# single `ftinit.c' source. -# -FTINIT_SRC := $(BASE_DIR)/ftinit.c -FTINIT_OBJ := $(OBJ_DIR)/ftinit.$O - -OBJECTS_LIST += $(FTINIT_OBJ) - -$(FTINIT_OBJ): $(FTINIT_SRC) $(FREETYPE_H) - $(FT_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<) - - -# ftver component -# -# The VERSIONINFO resource `ftver.rc' contains version and copyright -# to be compiled by windres and tagged into DLL usually. -# -ifneq ($(RC),) - FTVER_SRC := $(BASE_DIR)/ftver.rc - FTVER_OBJ := $(OBJ_DIR)/ftver.$O - - OBJECTS_LIST += $(FTVER_OBJ) - - $(FTVER_OBJ): $(FTVER_SRC) - $(RC) -o $@ $< -endif - - -# All FreeType library objects. -# -OBJ_M := $(BASE_OBJ_M) $(BASE_EXT_OBJ) $(DRV_OBJS_M) $(DLG_OBJS_M) -OBJ_S := $(BASE_OBJ_S) $(BASE_EXT_OBJ) $(DRV_OBJS_S) $(DLG_OBJS_S) - - -# The target `multi' on the Make command line indicates that we want to -# compile each source file independently. -# -# Otherwise, each module/driver is compiled in a single object file through -# source file inclusion (see `src/base/ftbase.c' or -# `src/truetype/truetype.c' for examples). -# -BASE_OBJECTS := $(OBJECTS_LIST) - -ifneq ($(findstring multi,$(MAKECMDGOALS)),) - OBJECTS_LIST += $(OBJ_M) -else - OBJECTS_LIST += $(OBJ_S) -endif - -objects: $(OBJECTS_LIST) - -library: $(PROJECT_LIBRARY) - -# Run `docwriter' in the current Python environment. -# -PYTHON ?= python - -refdoc: - @echo Running docwriter... - $(PYTHON) -m docwriter \ - --prefix=ft2 \ - --title=FreeType-$(version) \ - --site=reference \ - --output=$(DOC_DIR) \ - $(PUBLIC_DIR)/*.h \ - $(PUBLIC_DIR)/config/*.h \ - $(PUBLIC_DIR)/cache/*.h - @echo Building static site... - cd $(DOC_DIR) && $(PYTHON) -m mkdocs build - @echo Done. - -# Variables for running `refdoc' with Python's `virtualenv'. The -# environment is created in `DOC_DIR/env' and is gitignored. -# -# We still need to cd into `DOC_DIR' to build `mkdocs' because paths in -# `mkdocs.yml' are relative to the current working directory. -# -VENV_NAME := env -VENV_DIR := $(DOC_DIR)$(SEP)$(VENV_NAME) -ENV_PYTHON := $(VENV_DIR)$(SEP)$(BIN)$(SEP)$(PYTHON) - -refdoc-venv: - @echo Setting up virtualenv for Python... - virtualenv --python=$(PYTHON) $(VENV_DIR) - @echo Installing docwriter... - $(ENV_PYTHON) -m pip install docwriter - @echo Running docwriter... - $(ENV_PYTHON) -m docwriter \ - --prefix=ft2 \ - --title=FreeType-$(version) \ - --site=reference \ - --output=$(DOC_DIR) \ - $(PUBLIC_DIR)/*.h \ - $(PUBLIC_DIR)/config/*.h \ - $(PUBLIC_DIR)/cache/*.h - @echo Building static site... - cd $(DOC_DIR) && $(VENV_NAME)$(SEP)$(BIN)$(SEP)python -m mkdocs build - @echo Done. - -.PHONY: clean_project_std distclean_project_std - -# Standard cleaning and distclean rules. These are not accepted -# on all systems though. -# -clean_project_std: - -$(DELETE) $(BASE_OBJECTS) $(OBJ_M) $(OBJ_S) $(CLEAN) - -distclean_project_std: clean_project_std - -$(DELETE) $(PROJECT_LIBRARY) - -$(DELETE) *.orig *~ core *.core $(DISTCLEAN) - - -.PHONY: clean_project_dos distclean_project_dos - -# The Dos command shell does not support very long list of arguments, so -# we are stuck with wildcards. -# -# Don't break the command lines with \; this prevents the "del" command from -# working correctly on Win9x. -# -clean_project_dos: - -$(DELETE) $(subst /,$(SEP),$(OBJ_DIR)/*.$O $(CLEAN) $(NO_OUTPUT)) - -distclean_project_dos: clean_project_dos - -$(DELETE) $(subst /,$(SEP),$(PROJECT_LIBRARY) $(DISTCLEAN) $(NO_OUTPUT)) - - -.PHONY: remove_config_mk remove_ftmodule_h - -# Remove configuration file (used for distclean). -# -remove_config_mk: - -$(DELETE) $(subst /,$(SEP),$(CONFIG_MK) $(NO_OUTPUT)) - -# Remove module list (used for distclean). -# -remove_ftmodule_h: - -$(DELETE) $(subst /,$(SEP),$(FTMODULE_H) $(NO_OUTPUT)) - - -.PHONY: clean distclean - -# The `config.mk' file must define `clean_project' and `distclean_project'. -# Implementations may use to relay these to either the `std' or `dos' -# versions from above, or simply provide their own implementation. -# -clean: clean_project -distclean: distclean_project remove_config_mk remove_ftmodule_h - -$(DELETE) $(subst /,$(SEP),$(DOC_DIR)/*.html $(NO_OUTPUT)) - - -# EOF diff --git a/vendor/freetype/builds/link_dos.mk b/vendor/freetype/builds/link_dos.mk deleted file mode 100644 index 845bef69947..00000000000 --- a/vendor/freetype/builds/link_dos.mk +++ /dev/null @@ -1,42 +0,0 @@ -# -# Link instructions for Dos-like systems (Dos, Win32, OS/2) -# - - -# Copyright (C) 1996-2025 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -ifdef BUILD_PROJECT - - .PHONY: clean_project distclean_project - - # Now include the main sub-makefile. It contains all the rules used to - # build the library with the previous variables defined. - # - include $(TOP_DIR)/builds/$(PROJECT).mk - - # The cleanup targets. - # - clean_project: clean_project_dos - distclean_project: distclean_project_dos - - # This final rule is used to link all object files into a single library. - # this is compiler-specific - # - $(PROJECT_LIBRARY): $(OBJECTS_LIST) - ifdef CLEAN_LIBRARY - -$(CLEAN_LIBRARY) $(NO_OUTPUT) - endif - $(LINK_LIBRARY) - -endif - - -# EOF diff --git a/vendor/freetype/builds/link_std.mk b/vendor/freetype/builds/link_std.mk deleted file mode 100644 index f650b3491ae..00000000000 --- a/vendor/freetype/builds/link_std.mk +++ /dev/null @@ -1,42 +0,0 @@ -# -# Link instructions for standard systems -# - - -# Copyright (C) 1996-2025 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -ifdef BUILD_PROJECT - - .PHONY: clean_project distclean_project - - # Now include the main sub-makefile. It contains all the rules used to - # build the library with the previous variables defined. - # - include $(TOP_DIR)/builds/$(PROJECT).mk - - # The cleanup targets. - # - clean_project: clean_project_std - distclean_project: distclean_project_std - - # This final rule is used to link all object files into a single library. - # this is compiler-specific - # - $(PROJECT_LIBRARY): $(OBJECTS_LIST) - ifdef CLEAN_LIBRARY - -$(CLEAN_LIBRARY) $(NO_OUTPUT) - endif - $(LINK_LIBRARY) - -endif - - -# EOF diff --git a/vendor/freetype/builds/mac/FreeType.m68k_cfm.make.txt b/vendor/freetype/builds/mac/FreeType.m68k_cfm.make.txt deleted file mode 100644 index b74565f1079..00000000000 --- a/vendor/freetype/builds/mac/FreeType.m68k_cfm.make.txt +++ /dev/null @@ -1,209 +0,0 @@ -# File: FreeType.m68k_cfm.make -# Target: FreeType.m68k_cfm -# Created: Thursday, October 27, 2005 09:23:25 PM - - -MAKEFILE = FreeType.m68k_cfm.make -\xA5MondoBuild\xA5 = {MAKEFILE} # Make blank to avoid rebuilds when makefile is modified - -ObjDir = :objs: -Includes = \xB6 - -ansi strict \xB6 - -includes unix \xB6 - -i :include: \xB6 - -i :src: \xB6 - -i :include:freetype:config: - -Sym-68K = -sym off - -COptions = \xB6 - -d FT_MACINTOSH=1 \xB6 - -d HAVE_FSSPEC=1 \xB6 - -d HAVE_FSREF=0 \xB6 - -d HAVE_QUICKDRAW_TOOLBOX=1 \xB6 - -d HAVE_QUICKDRAW_CARBON=0 \xB6 - -d HAVE_ATS=0 \xB6 - -d FT2_BUILD_LIBRARY \xB6 - -d FT_CONFIG_CONFIG_H="" \xB6 - -d FT_CONFIG_MODULES_H="" \xB6 - {Includes} {Sym-68K} -model cfmseg - - -### Source Files ### - -SrcFiles = \xB6 - :src:autofit:autofit.c \xB6 - :builds:mac:ftbase.c \xB6 - :src:base:ftbbox.c \xB6 - :src:base:ftbdf.c \xB6 - :src:base:ftbitmap.c \xB6 - :src:base:ftdebug.c \xB6 - :src:base:ftfstype.c \xB6 - :src:base:ftglyph.c \xB6 - :src:base:ftgxval.c \xB6 - :src:base:ftinit.c \xB6 - :src:base:ftmm.c \xB6 - :src:base:ftotval.c \xB6 - :src:base:ftpfr.c \xB6 - :src:base:ftstroke.c \xB6 - :src:base:ftsynth.c \xB6 - :src:base:ftsystem.c \xB6 - :src:base:fttype1.c \xB6 - :src:base:ftwinfnt.c \xB6 - :src:cache:ftcache.c \xB6 - :src:bdf:bdf.c \xB6 - :src:cff:cff.c \xB6 - :src:cid:type1cid.c \xB6 -# :src:gxvalid:gxvalid.c \xB6 - :src:gzip:ftgzip.c \xB6 - :src:bzip2:ftbzip2.c \xB6 - :src:lzw:ftlzw.c \xB6 - :src:otvalid:otvalid.c \xB6 - :src:pcf:pcf.c \xB6 - :src:pfr:pfr.c \xB6 - :src:psaux:psaux.c \xB6 - :src:pshinter:pshinter.c \xB6 - :src:psnames:psmodule.c \xB6 - :src:raster:raster.c \xB6 - :src:sfnt:sfnt.c \xB6 - :src:smooth:smooth.c \xB6 - :src:truetype:truetype.c \xB6 - :src:type1:type1.c \xB6 - :src:type42:type42.c \xB6 - :src:winfonts:winfnt.c - - -### Object Files ### - -ObjFiles-68K = \xB6 - "{ObjDir}autofit.c.o" \xB6 - "{ObjDir}ftbase.c.o" \xB6 - "{ObjDir}ftbbox.c.o" \xB6 - "{ObjDir}ftbdf.c.o" \xB6 - "{ObjDir}ftbitmap.c.o" \xB6 - "{ObjDir}ftdebug.c.o" \xB6 - "{ObjDir}ftfstype.c.o" \xB6 - "{ObjDir}ftglyph.c.o" \xB6 - "{ObjDir}ftgxval.c.o" \xB6 - "{ObjDir}ftinit.c.o" \xB6 - "{ObjDir}ftmm.c.o" \xB6 - "{ObjDir}ftotval.c.o" \xB6 - "{ObjDir}ftpfr.c.o" \xB6 - "{ObjDir}ftstroke.c.o" \xB6 - "{ObjDir}ftsynth.c.o" \xB6 - "{ObjDir}ftsystem.c.o" \xB6 - "{ObjDir}fttype1.c.o" \xB6 - "{ObjDir}ftwinfnt.c.o" \xB6 - "{ObjDir}ftcache.c.o" \xB6 - "{ObjDir}bdf.c.o" \xB6 - "{ObjDir}cff.c.o" \xB6 - "{ObjDir}type1cid.c.o" \xB6 -# "{ObjDir}gxvalid.c.o" \xB6 - "{ObjDir}ftgzip.c.o" \xB6 - "{ObjDir}ftbzip2.c.o" \xB6 - "{ObjDir}ftlzw.c.o" \xB6 - "{ObjDir}otvalid.c.o" \xB6 - "{ObjDir}pcf.c.o" \xB6 - "{ObjDir}pfr.c.o" \xB6 - "{ObjDir}psaux.c.o" \xB6 - "{ObjDir}pshinter.c.o" \xB6 - "{ObjDir}psmodule.c.o" \xB6 - "{ObjDir}raster.c.o" \xB6 - "{ObjDir}sfnt.c.o" \xB6 - "{ObjDir}smooth.c.o" \xB6 - "{ObjDir}truetype.c.o" \xB6 - "{ObjDir}type1.c.o" \xB6 - "{ObjDir}type42.c.o" \xB6 - "{ObjDir}winfnt.c.o" - - -### Libraries ### - -LibFiles-68K = - - -### Default Rules ### - -.c.o \xC4 .c {\xA5MondoBuild\xA5} - {C} {depDir}{default}.c -o {targDir}{default}.c.o {COptions} - - -### Build Rules ### - -:builds:mac:ftbase.c \xC4\xC4 :src:base:ftbase.c - Duplicate :src:base:ftbase.c :builds:mac:ftbase.c - -"{ObjDir}ftbase.c.o" \xC4\xC4 :builds:mac:ftbase.c - {C} :builds:mac:ftbase.c -o "{ObjDir}ftbase.c.o" \xB6 - -i :builds:mac: \xB6 - -i :src:base: \xB6 - {COptions} - -FreeType.m68k_cfm \xC4\xC4 FreeType.m68k_cfm.o - -FreeType.m68k_cfm.o \xC4\xC4 {ObjFiles-68K} {LibFiles-68K} {\xA5MondoBuild\xA5} - Lib \xB6 - -o {Targ} \xB6 - {ObjFiles-68K} \xB6 - {LibFiles-68K} \xB6 - {Sym-68K} \xB6 - -mf -d - - - -### Required Dependencies ### - -"{ObjDir}autofit.c.o" \xC4 :src:autofit:autofit.c -# "{ObjDir}ftbase.c.o" \xC4 :src:base:ftbase.c -"{ObjDir}ftbbox.c.o" \xC4 :src:base:ftbbox.c -"{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}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 -"{ObjDir}ftinit.c.o" \xC4 :src:base:ftinit.c -"{ObjDir}ftmm.c.o" \xC4 :src:base:ftmm.c -"{ObjDir}ftotval.c.o" \xC4 :src:base:ftotval.c -"{ObjDir}ftpfr.c.o" \xC4 :src:base:ftpfr.c -"{ObjDir}ftstroke.c.o" \xC4 :src:base:ftstroke.c -"{ObjDir}ftsynth.c.o" \xC4 :src:base:ftsynth.c -"{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}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 -"{ObjDir}type1cid.c.o" \xC4 :src:cid:type1cid.c -# "{ObjDir}gxvalid.c.o" \xC4 :src:gxvalid:gxvalid.c -"{ObjDir}ftgzip.c.o" \xC4 :src:gzip:ftgzip.c -"{ObjDir}ftbzip2.c.o" \xC4 :src:bzip2:ftbzip2.c -"{ObjDir}ftlzw.c.o" \xC4 :src:lzw:ftlzw.c -"{ObjDir}otvalid.c.o" \xC4 :src:otvalid:otvalid.c -"{ObjDir}pcf.c.o" \xC4 :src:pcf:pcf.c -"{ObjDir}pfr.c.o" \xC4 :src:pfr:pfr.c -"{ObjDir}psaux.c.o" \xC4 :src:psaux:psaux.c -"{ObjDir}pshinter.c.o" \xC4 :src:pshinter:pshinter.c -"{ObjDir}psmodule.c.o" \xC4 :src:psnames:psmodule.c -"{ObjDir}raster.c.o" \xC4 :src:raster:raster.c -"{ObjDir}sfnt.c.o" \xC4 :src:sfnt:sfnt.c -"{ObjDir}smooth.c.o" \xC4 :src:smooth:smooth.c -"{ObjDir}truetype.c.o" \xC4 :src:truetype:truetype.c -"{ObjDir}type1.c.o" \xC4 :src:type1:type1.c -"{ObjDir}type42.c.o" \xC4 :src:type42:type42.c -"{ObjDir}winfnt.c.o" \xC4 :src:winfonts:winfnt.c - - -### Optional Dependencies ### -### Build this target to generate "include file" dependencies. ### - -Dependencies \xC4 $OutOfDate - MakeDepend \xB6 - -append {MAKEFILE} \xB6 - -ignore "{CIncludes}" \xB6 - -objdir "{ObjDir}" \xB6 - -objext .o \xB6 - {Includes} \xB6 - {SrcFiles} - - diff --git a/vendor/freetype/builds/mac/FreeType.m68k_far.make.txt b/vendor/freetype/builds/mac/FreeType.m68k_far.make.txt deleted file mode 100644 index d880ddbb7c6..00000000000 --- a/vendor/freetype/builds/mac/FreeType.m68k_far.make.txt +++ /dev/null @@ -1,208 +0,0 @@ -# File: FreeType.m68k_far.make -# Target: FreeType.m68k_far -# Created: Tuesday, October 25, 2005 03:34:05 PM - - -MAKEFILE = FreeType.m68k_far.make -\xA5MondoBuild\xA5 = {MAKEFILE} # Make blank to avoid rebuilds when makefile is modified - -ObjDir = :objs: -Includes = \xB6 - -includes unix \xB6 - -i :include: \xB6 - -i :src: \xB6 - -i :include:freetype:config: - -Sym-68K = -sym off - -COptions = \xB6 - -d FT_MACINTOSH=1 \xB6 - -d HAVE_FSSPEC=1 \xB6 - -d HAVE_FSREF=0 \xB6 - -d HAVE_QUICKDRAW_TOOLBOX=1 \xB6 - -d HAVE_QUICKDRAW_CARBON=0 \xB6 - -d HAVE_ATS=0 \xB6 - -d FT2_BUILD_LIBRARY \xB6 - -d FT_CONFIG_CONFIG_H="" \xB6 - -d FT_CONFIG_MODULES_H="" \xB6 - {Includes} {Sym-68K} -model far - - -### Source Files ### - -SrcFiles = \xB6 - :src:autofit:autofit.c \xB6 - :builds:mac:ftbase.c \xB6 - :src:base:ftbbox.c \xB6 - :src:base:ftbdf.c \xB6 - :src:base:ftbitmap.c \xB6 - :src:base:ftdebug.c \xB6 - :src:base:ftfstype.c \xB6 - :src:base:ftglyph.c \xB6 - :src:base:ftgxval.c \xB6 - :src:base:ftinit.c \xB6 - :src:base:ftmm.c \xB6 - :src:base:ftotval.c \xB6 - :src:base:ftpfr.c \xB6 - :src:base:ftstroke.c \xB6 - :src:base:ftsynth.c \xB6 - :src:base:ftsystem.c \xB6 - :src:base:fttype1.c \xB6 - :src:base:ftwinfnt.c \xB6 - :src:cache:ftcache.c \xB6 - :src:bdf:bdf.c \xB6 - :src:cff:cff.c \xB6 - :src:cid:type1cid.c \xB6 - :src:gxvalid:gxvalid.c \xB6 - :src:gzip:ftgzip.c \xB6 - :src:bzip2:ftbzip2.c \xB6 - :src:lzw:ftlzw.c \xB6 - :src:otvalid:otvalid.c \xB6 - :src:pcf:pcf.c \xB6 - :src:pfr:pfr.c \xB6 - :src:psaux:psaux.c \xB6 - :src:pshinter:pshinter.c \xB6 - :src:psnames:psmodule.c \xB6 - :src:raster:raster.c \xB6 - :src:sfnt:sfnt.c \xB6 - :src:smooth:smooth.c \xB6 - :src:truetype:truetype.c \xB6 - :src:type1:type1.c \xB6 - :src:type42:type42.c \xB6 - :src:winfonts:winfnt.c - - -### Object Files ### - -ObjFiles-68K = \xB6 - "{ObjDir}autofit.c.o" \xB6 - "{ObjDir}ftbase.c.o" \xB6 - "{ObjDir}ftbbox.c.o" \xB6 - "{ObjDir}ftbdf.c.o" \xB6 - "{ObjDir}ftbitmap.c.o" \xB6 - "{ObjDir}ftdebug.c.o" \xB6 - "{ObjDir}ftfstype.c.o" \xB6 - "{ObjDir}ftglyph.c.o" \xB6 - "{ObjDir}ftgxval.c.o" \xB6 - "{ObjDir}ftinit.c.o" \xB6 - "{ObjDir}ftmm.c.o" \xB6 - "{ObjDir}ftotval.c.o" \xB6 - "{ObjDir}ftpfr.c.o" \xB6 - "{ObjDir}ftstroke.c.o" \xB6 - "{ObjDir}ftsynth.c.o" \xB6 - "{ObjDir}ftsystem.c.o" \xB6 - "{ObjDir}fttype1.c.o" \xB6 - "{ObjDir}ftwinfnt.c.o" \xB6 - "{ObjDir}ftcache.c.o" \xB6 - "{ObjDir}bdf.c.o" \xB6 - "{ObjDir}cff.c.o" \xB6 - "{ObjDir}type1cid.c.o" \xB6 - "{ObjDir}gxvalid.c.o" \xB6 - "{ObjDir}ftgzip.c.o" \xB6 - "{ObjDir}ftbzip2.c.o" \xB6 - "{ObjDir}ftlzw.c.o" \xB6 - "{ObjDir}otvalid.c.o" \xB6 - "{ObjDir}pcf.c.o" \xB6 - "{ObjDir}pfr.c.o" \xB6 - "{ObjDir}psaux.c.o" \xB6 - "{ObjDir}pshinter.c.o" \xB6 - "{ObjDir}psmodule.c.o" \xB6 - "{ObjDir}raster.c.o" \xB6 - "{ObjDir}sfnt.c.o" \xB6 - "{ObjDir}smooth.c.o" \xB6 - "{ObjDir}truetype.c.o" \xB6 - "{ObjDir}type1.c.o" \xB6 - "{ObjDir}type42.c.o" \xB6 - "{ObjDir}winfnt.c.o" - - -### Libraries ### - -LibFiles-68K = - - -### Default Rules ### - -.c.o \xC4 .c {\xA5MondoBuild\xA5} - {C} {depDir}{default}.c -o {targDir}{default}.c.o {COptions} \xB6 - -ansi strict - -### Build Rules ### - -:builds:mac:ftbase.c \xC4\xC4 :src:base:ftbase.c - Duplicate :src:base:ftbase.c :builds:mac:ftbase.c - -"{ObjDir}ftbase.c.o" \xC4\xC4 :builds:mac:ftbase.c - {C} :builds:mac:ftbase.c -o "{ObjDir}ftbase.c.o" \xB6 - -i :builds:mac: \xB6 - -i :src:base: \xB6 - {COptions} - -FreeType.m68k_far \xC4\xC4 FreeType.m68k_far.o - -FreeType.m68k_far.o \xC4\xC4 {ObjFiles-68K} {LibFiles-68K} {\xA5MondoBuild\xA5} - Lib \xB6 - -o {Targ} \xB6 - {ObjFiles-68K} \xB6 - {LibFiles-68K} \xB6 - {Sym-68K} \xB6 - -mf -d - - - -### Required Dependencies ### - -"{ObjDir}autofit.c.o" \xC4 :src:autofit:autofit.c -# "{ObjDir}ftbase.c.o" \xC4 :src:base:ftbase.c -"{ObjDir}ftbbox.c.o" \xC4 :src:base:ftbbox.c -"{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}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 -"{ObjDir}ftinit.c.o" \xC4 :src:base:ftinit.c -"{ObjDir}ftmm.c.o" \xC4 :src:base:ftmm.c -"{ObjDir}ftotval.c.o" \xC4 :src:base:ftotval.c -"{ObjDir}ftpfr.c.o" \xC4 :src:base:ftpfr.c -"{ObjDir}ftstroke.c.o" \xC4 :src:base:ftstroke.c -"{ObjDir}ftsynth.c.o" \xC4 :src:base:ftsynth.c -"{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}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 -"{ObjDir}type1cid.c.o" \xC4 :src:cid:type1cid.c -"{ObjDir}gxvalid.c.o" \xC4 :src:gxvalid:gxvalid.c -"{ObjDir}ftgzip.c.o" \xC4 :src:gzip:ftgzip.c -"{ObjDir}ftbzip2.c.o" \xC4 :src:bzip2:ftbzip2.c -"{ObjDir}ftlzw.c.o" \xC4 :src:lzw:ftlzw.c -"{ObjDir}otvalid.c.o" \xC4 :src:otvalid:otvalid.c -"{ObjDir}pcf.c.o" \xC4 :src:pcf:pcf.c -"{ObjDir}pfr.c.o" \xC4 :src:pfr:pfr.c -"{ObjDir}psaux.c.o" \xC4 :src:psaux:psaux.c -"{ObjDir}pshinter.c.o" \xC4 :src:pshinter:pshinter.c -"{ObjDir}psmodule.c.o" \xC4 :src:psnames:psmodule.c -"{ObjDir}raster.c.o" \xC4 :src:raster:raster.c -"{ObjDir}sfnt.c.o" \xC4 :src:sfnt:sfnt.c -"{ObjDir}smooth.c.o" \xC4 :src:smooth:smooth.c -"{ObjDir}truetype.c.o" \xC4 :src:truetype:truetype.c -"{ObjDir}type1.c.o" \xC4 :src:type1:type1.c -"{ObjDir}type42.c.o" \xC4 :src:type42:type42.c -"{ObjDir}winfnt.c.o" \xC4 :src:winfonts:winfnt.c - - -### Optional Dependencies ### -### Build this target to generate "include file" dependencies. ### - -Dependencies \xC4 $OutOfDate - MakeDepend \xB6 - -append {MAKEFILE} \xB6 - -ignore "{CIncludes}" \xB6 - -objdir "{ObjDir}" \xB6 - -objext .o \xB6 - {Includes} \xB6 - {SrcFiles} - - diff --git a/vendor/freetype/builds/mac/FreeType.ppc_carbon.make.txt b/vendor/freetype/builds/mac/FreeType.ppc_carbon.make.txt deleted file mode 100644 index 1fa8c307608..00000000000 --- a/vendor/freetype/builds/mac/FreeType.ppc_carbon.make.txt +++ /dev/null @@ -1,212 +0,0 @@ -# File: FreeType.ppc_carbon.make -# Target: FreeType.ppc_carbon -# Created: Friday, October 28, 2005 03:40:06 PM - - -MAKEFILE = FreeType.ppc_carbon.make -\xA5MondoBuild\xA5 = {MAKEFILE} # Make blank to avoid rebuilds when makefile is modified - -ObjDir = :objs: -Includes = \xB6 - -ansi strict \xB6 - -includes unix \xB6 - -i :include: \xB6 - -i :src: \xB6 - -i :include:freetype:config: - -Sym-PPC = -sym off - -PPCCOptions = \xB6 - -d FT_MACINTOSH=1 \xB6 - -d HAVE_FSSPEC=1 \xB6 - -d HAVE_FSREF=1 \xB6 - -d HAVE_QUICKDRAW_TOOLBOX=1 \xB6 - -d HAVE_QUICKDRAW_CARBON=1 \xB6 - -d HAVE_ATS=0 \xB6 - -d FT2_BUILD_LIBRARY \xB6 - -d FT_CONFIG_CONFIG_H="" \xB6 - -d FT_CONFIG_MODULES_H="" \xB6 - {Includes} {Sym-PPC} -d TARGET_API_MAC_CARBON=1 - - -### Source Files ### - -SrcFiles = \xB6 - :src:autofit:autofit.c \xB6 - :builds:mac:ftbase.c \xB6 - :src:base:ftbbox.c \xB6 - :src:base:ftbdf.c \xB6 - :src:base:ftbitmap.c \xB6 - :src:base:ftdebug.c \xB6 - :src:base:ftfstype.c \xB6 - :src:base:ftglyph.c \xB6 - :src:base:ftgxval.c \xB6 - :src:base:ftinit.c \xB6 - :src:base:ftmm.c \xB6 - :src:base:ftotval.c \xB6 - :src:base:ftpfr.c \xB6 - :src:base:ftstroke.c \xB6 - :src:base:ftsynth.c \xB6 - :src:base:ftsystem.c \xB6 - :src:base:fttype1.c \xB6 - :src:base:ftwinfnt.c \xB6 - :src:cache:ftcache.c \xB6 - :src:bdf:bdf.c \xB6 - :src:cff:cff.c \xB6 - :src:cid:type1cid.c \xB6 - :src:gxvalid:gxvalid.c \xB6 - :src:gzip:ftgzip.c \xB6 - :src:bzip2:ftbzip2.c \xB6 - :src:lzw:ftlzw.c \xB6 - :src:otvalid:otvalid.c \xB6 - :src:pcf:pcf.c \xB6 - :src:pfr:pfr.c \xB6 - :src:psaux:psaux.c \xB6 - :src:pshinter:pshinter.c \xB6 - :src:psnames:psmodule.c \xB6 - :src:raster:raster.c \xB6 - :src:sfnt:sfnt.c \xB6 - :src:smooth:smooth.c \xB6 - :src:truetype:truetype.c \xB6 - :src:type1:type1.c \xB6 - :src:type42:type42.c \xB6 - :src:winfonts:winfnt.c - - -### Object Files ### - -ObjFiles-PPC = \xB6 - "{ObjDir}autofit.c.x" \xB6 - "{ObjDir}ftbase.c.x" \xB6 - "{ObjDir}ftbbox.c.x" \xB6 - "{ObjDir}ftbdf.c.x" \xB6 - "{ObjDir}ftbitmap.c.x" \xB6 - "{ObjDir}ftdebug.c.x" \xB6 - "{ObjDir}ftfstype.c.x" \xB6 - "{ObjDir}ftglyph.c.x" \xB6 - "{ObjDir}ftgxval.c.x" \xB6 - "{ObjDir}ftinit.c.x" \xB6 - "{ObjDir}ftmm.c.x" \xB6 - "{ObjDir}ftotval.c.x" \xB6 - "{ObjDir}ftpfr.c.x" \xB6 - "{ObjDir}ftstroke.c.x" \xB6 - "{ObjDir}ftsynth.c.x" \xB6 - "{ObjDir}ftsystem.c.x" \xB6 - "{ObjDir}fttype1.c.x" \xB6 - "{ObjDir}ftwinfnt.c.x" \xB6 - "{ObjDir}ftcache.c.x" \xB6 - "{ObjDir}bdf.c.x" \xB6 - "{ObjDir}cff.c.x" \xB6 - "{ObjDir}type1cid.c.x" \xB6 - "{ObjDir}gxvalid.c.x" \xB6 - "{ObjDir}ftgzip.c.x" \xB6 - "{ObjDir}ftbzip2.c.x" \xB6 - "{ObjDir}ftlzw.c.x" \xB6 - "{ObjDir}otvalid.c.x" \xB6 - "{ObjDir}pcf.c.x" \xB6 - "{ObjDir}pfr.c.x" \xB6 - "{ObjDir}psaux.c.x" \xB6 - "{ObjDir}pshinter.c.x" \xB6 - "{ObjDir}psmodule.c.x" \xB6 - "{ObjDir}raster.c.x" \xB6 - "{ObjDir}sfnt.c.x" \xB6 - "{ObjDir}smooth.c.x" \xB6 - "{ObjDir}truetype.c.x" \xB6 - "{ObjDir}type1.c.x" \xB6 - "{ObjDir}type42.c.x" \xB6 - "{ObjDir}winfnt.c.x" - - -### Libraries ### - -LibFiles-PPC = - - -### Default Rules ### - -.c.x \xC4 .c {\xA5MondoBuild\xA5} - {PPCC} {depDir}{default}.c -o {targDir}{default}.c.x {PPCCOptions} - - -### Build Rules ### - -:builds:mac:ftbase.c \xC4\xC4 :src:base:ftbase.c - Duplicate :src:base:ftbase.c :builds:mac:ftbase.c - -"{ObjDir}ftbase.c.x" \xC4\xC4 :builds:mac:ftbase.c - {PPCC} :builds:mac:ftbase.c -o {ObjDir}ftbase.c.x \xB6 - -i :builds:mac: \xB6 - -i :src:base: \xB6 - {PPCCOptions} - -FreeType.ppc_carbon \xC4\xC4 FreeType.ppc_carbon.o - -FreeType.ppc_carbon.o \xC4\xC4 {ObjFiles-PPC} {LibFiles-PPC} {\xA5MondoBuild\xA5} - PPCLink \xB6 - -o {Targ} \xB6 - {ObjFiles-PPC} \xB6 - {LibFiles-PPC} \xB6 - {Sym-PPC} \xB6 - -mf -d \xB6 - -t 'XCOF' \xB6 - -c 'MPS ' \xB6 - -xm l - - - -### Required Dependencies ### - -"{ObjDir}autofit.c.x" \xC4 :src:autofit:autofit.c -# "{ObjDir}ftbase.c.x" \xC4 :builds:mac:ftbase.c -"{ObjDir}ftbbox.c.x" \xC4 :src:base:ftbbox.c -"{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}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 -"{ObjDir}ftinit.c.x" \xC4 :src:base:ftinit.c -"{ObjDir}ftmm.c.x" \xC4 :src:base:ftmm.c -"{ObjDir}ftotval.c.x" \xC4 :src:base:ftotval.c -"{ObjDir}ftpfr.c.x" \xC4 :src:base:ftpfr.c -"{ObjDir}ftstroke.c.x" \xC4 :src:base:ftstroke.c -"{ObjDir}ftsynth.c.x" \xC4 :src:base:ftsynth.c -"{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}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 -"{ObjDir}type1cid.c.x" \xC4 :src:cid:type1cid.c -"{ObjDir}gxvalid.c.x" \xC4 :src:gxvalid:gxvalid.c -"{ObjDir}ftgzip.c.x" \xC4 :src:gzip:ftgzip.c -"{ObjDir}ftbzip2.c.x" \xC4 :src:bzip2:ftbzip2.c -"{ObjDir}ftlzw.c.x" \xC4 :src:lzw:ftlzw.c -"{ObjDir}otvalid.c.x" \xC4 :src:otvalid:otvalid.c -"{ObjDir}pcf.c.x" \xC4 :src:pcf:pcf.c -"{ObjDir}pfr.c.x" \xC4 :src:pfr:pfr.c -"{ObjDir}psaux.c.x" \xC4 :src:psaux:psaux.c -"{ObjDir}pshinter.c.x" \xC4 :src:pshinter:pshinter.c -"{ObjDir}psmodule.c.x" \xC4 :src:psnames:psmodule.c -"{ObjDir}raster.c.x" \xC4 :src:raster:raster.c -"{ObjDir}sfnt.c.x" \xC4 :src:sfnt:sfnt.c -"{ObjDir}smooth.c.x" \xC4 :src:smooth:smooth.c -"{ObjDir}truetype.c.x" \xC4 :src:truetype:truetype.c -"{ObjDir}type1.c.x" \xC4 :src:type1:type1.c -"{ObjDir}type42.c.x" \xC4 :src:type42:type42.c -"{ObjDir}winfnt.c.x" \xC4 :src:winfonts:winfnt.c - - -### Optional Dependencies ### -### Build this target to generate "include file" dependencies. ### - -Dependencies \xC4 $OutOfDate - MakeDepend \xB6 - -append {MAKEFILE} \xB6 - -ignore "{CIncludes}" \xB6 - -objdir "{ObjDir}" \xB6 - -objext .x \xB6 - {Includes} \xB6 - {SrcFiles} - - diff --git a/vendor/freetype/builds/mac/FreeType.ppc_classic.make.txt b/vendor/freetype/builds/mac/FreeType.ppc_classic.make.txt deleted file mode 100644 index 2550190cbf4..00000000000 --- a/vendor/freetype/builds/mac/FreeType.ppc_classic.make.txt +++ /dev/null @@ -1,213 +0,0 @@ -# File: FreeType.ppc_classic.make -# Target: FreeType.ppc_classic -# Created: Thursday, October 27, 2005 07:42:43 PM - - -MAKEFILE = FreeType.ppc_classic.make -\xA5MondoBuild\xA5 = {MAKEFILE} # Make blank to avoid rebuilds when makefile is modified - -ObjDir = :objs: -Includes = \xB6 - -ansi strict \xB6 - -includes unix \xB6 - -i :include: \xB6 - -i :src: \xB6 - -i :include:freetype:config: - -Sym-PPC = -sym off - -PPCCOptions = \xB6 - -d FT_MACINTOSH=1 \xB6 - -d HAVE_FSSPEC=1 \xB6 - -d HAVE_FSREF=0 \xB6 - -d HAVE_QUICKDRAW_TOOLBOX=1 \xB6 - -d HAVE_QUICKDRAW_CARBON=0 \xB6 - -d HAVE_ATS=0 \xB6 - -d FT2_BUILD_LIBRARY \xB6 - -d FT_CONFIG_CONFIG_H="" \xB6 - -d FT_CONFIG_MODULES_H="" \xB6 - {Includes} {Sym-PPC} - - -### Source Files ### - -SrcFiles = \xB6 - :src:autofit:autofit.c \xB6 - :builds:mac:ftbase.c \xB6 - :src:base:ftbbox.c \xB6 - :src:base:ftbdf.c \xB6 - :src:base:ftbitmap.c \xB6 - :src:base:ftdebug.c \xB6 - :src:base:ftfstype.c \xB6 - :src:base:ftglyph.c \xB6 - :src:base:ftgxval.c \xB6 - :src:base:ftinit.c \xB6 - :src:base:ftmm.c \xB6 - :src:base:ftotval.c \xB6 - :src:base:ftpfr.c \xB6 - :src:base:ftstroke.c \xB6 - :src:base:ftsynth.c \xB6 - :src:base:ftsystem.c \xB6 - :src:base:fttype1.c \xB6 - :src:base:ftwinfnt.c \xB6 - :src:cache:ftcache.c \xB6 - :src:bdf:bdf.c \xB6 - :src:cff:cff.c \xB6 - :src:cid:type1cid.c \xB6 - :src:gxvalid:gxvalid.c \xB6 - :src:gzip:ftgzip.c \xB6 - :src:bzip2:ftbzip2.c \xB6 - :src:lzw:ftlzw.c \xB6 - :src:otvalid:otvalid.c \xB6 - :src:pcf:pcf.c \xB6 - :src:pfr:pfr.c \xB6 - :src:psaux:psaux.c \xB6 - :src:pshinter:pshinter.c \xB6 - :src:psnames:psmodule.c \xB6 - :src:raster:raster.c \xB6 - :src:sfnt:sfnt.c \xB6 - :src:smooth:smooth.c \xB6 - :src:truetype:truetype.c \xB6 - :src:type1:type1.c \xB6 - :src:type42:type42.c \xB6 - :src:winfonts:winfnt.c - - -### Object Files ### - -ObjFiles-PPC = \xB6 - "{ObjDir}autofit.c.x" \xB6 - "{ObjDir}ftbase.c.x" \xB6 - "{ObjDir}ftbbox.c.x" \xB6 - "{ObjDir}ftbdf.c.x" \xB6 - "{ObjDir}ftbitmap.c.x" \xB6 - "{ObjDir}ftdebug.c.x" \xB6 - "{ObjDir}ftfstype.c.x" \xB6 - "{ObjDir}ftglyph.c.x" \xB6 - "{ObjDir}ftgxval.c.x" \xB6 - "{ObjDir}ftinit.c.x" \xB6 - "{ObjDir}ftmm.c.x" \xB6 - "{ObjDir}ftotval.c.x" \xB6 - "{ObjDir}ftpfr.c.x" \xB6 - "{ObjDir}ftstroke.c.x" \xB6 - "{ObjDir}ftsynth.c.x" \xB6 - "{ObjDir}ftsystem.c.x" \xB6 - "{ObjDir}fttype1.c.x" \xB6 - "{ObjDir}ftwinfnt.c.x" \xB6 - "{ObjDir}ftcache.c.x" \xB6 - "{ObjDir}bdf.c.x" \xB6 - "{ObjDir}cff.c.x" \xB6 - "{ObjDir}type1cid.c.x" \xB6 - "{ObjDir}gxvalid.c.x" \xB6 - "{ObjDir}ftgzip.c.x" \xB6 - "{ObjDir}ftbzip2.c.x" \xB6 - "{ObjDir}ftlzw.c.x" \xB6 - "{ObjDir}otvalid.c.x" \xB6 - "{ObjDir}pcf.c.x" \xB6 - "{ObjDir}pfr.c.x" \xB6 - "{ObjDir}psaux.c.x" \xB6 - "{ObjDir}pshinter.c.x" \xB6 - "{ObjDir}psmodule.c.x" \xB6 - "{ObjDir}raster.c.x" \xB6 - "{ObjDir}sfnt.c.x" \xB6 - "{ObjDir}smooth.c.x" \xB6 - "{ObjDir}truetype.c.x" \xB6 - "{ObjDir}type1.c.x" \xB6 - "{ObjDir}type42.c.x" \xB6 - "{ObjDir}winfnt.c.x" - - -### Libraries ### - -LibFiles-PPC = - - -### Default Rules ### - -.c.x \xC4 .c {\xA5MondoBuild\xA5} - {PPCC} {depDir}{default}.c -o {targDir}{default}.c.x {PPCCOptions} - - -### Build Rules ### - -:builds:mac:ftbase.c \xC4\xC4 :src:base:ftbase.c - Duplicate :src:base:ftbase.c :builds:mac:ftbase.c - -"{ObjDir}ftbase.c.x" \xC4\xC4 :builds:mac:ftbase.c - {PPCC} :builds:mac:ftbase.c -o "{ObjDir}ftbase.c.x" \xB6 - -i :builds:mac: \xB6 - -i :src:base: \xB6 - {PPCCOptions} - -FreeType.ppc_classic \xC4\xC4 FreeType.ppc_classic.o - -FreeType.ppc_classic.o \xC4\xC4 {ObjFiles-PPC} {LibFiles-PPC} {\xA5MondoBuild\xA5} - PPCLink \xB6 - -o {Targ} \xB6 - {ObjFiles-PPC} \xB6 - {LibFiles-PPC} \xB6 - {Sym-PPC} \xB6 - -mf -d \xB6 - -t 'XCOF' \xB6 - -c 'MPS ' \xB6 - -xm l - - - -### Required Dependencies ### - -"{ObjDir}autofit.c.x" \xC4 :src:autofit:autofit.c -# "{ObjDir}ftbase.c.x" \xC4 :builds:mac:ftbase.c -"{ObjDir}ftbbox.c.x" \xC4 :src:base:ftbbox.c -"{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}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 -"{ObjDir}ftinit.c.x" \xC4 :src:base:ftinit.c -"{ObjDir}ftmm.c.x" \xC4 :src:base:ftmm.c -"{ObjDir}ftotval.c.x" \xC4 :src:base:ftotval.c -"{ObjDir}ftpfr.c.x" \xC4 :src:base:ftpfr.c -"{ObjDir}ftstroke.c.x" \xC4 :src:base:ftstroke.c -"{ObjDir}ftsynth.c.x" \xC4 :src:base:ftsynth.c -"{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}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 -"{ObjDir}type1cid.c.x" \xC4 :src:cid:type1cid.c -"{ObjDir}gxvalid.c.x" \xC4 :src:gxvalid:gxvalid.c -"{ObjDir}ftgzip.c.x" \xC4 :src:gzip:ftgzip.c -"{ObjDir}ftbzip2.c.x" \xC4 :src:bzip2:ftbzip2.c -"{ObjDir}ftlzw.c.x" \xC4 :src:lzw:ftlzw.c -"{ObjDir}otvalid.c.x" \xC4 :src:otvalid:otvalid.c -"{ObjDir}pcf.c.x" \xC4 :src:pcf:pcf.c -"{ObjDir}pfr.c.x" \xC4 :src:pfr:pfr.c -"{ObjDir}psaux.c.x" \xC4 :src:psaux:psaux.c -"{ObjDir}pshinter.c.x" \xC4 :src:pshinter:pshinter.c -"{ObjDir}psmodule.c.x" \xC4 :src:psnames:psmodule.c -"{ObjDir}raster.c.x" \xC4 :src:raster:raster.c -"{ObjDir}sfnt.c.x" \xC4 :src:sfnt:sfnt.c -"{ObjDir}smooth.c.x" \xC4 :src:smooth:smooth.c -"{ObjDir}truetype.c.x" \xC4 :src:truetype:truetype.c -"{ObjDir}type1.c.x" \xC4 :src:type1:type1.c -"{ObjDir}type42.c.x" \xC4 :src:type42:type42.c -"{ObjDir}winfnt.c.x" \xC4 :src:winfonts:winfnt.c - - - -### Optional Dependencies ### -### Build this target to generate "include file" dependencies. ### - -Dependencies \xC4 $OutOfDate - MakeDepend \xB6 - -append {MAKEFILE} \xB6 - -ignore "{CIncludes}" \xB6 - -objdir "{ObjDir}" \xB6 - -objext .x \xB6 - {Includes} \xB6 - {SrcFiles} - - diff --git a/vendor/freetype/builds/mac/README b/vendor/freetype/builds/mac/README deleted file mode 100644 index 06e3d51da86..00000000000 --- a/vendor/freetype/builds/mac/README +++ /dev/null @@ -1,393 +0,0 @@ -This folder contains - - * Makefile skeletons for Apple MPW (Macintosh's Programmer's Workshop) - - * Python script to generate MPW makefile from skeleton - - * Metrowerks CodeWarrior 9.0 project file in XML format - ------------------------------------------------------------- - -1. What is this ---------------- - -Files in this directory are designed to build FreeType -running on classic MacOS. To build FreeType running on -Mac OS X, build as the system is UNIX. - -However, Mac OS X is most useful to manipulate files in -vanilla FreeType to fit classic MacOS. - -The information about MacOS specific API is written in -appendix of this document. - -2. Requirement --------------- - -You can use MPW: a free-charged developer environment -by Apple, or CodeWarrior: a commercial developer -environment by Metrowerks. GCC for MPW and Symantec -"Think C" are not tested at present. - - - 2-1. Apple MPW - -------------- - - Following C compilers are tested: - - m68k target: Apple SC 8.9.0d3e1 - ppc target: Apple MrC 5.0.0d3c1 - - The final MPW-GM (official release on 1999/Dec) is too - old and cannot compile FreeType, because bundled C - compilers cannot search header files in sub directories. - Updating by the final MPW-PR (pre-release on 2001/Feb) - is required. - - Required files are downloadable from: - - http://macintoshgarden.org/apps/macintosh-programmers-workshop - - Also you can find documents how to update by MPW-PR. - - Python is required to restore MPW makefiles from the - skeletons. Python bundled to Mac OS X is enough. For - classic MacOS, MacPython is available: - - https://homepages.cwi.nl/~jack/macpython/ - - MPW requires all files are typed by resource fork. - ResEdit bundled to MPW is enough. In Mac OS X, - /Developer/Tools/SetFile of DevTool is useful to - manipulate from commandline. - - 2-2. Metrowerks CodeWarrior - --------------------------- - - XML project file is generated and tested by - CodeWarrior 9.0. Older versions are not tested - at all. At present, static library for ppc target - is available in the project file. - - -3. How to build ---------------- - - 3-1. Apple MPW - -------------- - Detailed building procedure by Apple MPW is - described in following. - - 3-1-1. Generate MPW makefiles from the skeletons - ------------------------------------------------ - - Here are 4 skeletons for following targets are - included. - - - FreeType.m68k_far.make.txt - Ancient 32bit binary executable format for - m68k MacOS: System 6, with 32bit addressing - mode (far-pointer-model) So-called "Toolbox" - API is used. - - - FreeType.m68k_cfm.make.txt - CFM binary executable format for m68k MacOS: - System 7. So-called "Toolbox" API is used. - - - FreeType.ppc_classic.make.txt - CFM binary executable format for ppc MacOS: - System 7, MacOS 8, MacOS 9. So-called "Toolbox" - API is used. - - - FreeType.ppc_carbon.make.txt - CFM binary executable format for ppc MacOS: - MacOS 9. Carbon API is used. - - At present, static library is only supported, - although targets except of m68k_far are capable - to use shared library. - - MPW makefile syntax uses 8bit characters. To keep - from violating them during version control, here - we store skeletons in pure ASCII format. You must - generate MPW makefile by Python script ascii2mpw.py. - - In Mac OS X terminal, you can convert as: - - python builds/mac/ascii2mpw.py \ - < builds/mac/FreeType.m68k_far.make.txt \ - > FreeType.m68k_far.make - - The skeletons are designed to use in the top - directory where there are builds, include, src etc. - You must name the generated MPW makefile by removing - ".txt" from source skeleton name. - - 3-1-2. Add resource forks to related files - ------------------------------------------ - - MPW's Make and C compilers cannot recognize files - without resource fork. You have to add resource - fork to the files that MPW uses. In Mac OS X - terminal of the system, you can do as: - - find . -name '*.[ch]' -exec \ - /Developer/Tools/SetFile -a l -c "MPS " -t TEXT \{\} \; - - find . -name '*.make' -exec \ - /Developer/Tools/SetFile -a l -c "MPS " -t TEXT \{\} \; - - - 3-1-3. Open MPW shell and build - ------------------------------- - - Open MPW shell and go to the top directory that - FreeType sources are extracted (MPW makefile must - be located in there), from "Set Directory" in - "Directory" menu. - - Choose "Build" from "Build" menu, and type the - name of project by removing ".make" from MPW - makefile, as: FreeType.m68k_far - - If building is successfully finished, you can find - built library in objs/ directory. - - - 3-2. Metrowerks CodeWarrior - --------------------------- - - Detailed building procedure by Metrowerks - CodeWarrior (CW) 9.0 is described in following. - - 3-2-1. Import XML project file - ------------------------------ - - CW XML project file is not ready for double- - click. Start CodeWarrior IDE, and choose - "Import project" in "File" menu. Choose XML - project file: builds/mac/ftlib.prj.xml. - In next, you will be asked where to save CW - native project file: you must choose - "builds/mac/ftlib.prj". The project file is - designed with relative path from there. After - CW native project file is generated, it is - automatically loaded, small project window - titled "ftlib.prj" is displayed. - - 3-2-2. Building - --------------- - Choose "Make" from "Project" menu. If building - is successfully finished, you can find built - library at objs/FreeTypeLib. - -4. TODO -------- - - 4-1. All modules should be included - ----------------------------------- - - At present, MPW makefiles and CW project file are - just updated versions of these by Leonard. Some - modules are added after the last maintenance, they - are not included. - - 4-2. Working test with ftdemos - ------------------------------ - - At present, MPW makefiles and CW project file can - build FreeType for classic MacOS. But their working - behaviours are not tested at all. Building ftdemos - for classic MacOS and working test is required. - - -APPENDIX I ----------- - - A-1. Framework dependencies - --------------------------- - - src/base/ftmac.c adds two Mac-specific features to - FreeType. These features are based on MacOS libraries. - - * accessing resource-fork font - The fonts for classic MacOS store their graphical data - in resource forks which cannot be accessed via ANSI C - functions. FreeType2 provides functions to handle such - resource fork fonts, they are based on File Manager - framework of MacOS. In addition, HFS and HFS+ file - system driver of Linux is supported. Following - functions are for this purpose. - - FT_New_Face_From_Resource() - FT_New_Face_From_FSSpec() - FT_New_Face_From_FSRef() - - * resolving font name to font file - The font menu of MacOS application prefers font name - written in FOND resource than sfnt resource. FreeType2 - provides functions to find font file by name in MacOS - application, they are based on QuickDraw Font Manager - and Apple Type Service framework of MacOS. - - FT_GetFile_From_Mac_Name() - FT_GetFile_From_Mac_ATS_Name() - - Working functions for each MacOS are summarized as - following. - - upto MacOS 6: - not tested (you have to obtain MPW 2.x) - - MacOS 7.x, 8.x, 9.x (without CarbonLib): - FT_GetFile_From_Mac_Name() - FT_New_Face_From_Resource() - FT_New_Face_From_FSSpec() - - MacOS 9.x (with CarbonLib): - FT_GetFile_From_Mac_Name() - FT_New_Face_From_Resource() - FT_New_Face_From_FSSpec() - FT_New_Face_From_FSRef() - - Mac OS X upto 10.4.x: - FT_GetFile_From_Mac_Name() deprecated - FT_New_Face_From_FSSpec() deprecated - FT_GetFile_From_Mac_ATS_Name() deprecated? - FT_New_Face_From_FSRef() - - A-2. Deprecated Functions - ------------------------- - - A-2-1. FileManager - ------------------ - - For convenience to write MacOS application, ftmac.c - provides functions to specify a file by FSSpec and FSRef, - because the file identification pathname had ever been - unrecommended method in MacOS programming. - - Toward to MacOS X 10.4 & 5, Carbon functions using FSSpec - datatype is noticed as deprecated, and recommended to - migrate to FSRef datatype. The big differences of FSRef - against FSSpec are explained in Apple TechNotes 2078. - - https://developer.apple.com/library/archive/technotes/tn2078/ - - - filename length: the max length of file - name of FSRef is 255 chars (it is limit of HFS+), - that of FSSpec is 31 chars (it is limit of HFS). - - - filename encoding: FSSpec is localized by - legacy encoding for each language system, - FSRef is Unicode enabled. - - A-2-2. FontManager - ------------------ - - Following functions receive QuickDraw fontname: - - FT_GetFile_From_Mac_Name() - - QuickDraw is deprecated and replaced by Quartz - since Mac OS X 10.4. They are still kept for - backward compatibility. By undefinition of - HAVE_QUICKDRAW in building, you can change these - functions to return FT_Err_Unimplemented always. - - Replacement functions are added for migration. - - FT_GetFile_From_Mac_ATS_Name() - - They are usable on Mac OS X only. On older systems, - these functions return FT_Err_Unimplemented always. - - The detailed incompatibilities and possibility - of FontManager emulation without QuickDraw is - explained in - - http://gyvern.ipc.hiroshima-u.ac.jp/~mpsuzuki/ats_benchmark.html - - A-3. Framework Availabilities - ----------------------------- - - The framework of MacOS are often revised, especially - when new format of binary executable is introduced. - Following table is the minimum version of frameworks - to use functions used in FreeType2. The table is - extracted from MPW header files for assembly language. - - *** NOTE *** - The conditional definition of available data type - in MPW compiler is insufficient. You can compile - program using FSRef data type for older systems - (MacOS 7, 8) that don't know FSRef data type. - - - +-------------------+-----------------------------+ - CPU | mc680x0 | PowerPC | - +---------+---------+---------+---------+---------+ - Binary Executable Format | Classic | 68K-CFM | CFM | CFM | Mach-O | - +---------+---------+---------+---------+---------+ - Framework API | Toolbox | Toolbox | Toolbox | Carbon | Carbon | - +---------+---------+---------+---------+---------+ - - +---------+---------+---------+---------+---------+ - | ?(*) |Interface|Interface|CarbonLib|Mac OS X | - | |Lib |Lib | | | -* Files.h +---------+---------+---------+---------+---------+ -PBGetFCBInfoSync() | o | 7.1- | 7.1- | 1.0- | o | -FSMakeFSSpec() | o | 7.1- | 7.1- | 1.0- | o | -FSGetForkCBInfo() | o | (**) | 9.0- | 1.0- | o | -FSpMakeFSRef() | o | (**) | 9.0- | 1.0- | o | -FSGetCatalogInfo() | o | (**) | 9.0- | 1.0- | -10.3 | -FSPathMakeRef() | x | x | x | 1.1- | -10.3 | - +---------+---------+---------+---------+---------+ - - +---------+---------+---------+---------+---------+ - | ?(*) |Font |Font |CarbonLib|Mac OS X | - | |Manager |Manager | | | -* Fonts.h +---------+---------+---------+---------+---------+ -FMCreateFontFamilyIterator() | x | x | 9.0- | 1.0- | -10.3 | -FMDisposeFontFamilyIterator() | x | x | 9.0- | 1.0- | -10.3 | -FMGetNextFontFamily() | x | x | 9.0- | 1.0- | -10.3 | -FMGetFontFamilyName() | x | x | 9.0- | 1.0- | -10.3 | -FMCreateFontFamilyInstanceIterator() | x | x | 9.0- | 1.0- | -10.3 | -FMDisposeFontFamilyInstanceIterator() | x | x | 9.0- | 1.0- | -10.3 | -FMGetNextFontFamilyInstance() | x | x | 9.0- | 1.0- | -10.3 | - +---------+---------+---------+---------+---------+ - - +---------+---------+---------+---------+---------+ - | - | - | - |CarbonLib|Mac OS X | -* ATSFont.h (***) +---------+---------+---------+---------+---------+ -ATSFontFindFromName() | x | x | x | x | o | -ATSFontGetFileSpecification() | x | x | x | x | o | - +---------+---------+---------+---------+---------+ - - (*) - In the "Classic": the original binary executable - format, these framework functions are directly - transformed to MacOS system call. Therefore, the - exact availability should be checked by running - system. - - (**) - InterfaceLib is bundled to MacOS and its version - is usually equal to MacOS. There's no separate - update for InterfaceLib. It is supposed that - there's no InterfaceLib 9.x for m68k platforms. - In fact, these functions are FSRef dependent. - - (***) - ATSUI framework is available on ATSUnicode 8.5 on - ppc Toolbox CFM, CarbonLib 1.0 too. But its base: - ATS font manager is not published in these versions. - ------------------------------------------------------------- -Last update: 2013-Nov-03. - -Currently maintained by - suzuki toshiya, -Originally prepared by - Leonard Rosenthol, - Just van Rossum, diff --git a/vendor/freetype/builds/mac/ascii2mpw.py b/vendor/freetype/builds/mac/ascii2mpw.py deleted file mode 100644 index ad32b219772..00000000000 --- a/vendor/freetype/builds/mac/ascii2mpw.py +++ /dev/null @@ -1,24 +0,0 @@ -#!/usr/bin/env python -import sys -import string - -if len( sys.argv ) == 1 : - for asc_line in sys.stdin.readlines(): - mpw_line = string.replace(asc_line, "\\xA5", "\245") - mpw_line = string.replace(mpw_line, "\\xB6", "\266") - mpw_line = string.replace(mpw_line, "\\xC4", "\304") - mpw_line = string.replace(mpw_line, "\\xC5", "\305") - mpw_line = string.replace(mpw_line, "\\xFF", "\377") - mpw_line = string.replace(mpw_line, "\n", "\r") - mpw_line = string.replace(mpw_line, "\\n", "\n") - sys.stdout.write(mpw_line) -elif sys.argv[1] == "-r" : - for mpw_line in sys.stdin.readlines(): - asc_line = string.replace(mpw_line, "\n", "\\n") - asc_line = string.replace(asc_line, "\r", "\n") - asc_line = string.replace(asc_line, "\245", "\\xA5") - asc_line = string.replace(asc_line, "\266", "\\xB6") - asc_line = string.replace(asc_line, "\304", "\\xC4") - asc_line = string.replace(asc_line, "\305", "\\xC5") - asc_line = string.replace(asc_line, "\377", "\\xFF") - sys.stdout.write(asc_line) diff --git a/vendor/freetype/builds/mac/freetype-Info.plist b/vendor/freetype/builds/mac/freetype-Info.plist deleted file mode 100644 index 344e5ac0b3a..00000000000 --- a/vendor/freetype/builds/mac/freetype-Info.plist +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - CFBundleDevelopmentRegion - English - - CFBundleExecutable - freetype - - CFBundleGetInfoString - FreeType ${PROJECT_VERSION} - - CFBundleInfoDictionaryVersion - 6.0 - - CFBundleName - FreeType - - CFBundlePackageType - FMWK - - CFBundleShortVersionString - ${PROJECT_VERSION} - - CFBundleSignature - ???? - - CFBundleVersion - ${PROJECT_VERSION} - - - diff --git a/vendor/freetype/builds/mac/ftlib.prj.xml b/vendor/freetype/builds/mac/ftlib.prj.xml deleted file mode 100644 index cbbc45ee55c..00000000000 --- a/vendor/freetype/builds/mac/ftlib.prj.xml +++ /dev/null @@ -1,1194 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -]> - - - - - FreeTypeLib - - - - UserSourceTrees - - - AlwaysSearchUserPathstrue - InterpretDOSAndUnixPathstrue - RequireFrameworkStyleIncludesfalse - SourceRelativeIncludesfalse - UserSearchPaths - - SearchPath - Path: - PathFormatMacOS - PathRootProject - - Recursivetrue - FrameworkPathfalse - HostFlagsAll - - - SearchPath - Path:::include: - PathFormatMacOS - PathRootProject - - Recursivetrue - FrameworkPathfalse - HostFlagsAll - - - SearchPath - Path:::src: - PathFormatMacOS - PathRootProject - - Recursivetrue - FrameworkPathfalse - HostFlagsAll - - - SearchPath - Path:: - PathFormatMacOS - PathRootProject - - Recursivetrue - FrameworkPathfalse - HostFlagsAll - - - SystemSearchPaths - - SearchPath - Path: - PathFormatMacOS - PathRootCodeWarrior - - Recursivetrue - FrameworkPathfalse - HostFlagsAll - - - - - MWRuntimeSettings_WorkingDirectory - MWRuntimeSettings_CommandLine - MWRuntimeSettings_HostApplication - Path - PathFormatGeneric - PathRootAbsolute - - MWRuntimeSettings_EnvVars - - - LinkerMacOS PPC Linker - PreLinker - PostLinker - TargetnameFreeTypeLib - OutputDirectory - Path:::objs: - PathFormatMacOS - PathRootProject - - SaveEntriesUsingRelativePathsfalse - - - FileMappings - - FileTypeAPPL - FileExtension - Compiler - EditLanguage - Precompilefalse - Launchabletrue - ResourceFiletrue - IgnoredByMakefalse - - - FileTypeAppl - FileExtension - Compiler - EditLanguage - Precompilefalse - Launchabletrue - ResourceFiletrue - IgnoredByMakefalse - - - FileTypeMMLB - FileExtension - CompilerLib Import PPC - EditLanguage - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeMPLF - FileExtension - CompilerLib Import PPC - EditLanguage - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeMWCD - FileExtension - Compiler - EditLanguage - Precompilefalse - Launchabletrue - ResourceFiletrue - IgnoredByMakefalse - - - FileTypeRSRC - FileExtension - Compiler - EditLanguage - Precompilefalse - Launchabletrue - ResourceFiletrue - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.bh - CompilerBalloon Help - EditLanguage - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.c - CompilerMW C/C++ PPC - EditLanguageC/C++ - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.c++ - CompilerMW C/C++ PPC - EditLanguageC/C++ - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.cc - CompilerMW C/C++ PPC - EditLanguageC/C++ - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.cp - CompilerMW C/C++ PPC - EditLanguageC/C++ - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.cpp - CompilerMW C/C++ PPC - EditLanguageC/C++ - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.exp - Compiler - EditLanguage - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.h - CompilerMW C/C++ PPC - EditLanguageC/C++ - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMaketrue - - - FileTypeTEXT - FileExtension.p - CompilerMW Pascal PPC - EditLanguage - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.pas - CompilerMW Pascal PPC - EditLanguage - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.pch - CompilerMW C/C++ PPC - EditLanguageC/C++ - Precompiletrue - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.pch++ - CompilerMW C/C++ PPC - EditLanguageC/C++ - Precompiletrue - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.ppu - CompilerMW Pascal PPC - EditLanguage - Precompiletrue - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.r - CompilerRez - EditLanguageRez - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.s - CompilerPPCAsm - EditLanguage - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeXCOF - FileExtension - CompilerXCOFF Import PPC - EditLanguage - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypedocu - FileExtension - Compiler - EditLanguage - Precompilefalse - Launchabletrue - ResourceFiletrue - IgnoredByMakefalse - - - FileTypersrc - FileExtension - Compiler - EditLanguage - Precompilefalse - Launchabletrue - ResourceFiletrue - IgnoredByMakefalse - - - FileTypeshlb - FileExtension - CompilerPEF Import PPC - EditLanguage - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypestub - FileExtension - CompilerPEF Import PPC - EditLanguage - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileExtension.doc - Compiler - EditLanguage - Precompilefalse - Launchabletrue - ResourceFilefalse - IgnoredByMaketrue - - - FileExtension.o - CompilerXCOFF Import PPC - EditLanguage - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileExtension.ppob - Compiler - EditLanguage - Precompilefalse - Launchabletrue - ResourceFiletrue - IgnoredByMakefalse - - - FileExtension.rsrc - Compiler - EditLanguage - Precompilefalse - Launchabletrue - ResourceFiletrue - IgnoredByMakefalse - - - - - CacheModDatestrue - DumpBrowserInfofalse - CacheSubprojectstrue - UseThirdPartyDebuggerfalse - BrowserGenerator1 - DebuggerAppPath - Path - PathFormatGeneric - PathRootAbsolute - - DebuggerCmdLineArgs - DebuggerWorkingDir - Path - PathFormatGeneric - PathRootAbsolute - - CodeCompletionPrefixFileNameMacHeaders.c - CodeCompletionMacroFileNameMacOS_Carbon_C++_Macros.h - - - ConsoleEncoding0 - LogSystemMessagestrue - AutoTargetDLLsfalse - StopAtWatchpointstrue - PauseWhileRunningfalse - PauseInterval5 - PauseUIFlags0 - AltExePath - Path - PathFormatGeneric - PathRootAbsolute - - StopAtTempBPOnLaunchtrue - CacheSymbolicstrue - TempBPFunctionNamemain - TempBPType0 - - - Enabledfalse - ConnectionName - DownloadPath - LaunchRemoteAppfalse - RemoteAppPath - CoreID0 - JTAGClockSpeed8000 - IsMultiCorefalse - OSDownloadfalse - UseGlobalOSDownloadfalse - OSDownloadConnectionName - OSDownloadPath - AltDownloadfalse - AltDownloadConnectionName - - - OtherExecutables - - - AnalyzerConnectionName - - - CustomColor1 - Red0 - Green32767 - Blue0 - - CustomColor2 - Red0 - Green32767 - Blue0 - - CustomColor3 - Red0 - Green32767 - Blue0 - - CustomColor4 - Red0 - Green32767 - Blue0 - - - - MWFrontEnd_C_cplusplus0 - MWFrontEnd_C_checkprotos1 - MWFrontEnd_C_arm0 - MWFrontEnd_C_trigraphs0 - MWFrontEnd_C_onlystdkeywords0 - MWFrontEnd_C_enumsalwaysint0 - MWFrontEnd_C_ansistrict1 - MWFrontEnd_C_wchar_type1 - MWFrontEnd_C_enableexceptions1 - MWFrontEnd_C_dontreusestrings0 - MWFrontEnd_C_poolstrings0 - MWFrontEnd_C_dontinline0 - MWFrontEnd_C_useRTTI1 - MWFrontEnd_C_unsignedchars0 - MWFrontEnd_C_autoinline0 - MWFrontEnd_C_booltruefalse1 - MWFrontEnd_C_inlinelevel0 - MWFrontEnd_C_ecplusplus0 - MWFrontEnd_C_defer_codegen0 - MWFrontEnd_C_templateparser0 - MWFrontEnd_C_c990 - MWFrontEnd_C_bottomupinline1 - MWFrontEnd_C_gcc_extensions0 - MWFrontEnd_C_instance_manager0 - - - C_CPP_Preprocessor_EmitFiletrue - C_CPP_Preprocessor_EmitLinefalse - C_CPP_Preprocessor_EmitFullPathfalse - C_CPP_Preprocessor_KeepCommentsfalse - C_CPP_Preprocessor_PCHUsesPrefixTextfalse - C_CPP_Preprocessor_EmitPragmastrue - C_CPP_Preprocessor_KeepWhiteSpacefalse - C_CPP_Preprocessor_MultiByteEncodingencASCII_Unicode - C_CPP_Preprocessor_PrefixText/* settings imported from old "C/C++ Language" panel */ - -#if !__option(precompile) -#include "ftoption.h" /* was "Prefix file" */ -#endif - - - - MWWarning_C_warn_illpragma0 - MWWarning_C_warn_emptydecl0 - MWWarning_C_warn_possunwant0 - MWWarning_C_warn_unusedvar1 - MWWarning_C_warn_unusedarg1 - MWWarning_C_warn_extracomma0 - MWWarning_C_pedantic0 - MWWarning_C_warningerrors0 - MWWarning_C_warn_hidevirtual0 - MWWarning_C_warn_implicitconv0 - MWWarning_C_warn_notinlined0 - MWWarning_C_warn_structclass0 - MWWarning_C_warn_missingreturn0 - MWWarning_C_warn_no_side_effect0 - MWWarning_C_warn_resultnotused0 - MWWarning_C_warn_padding0 - MWWarning_C_warn_impl_i2f_conv0 - MWWarning_C_warn_impl_f2i_conv0 - MWWarning_C_warn_impl_s2u_conv0 - MWWarning_C_warn_illtokenpasting0 - MWWarning_C_warn_filenamecaps0 - MWWarning_C_warn_filenamecapssystem0 - MWWarning_C_warn_undefmacro0 - MWWarning_C_warn_ptrintconv0 - - - MWMerge_MacOS_projectTypeApplication - MWMerge_MacOS_outputNameMerge Out - MWMerge_MacOS_outputCreator???? - MWMerge_MacOS_outputTypeAPPL - MWMerge_MacOS_suppressWarning0 - MWMerge_MacOS_copyFragments1 - MWMerge_MacOS_copyResources1 - MWMerge_MacOS_flattenResource0 - MWMerge_MacOS_flatFileNamea.rsrc - MWMerge_MacOS_flatFileOutputPath - Path: - PathFormatMacOS - PathRootProject - - MWMerge_MacOS_skipResources - DLGX - ckid - Proj - WSPC - - - - FileLockedfalse - ResourcesMapIsReadOnlyfalse - PrinterDriverIsMultiFinderCompatiblefalse - Invisiblefalse - HasBundlefalse - NameLockedfalse - Stationeryfalse - HasCustomIconfalse - Sharedfalse - HasBeenInitedfalse - Label0 - Comments - HasCustomBadgefalse - HasRoutingInfofalse - - - MWCodeGen_PPC_structalignmentPPC_mw - MWCodeGen_PPC_tracebacktablesNone - MWCodeGen_PPC_processorGeneric - MWCodeGen_PPC_function_align4 - MWCodeGen_PPC_tocdata1 - MWCodeGen_PPC_largetoc0 - MWCodeGen_PPC_profiler0 - MWCodeGen_PPC_vectortocdata0 - MWCodeGen_PPC_poolconst0 - MWCodeGen_PPC_peephole0 - MWCodeGen_PPC_readonlystrings0 - MWCodeGen_PPC_linkerpoolsstrings0 - MWCodeGen_PPC_volatileasm0 - MWCodeGen_PPC_schedule0 - MWCodeGen_PPC_altivec0 - MWCodeGen_PPC_altivec_move_block0 - MWCodeGen_PPC_strictIEEEfp0 - MWCodeGen_PPC_fpcontract1 - MWCodeGen_PPC_genfsel0 - MWCodeGen_PPC_orderedfpcmp0 - - - MWCodeGen_MachO_structalignmentPPC_mw - MWCodeGen_MachO_profiler_enumOff - MWCodeGen_MachO_processorGeneric - MWCodeGen_MachO_function_align4 - MWCodeGen_MachO_common0 - MWCodeGen_MachO_boolisint0 - MWCodeGen_MachO_peephole1 - MWCodeGen_MachO_readonlystrings0 - MWCodeGen_MachO_linkerpoolsstrings1 - MWCodeGen_MachO_volatileasm0 - MWCodeGen_MachO_schedule0 - MWCodeGen_MachO_altivec0 - MWCodeGen_MachO_vecmove0 - MWCodeGen_MachO_fp_ieee_strict0 - MWCodeGen_MachO_fpcontract1 - MWCodeGen_MachO_genfsel0 - MWCodeGen_MachO_fp_cmps_ordered0 - - - MWDisassembler_PPC_showcode1 - MWDisassembler_PPC_extended1 - MWDisassembler_PPC_mix0 - MWDisassembler_PPC_nohex0 - MWDisassembler_PPC_showdata1 - MWDisassembler_PPC_showexceptions1 - MWDisassembler_PPC_showsym0 - MWDisassembler_PPC_shownames1 - - - GlobalOptimizer_PPC_optimizationlevelLevel0 - GlobalOptimizer_PPC_optforSpeed - - - MWLinker_PPC_linksym1 - MWLinker_PPC_symfullpath1 - MWLinker_PPC_linkmap0 - MWLinker_PPC_nolinkwarnings0 - MWLinker_PPC_dontdeadstripinitcode0 - MWLinker_PPC_permitmultdefs0 - MWLinker_PPC_linkmodeFast - MWLinker_PPC_code_foldingNone - MWLinker_PPC_initname - MWLinker_PPC_mainname - MWLinker_PPC_termname - - - MWLinker_MacOSX_linksym1 - MWLinker_MacOSX_symfullpath0 - MWLinker_MacOSX_nolinkwarnings0 - MWLinker_MacOSX_linkmap0 - MWLinker_MacOSX_dontdeadstripinitcode0 - MWLinker_MacOSX_permitmultdefs0 - MWLinker_MacOSX_use_objectivec_semantics0 - MWLinker_MacOSX_strip_debug_symbols0 - MWLinker_MacOSX_split_segs0 - MWLinker_MacOSX_report_msl_overloads0 - MWLinker_MacOSX_objects_follow_linkorder0 - MWLinker_MacOSX_linkmodeNormal - MWLinker_MacOSX_exportsReferencedGlobals - MWLinker_MacOSX_sortcodeNone - MWLinker_MacOSX_mainname - MWLinker_MacOSX_initname - MWLinker_MacOSX_code_foldingNone - MWLinker_MacOSX_stabsgenNone - - - MWProject_MacOSX_typeExecutable - MWProject_MacOSX_outfile - MWProject_MacOSX_filecreator???? - MWProject_MacOSX_filetypeMEXE - MWProject_MacOSX_vmaddress4096 - MWProject_MacOSX_usedefaultvmaddr1 - MWProject_MacOSX_flatrsrc0 - MWProject_MacOSX_flatrsrcfilename - MWProject_MacOSX_flatrsrcoutputdir - Path: - PathFormatMacOS - PathRootProject - - MWProject_MacOSX_installpath./ - MWProject_MacOSX_dont_prebind0 - MWProject_MacOSX_flat_namespace0 - MWProject_MacOSX_frameworkversionA - MWProject_MacOSX_currentversion0 - MWProject_MacOSX_flat_oldimpversion0 - MWProject_MacOSX_AddrMode1 - - - MWPEF_exportsNone - MWPEF_libfolder0 - MWPEF_sortcodeNone - MWPEF_expandbss0 - MWPEF_sharedata0 - MWPEF_olddefversion0 - MWPEF_oldimpversion0 - MWPEF_currentversion0 - MWPEF_fragmentname - MWPEF_collapsereloads0 - - - MWProject_PPC_typeLibrary - MWProject_PPC_outfileFreeTypeLib - MWProject_PPC_filecreator???? - MWProject_PPC_filetype???? - MWProject_PPC_size0 - MWProject_PPC_minsize0 - MWProject_PPC_stacksize0 - MWProject_PPC_flags0 - MWProject_PPC_symfilename - MWProject_PPC_rsrcname - MWProject_PPC_rsrcheaderNative - MWProject_PPC_rsrctype???? - MWProject_PPC_rsrcid0 - MWProject_PPC_rsrcflags0 - MWProject_PPC_rsrcstore0 - MWProject_PPC_rsrcmerge0 - MWProject_PPC_flatrsrc0 - MWProject_PPC_flatrsrcoutputdir - Path: - PathFormatMacOS - PathRootProject - - MWProject_PPC_flatrsrcfilename - - - MWAssembler_PPC_auxheader0 - MWAssembler_PPC_symmodeMac - MWAssembler_PPC_dialectPPC - MWAssembler_PPC_prefixfile - MWAssembler_PPC_typecheck0 - MWAssembler_PPC_warnings0 - MWAssembler_PPC_casesensitive0 - - - PList_OutputTypeFile - PList_OutputEncodingUTF-8 - PList_PListVersion1.0 - PList_Prefix - PList_FileFilenameInfo.plist - PList_FileDirectory - Path: - PathFormatMacOS - PathRootProject - - PList_ResourceTypeplst - PList_ResourceID0 - PList_ResourceName - - - MWRez_Language_maxwidth80 - MWRez_Language_scriptRoman - MWRez_Language_alignmentAlign1 - MWRez_Language_filtermodeFilterSkip - MWRez_Language_suppresswarnings0 - MWRez_Language_escapecontrolchars1 - MWRez_Language_prefixname - MWRez_Language_filteredtypes'CODE' 'DATA' 'PICT' - - - - Name - ftsystem.c - MacOS - Text - Debug - - - Name - ftbase.c - MacOS - Text - Debug - - - Name - ftinit.c - MacOS - Text - Debug - - - Name - sfnt.c - MacOS - Text - Debug - - - Name - psnames.c - MacOS - Text - Debug - - - Name - ftdebug.c - MacOS - Text - Debug - - - Name - type1cid.c - MacOS - Text - Debug - - - Name - cff.c - MacOS - Text - Debug - - - Name - smooth.c - MacOS - Text - Debug - - - Name - winfnt.c - MacOS - Text - Debug - - - Name - truetype.c - MacOS - Text - Debug - - - Name - ftmac.c - MacOS - Text - Debug - - - Name - psaux.c - MacOS - Text - - - - Name - ftcache.c - MacOS - Text - - - - Name - ftglyph.c - MacOS - Text - - - - Name - type1.c - MacOS - Text - Debug - - - Name - pshinter.c - MacOS - Text - Debug - - - Name - pcf.c - MacOS - Text - Debug - - - Name - ftraster.c - MacOS - Text - Debug - - - Name - ftrend1.c - MacOS - Text - Debug - - - - - Name - ftsystem.c - MacOS - - - Name - ftbase.c - MacOS - - - Name - ftinit.c - MacOS - - - Name - sfnt.c - MacOS - - - Name - psnames.c - MacOS - - - Name - ftdebug.c - MacOS - - - Name - type1cid.c - MacOS - - - Name - cff.c - MacOS - - - Name - smooth.c - MacOS - - - Name - winfnt.c - MacOS - - - Name - truetype.c - MacOS - - - Name - ftmac.c - MacOS - - - Name - psaux.c - MacOS - - - Name - ftcache.c - MacOS - - - Name - ftglyph.c - MacOS - - - Name - type1.c - MacOS - - - Name - pshinter.c - MacOS - - - Name - pcf.c - MacOS - - - Name - ftraster.c - MacOS - - - Name - ftrend1.c - MacOS - - - - - - - FreeTypeLib - - - - base - - FreeTypeLib - Name - ftbase.c - MacOS - - - FreeTypeLib - Name - ftdebug.c - MacOS - - - FreeTypeLib - Name - ftglyph.c - MacOS - - - FreeTypeLib - Name - ftinit.c - MacOS - - - FreeTypeLib - Name - ftsystem.c - MacOS - - - FreeTypeLib - Name - ftmac.c - MacOS - - - ftmodules - - FreeTypeLib - Name - cff.c - MacOS - - - FreeTypeLib - Name - ftcache.c - MacOS - - - FreeTypeLib - Name - psaux.c - MacOS - - - FreeTypeLib - Name - psnames.c - MacOS - - - FreeTypeLib - Name - sfnt.c - MacOS - - - FreeTypeLib - Name - smooth.c - MacOS - - - FreeTypeLib - Name - truetype.c - MacOS - - - FreeTypeLib - Name - type1cid.c - MacOS - - - FreeTypeLib - Name - winfnt.c - MacOS - - - FreeTypeLib - Name - type1.c - MacOS - - - FreeTypeLib - Name - pshinter.c - MacOS - - - FreeTypeLib - Name - pcf.c - MacOS - - - FreeTypeLib - Name - ftraster.c - MacOS - - - FreeTypeLib - Name - ftrend1.c - MacOS - - - - - diff --git a/vendor/freetype/builds/mac/ftmac.c b/vendor/freetype/builds/mac/ftmac.c deleted file mode 100644 index e39850680cd..00000000000 --- a/vendor/freetype/builds/mac/ftmac.c +++ /dev/null @@ -1,1542 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftmac.c */ -/* */ -/* Mac FOND support. Written by just@letterror.com. */ -/* Heavily Fixed by mpsuzuki, George Williams and Sean McBride */ -/* */ -/* Copyright (C) 1996-2025 by */ -/* Just van Rossum, David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - - /* - Notes - - Mac suitcase files can (and often do!) contain multiple fonts. To - support this I use the face_index argument of FT_(Open|New)_Face() - functions, and pretend the suitcase file is a collection. - - Warning: fbit and NFNT bitmap resources are not supported yet. In old - sfnt fonts, bitmap glyph data for each size is stored in each `NFNT' - resources instead of the `bdat' table in the sfnt resource. Therefore, - face->num_fixed_sizes is set to 0, because bitmap data in `NFNT' - resource is unavailable at present. - - The Mac FOND support works roughly like this: - - - Check whether the offered stream points to a Mac suitcase file. This - is done by checking the file type: it has to be 'FFIL' or 'tfil'. The - stream that gets passed to our init_face() routine is a stdio stream, - which isn't usable for us, since the FOND resources live in the - resource fork. So we just grab the stream->pathname field. - - - Read the FOND resource into memory, then check whether there is a - TrueType font and/or(!) a Type 1 font available. - - - If there is a Type 1 font available (as a separate `LWFN' file), read - its data into memory, massage it slightly so it becomes PFB data, wrap - it into a memory stream, load the Type 1 driver and delegate the rest - of the work to it by calling FT_Open_Face(). (XXX TODO: after this - has been done, the kerning data from the FOND resource should be - appended to the face: On the Mac there are usually no AFM files - available. However, this is tricky since we need to map Mac char - codes to ps glyph names to glyph ID's...) - - - If there is a TrueType font (an `sfnt' resource), read it into memory, - wrap it into a memory stream, load the TrueType driver and delegate - the rest of the work to it, by calling FT_Open_Face(). - - - Some suitcase fonts (notably Onyx) might point the `LWFN' file to - itself, even though it doesn't contains `POST' resources. To handle - this special case without opening the file an extra time, we just - ignore errors from the `LWFN' and fallback to the `sfnt' if both are - available. - */ - - -#include -#include -#include -#include "ftbase.h" - -#if defined( __GNUC__ ) || defined( __IBMC__ ) - /* This is for Mac OS X. Without redefinition, OS_INLINE */ - /* expands to `static inline' which doesn't survive the */ - /* -ansi compilation flag of GCC. */ -#if !HAVE_ANSI_OS_INLINE -#undef OS_INLINE -#define OS_INLINE static __inline__ -#endif -#include -#include -#include /* PATH_MAX */ -#else -#include -#include -#include -#include -#include -#include -#endif - -#ifndef PATH_MAX -#define PATH_MAX 1024 /* same with Mac OS X's syslimits.h */ -#endif - -#if defined( __MWERKS__ ) && !TARGET_RT_MAC_MACHO -#include -#endif - -#define FT_DEPRECATED_ATTRIBUTE - -#include - - /* undefine blocking-macros in ftmac.h */ -#undef FT_GetFile_From_Mac_Name -#undef FT_GetFile_From_Mac_ATS_Name -#undef FT_New_Face_From_FOND -#undef FT_New_Face_From_FSSpec -#undef FT_New_Face_From_FSRef - - - /* FSSpec functions are deprecated since Mac OS X 10.4 */ -#ifndef HAVE_FSSPEC -#if TARGET_API_MAC_OS8 || TARGET_API_MAC_CARBON -#define HAVE_FSSPEC 1 -#else -#define HAVE_FSSPEC 0 -#endif -#endif - - /* most FSRef functions were introduced since Mac OS 9 */ -#ifndef HAVE_FSREF -#if TARGET_API_MAC_OSX -#define HAVE_FSREF 1 -#else -#define HAVE_FSREF 0 -#endif -#endif - - /* QuickDraw is deprecated since Mac OS X 10.4 */ -#ifndef HAVE_QUICKDRAW_CARBON -#if TARGET_API_MAC_OS8 || TARGET_API_MAC_CARBON -#define HAVE_QUICKDRAW_CARBON 1 -#else -#define HAVE_QUICKDRAW_CARBON 0 -#endif -#endif - - /* AppleTypeService is available since Mac OS X */ -#ifndef HAVE_ATS -#if TARGET_API_MAC_OSX -#define HAVE_ATS 1 -#ifndef kATSOptionFlagsUnRestrictedScope /* since Mac OS X 10.1 */ -#define kATSOptionFlagsUnRestrictedScope kATSOptionFlagsDefault -#endif -#else -#define HAVE_ATS 0 -#endif -#endif - - /* `configure' checks the availability of `ResourceIndex' strictly */ - /* and sets HAVE_TYPE_RESOURCE_INDEX to 1 or 0 always. If it is */ - /* not set (e.g., a build without `configure'), the availability */ - /* is guessed from the SDK version. */ -#ifndef HAVE_TYPE_RESOURCE_INDEX -#if !defined( MAC_OS_X_VERSION_10_5 ) || \ - ( MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_5 ) -#define HAVE_TYPE_RESOURCE_INDEX 0 -#else -#define HAVE_TYPE_RESOURCE_INDEX 1 -#endif -#endif /* !HAVE_TYPE_RESOURCE_INDEX */ - -#if ( HAVE_TYPE_RESOURCE_INDEX == 0 ) -typedef short ResourceIndex; -#endif - - /* Set PREFER_LWFN to 1 if LWFN (Type 1) is preferred over - TrueType in case *both* are available (this is not common, - but it *is* possible). */ -#ifndef PREFER_LWFN -#define PREFER_LWFN 1 -#endif - -#ifdef FT_MACINTOSH - -#if !HAVE_QUICKDRAW_CARBON /* QuickDraw is deprecated since Mac OS X 10.4 */ - - FT_EXPORT_DEF( FT_Error ) - FT_GetFile_From_Mac_Name( const char* fontName, - FSSpec* pathSpec, - FT_Long* face_index ) - { - FT_UNUSED( fontName ); - FT_UNUSED( pathSpec ); - FT_UNUSED( face_index ); - - return FT_THROW( Unimplemented_Feature ); - } - -#else - - FT_EXPORT_DEF( FT_Error ) - FT_GetFile_From_Mac_Name( const char* fontName, - FSSpec* pathSpec, - FT_Long* face_index ) - { - OptionBits options = kFMUseGlobalScopeOption; - - FMFontFamilyIterator famIter; - OSStatus status = FMCreateFontFamilyIterator( NULL, NULL, - options, - &famIter ); - FMFont the_font = 0; - FMFontFamily family = 0; - - - if ( !fontName || !face_index ) - return FT_THROW( Invalid_Argument ); - - *face_index = 0; - while ( status == 0 && !the_font ) - { - status = FMGetNextFontFamily( &famIter, &family ); - if ( status == 0 ) - { - int stat2; - FMFontFamilyInstanceIterator instIter; - Str255 famNameStr; - char famName[256]; - - - /* get the family name */ - FMGetFontFamilyName( family, famNameStr ); - CopyPascalStringToC( famNameStr, famName ); - - /* iterate through the styles */ - FMCreateFontFamilyInstanceIterator( family, &instIter ); - - *face_index = 0; - stat2 = 0; - - while ( stat2 == 0 && !the_font ) - { - FMFontStyle style; - FMFontSize size; - FMFont font; - - - stat2 = FMGetNextFontFamilyInstance( &instIter, &font, - &style, &size ); - if ( stat2 == 0 && size == 0 ) - { - char fullName[256]; - - - /* build up a complete face name */ - ft_strcpy( fullName, famName ); - if ( style & bold ) - ft_strcat( fullName, " Bold" ); - if ( style & italic ) - ft_strcat( fullName, " Italic" ); - - /* compare with the name we are looking for */ - if ( ft_strcmp( fullName, fontName ) == 0 ) - { - /* found it! */ - the_font = font; - } - else - ++(*face_index); - } - } - - FMDisposeFontFamilyInstanceIterator( &instIter ); - } - } - - FMDisposeFontFamilyIterator( &famIter ); - - if ( the_font ) - { - FMGetFontContainer( the_font, pathSpec ); - return FT_Err_Ok; - } - else - return FT_THROW( Unknown_File_Format ); - } - -#endif /* HAVE_QUICKDRAW_CARBON */ - - -#if HAVE_ATS - - /* Private function. */ - /* The FSSpec type has been discouraged for a long time, */ - /* unfortunately an FSRef replacement API for */ - /* ATSFontGetFileSpecification() is only available in */ - /* Mac OS X 10.5 and later. */ - static OSStatus - FT_ATSFontGetFileReference( ATSFontRef ats_font_id, - FSRef* ats_font_ref ) - { - OSStatus err; - -#if !defined( MAC_OS_X_VERSION_10_5 ) || \ - MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5 - FSSpec spec; - - - err = ATSFontGetFileSpecification( ats_font_id, &spec ); - if ( noErr == err ) - err = FSpMakeFSRef( &spec, ats_font_ref ); -#else - err = ATSFontGetFileReference( ats_font_id, ats_font_ref ); -#endif - - return err; - } - - - static FT_Error - FT_GetFileRef_From_Mac_ATS_Name( const char* fontName, - FSRef* ats_font_ref, - FT_Long* face_index ) - { - CFStringRef cf_fontName; - ATSFontRef ats_font_id; - - - *face_index = 0; - - cf_fontName = CFStringCreateWithCString( NULL, fontName, - kCFStringEncodingMacRoman ); - ats_font_id = ATSFontFindFromName( cf_fontName, - kATSOptionFlagsUnRestrictedScope ); - CFRelease( cf_fontName ); - - if ( ats_font_id == 0 || ats_font_id == 0xFFFFFFFFUL ) - return FT_THROW( Unknown_File_Format ); - - if ( noErr != FT_ATSFontGetFileReference( ats_font_id, ats_font_ref ) ) - return FT_THROW( Unknown_File_Format ); - - /* face_index calculation by searching preceding fontIDs */ - /* with same FSRef */ - { - ATSFontRef id2 = ats_font_id - 1; - FSRef ref2; - - - while ( id2 > 0 ) - { - if ( noErr != FT_ATSFontGetFileReference( id2, &ref2 ) ) - break; - if ( noErr != FSCompareFSRefs( ats_font_ref, &ref2 ) ) - break; - - id2--; - } - *face_index = ats_font_id - ( id2 + 1 ); - } - - return FT_Err_Ok; - } - -#endif - -#if !HAVE_ATS - - FT_EXPORT_DEF( FT_Error ) - FT_GetFilePath_From_Mac_ATS_Name( const char* fontName, - UInt8* path, - UInt32 maxPathSize, - FT_Long* face_index ) - { - FT_UNUSED( fontName ); - FT_UNUSED( path ); - FT_UNUSED( maxPathSize ); - FT_UNUSED( face_index ); - - return FT_THROW( Unimplemented_Feature ); - } - -#else - - FT_EXPORT_DEF( FT_Error ) - FT_GetFilePath_From_Mac_ATS_Name( const char* fontName, - UInt8* path, - UInt32 maxPathSize, - FT_Long* face_index ) - { - FSRef ref; - FT_Error err; - - - err = FT_GetFileRef_From_Mac_ATS_Name( fontName, &ref, face_index ); - if ( err ) - return err; - - if ( noErr != FSRefMakePath( &ref, path, maxPathSize ) ) - return FT_THROW( Unknown_File_Format ); - - return FT_Err_Ok; - } - -#endif /* HAVE_ATS */ - - -#if !HAVE_FSSPEC || !HAVE_ATS - - FT_EXPORT_DEF( FT_Error ) - FT_GetFile_From_Mac_ATS_Name( const char* fontName, - FSSpec* pathSpec, - FT_Long* face_index ) - { - FT_UNUSED( fontName ); - FT_UNUSED( pathSpec ); - FT_UNUSED( face_index ); - - return FT_THROW( Unimplemented_Feature ); - } - -#else - - /* This function is deprecated because FSSpec is deprecated in Mac OS X. */ - FT_EXPORT_DEF( FT_Error ) - FT_GetFile_From_Mac_ATS_Name( const char* fontName, - FSSpec* pathSpec, - FT_Long* face_index ) - { - FSRef ref; - FT_Error err; - - - err = FT_GetFileRef_From_Mac_ATS_Name( fontName, &ref, face_index ); - if ( err ) - return err; - - if ( noErr != FSGetCatalogInfo( &ref, kFSCatInfoNone, NULL, NULL, - pathSpec, NULL ) ) - return FT_THROW( Unknown_File_Format ); - - return FT_Err_Ok; - } - -#endif - - -#if defined( __MWERKS__ ) && !TARGET_RT_MAC_MACHO - -#define STREAM_FILE( stream ) ( (FT_FILE*)stream->descriptor.pointer ) - - - FT_CALLBACK_DEF( void ) - ft_FSp_stream_close( FT_Stream stream ) - { - ft_fclose( STREAM_FILE( stream ) ); - - stream->descriptor.pointer = NULL; - stream->size = 0; - stream->base = NULL; - } - - - FT_CALLBACK_DEF( unsigned long ) - ft_FSp_stream_io( FT_Stream stream, - unsigned long offset, - unsigned char* buffer, - unsigned long count ) - { - FT_FILE* file; - - - file = STREAM_FILE( stream ); - - ft_fseek( file, offset, SEEK_SET ); - - return (unsigned long)ft_fread( buffer, 1, count, file ); - } - -#endif /* __MWERKS__ && !TARGET_RT_MAC_MACHO */ - - -#if HAVE_FSSPEC && !HAVE_FSREF - - /* isDirectory is a dummy to synchronize API with FSPathMakeRef() */ - static OSErr - FT_FSPathMakeSpec( const UInt8* pathname, - FSSpec* spec_p, - Boolean isDirectory ) - { - const char *p, *q; - short vRefNum; - long dirID; - Str255 nodeName; - OSErr err; - FT_UNUSED( isDirectory ); - - - p = q = (const char *)pathname; - dirID = 0; - vRefNum = 0; - - while ( 1 ) - { - int len = ft_strlen( p ); - - - if ( len > 255 ) - len = 255; - - q = p + len; - - if ( q == p ) - return 0; - - if ( 255 < ft_strlen( (char *)pathname ) ) - { - while ( p < q && *q != ':' ) - q--; - } - - if ( p < q ) - *(char *)nodeName = q - p; - else if ( ft_strlen( p ) < 256 ) - *(char *)nodeName = ft_strlen( p ); - else - return errFSNameTooLong; - - ft_strncpy( (char *)nodeName + 1, (char *)p, *(char *)nodeName ); - err = FSMakeFSSpec( vRefNum, dirID, nodeName, spec_p ); - if ( err || '\0' == *q ) - return err; - - vRefNum = spec_p->vRefNum; - dirID = spec_p->parID; - - p = q; - } - } - - - static OSErr - FT_FSpMakePath( const FSSpec* spec_p, - UInt8* path, - UInt32 maxPathSize ) - { - OSErr err; - FSSpec spec = *spec_p; - short vRefNum; - long dirID; - Str255 parDir_name; - - - FT_MEM_SET( path, 0, maxPathSize ); - while ( 1 ) - { - int child_namelen = ft_strlen( (char *)path ); - unsigned char node_namelen = spec.name[0]; - unsigned char* node_name = spec.name + 1; - - - if ( node_namelen + child_namelen > maxPathSize ) - return errFSNameTooLong; - - FT_MEM_MOVE( path + node_namelen + 1, path, child_namelen ); - FT_MEM_COPY( path, node_name, node_namelen ); - if ( child_namelen > 0 ) - path[node_namelen] = ':'; - - vRefNum = spec.vRefNum; - dirID = spec.parID; - parDir_name[0] = '\0'; - err = FSMakeFSSpec( vRefNum, dirID, parDir_name, &spec ); - if ( noErr != err || dirID == spec.parID ) - break; - } - return noErr; - } - -#endif /* HAVE_FSSPEC && !HAVE_FSREF */ - - - static OSErr - FT_FSPathMakeRes( const UInt8* pathname, - ResFileRefNum* res ) - { - -#if HAVE_FSREF - - OSErr err; - FSRef ref; - - - if ( noErr != FSPathMakeRef( pathname, &ref, FALSE ) ) - return FT_THROW( Cannot_Open_Resource ); - - /* at present, no support for dfont format */ - err = FSOpenResourceFile( &ref, 0, NULL, fsRdPerm, res ); - if ( noErr == err ) - return err; - - /* fallback to original resource-fork font */ - *res = FSOpenResFile( &ref, fsRdPerm ); - err = ResError(); - -#else - - OSErr err; - FSSpec spec; - - - if ( noErr != FT_FSPathMakeSpec( pathname, &spec, FALSE ) ) - return FT_THROW( Cannot_Open_Resource ); - - /* at present, no support for dfont format without FSRef */ - /* (see above), try original resource-fork font */ - *res = FSpOpenResFile( &spec, fsRdPerm ); - err = ResError(); - -#endif /* HAVE_FSREF */ - - return err; - } - - - /* Return the file type for given pathname */ - static OSType - get_file_type_from_path( const UInt8* pathname ) - { - -#if HAVE_FSREF - - FSRef ref; - FSCatalogInfo info; - - - if ( noErr != FSPathMakeRef( pathname, &ref, FALSE ) ) - return ( OSType ) 0; - - if ( noErr != FSGetCatalogInfo( &ref, kFSCatInfoFinderInfo, &info, - NULL, NULL, NULL ) ) - return ( OSType ) 0; - - return ((FInfo *)(info.finderInfo))->fdType; - -#else - - FSSpec spec; - FInfo finfo; - - - if ( noErr != FT_FSPathMakeSpec( pathname, &spec, FALSE ) ) - return ( OSType ) 0; - - if ( noErr != FSpGetFInfo( &spec, &finfo ) ) - return ( OSType ) 0; - - return finfo.fdType; - -#endif /* HAVE_FSREF */ - - } - - - /* Given a PostScript font name, create the Macintosh LWFN file name. */ - static void - create_lwfn_name( char* ps_name, - Str255 lwfn_file_name ) - { - int max = 5, count = 0; - FT_Byte* p = lwfn_file_name; - FT_Byte* q = (FT_Byte*)ps_name; - - - lwfn_file_name[0] = 0; - - while ( *q ) - { - if ( ft_isupper( *q ) ) - { - if ( count ) - max = 3; - count = 0; - } - if ( count < max && ( ft_isalnum( *q ) || *q == '_' ) ) - { - *++p = *q; - lwfn_file_name[0]++; - count++; - } - q++; - } - } - - - static short - count_faces_sfnt( char* fond_data ) - { - /* The count is 1 greater than the value in the FOND. */ - /* Isn't that cute? :-) */ - - return EndianS16_BtoN( *( (short*)( fond_data + - sizeof ( FamRec ) ) ) ) + 1; - } - - - static short - count_faces_scalable( char* fond_data ) - { - AsscEntry* assoc; - short i, face, face_all; - - - face_all = EndianS16_BtoN( *( (short *)( fond_data + - sizeof ( FamRec ) ) ) ) + 1; - assoc = (AsscEntry*)( fond_data + sizeof ( FamRec ) + 2 ); - face = 0; - - for ( i = 0; i < face_all; i++ ) - { - if ( 0 == EndianS16_BtoN( assoc[i].fontSize ) ) - face++; - } - return face; - } - - - /* Look inside the FOND data, answer whether there should be an SFNT - resource, and answer the name of a possible LWFN Type 1 file. - - Thanks to Paul Miller (paulm@profoundeffects.com) for the fix - to load a face OTHER than the first one in the FOND! - */ - - static void - parse_fond( char* fond_data, - short* have_sfnt, - ResID* sfnt_id, - Str255 lwfn_file_name, - short face_index ) - { - AsscEntry* assoc; - AsscEntry* base_assoc; - FamRec* fond; - - - *sfnt_id = 0; - *have_sfnt = 0; - lwfn_file_name[0] = 0; - - fond = (FamRec*)fond_data; - assoc = (AsscEntry*)( fond_data + sizeof ( FamRec ) + 2 ); - base_assoc = assoc; - - /* the maximum faces in a FOND is 48, size of StyleTable.indexes[] */ - if ( 47 < face_index ) - return; - - /* Let's do a little range checking before we get too excited here */ - if ( face_index < count_faces_sfnt( fond_data ) ) - { - assoc += face_index; /* add on the face_index! */ - - /* if the face at this index is not scalable, - fall back to the first one (old behavior) */ - if ( EndianS16_BtoN( assoc->fontSize ) == 0 ) - { - *have_sfnt = 1; - *sfnt_id = EndianS16_BtoN( assoc->fontID ); - } - else if ( base_assoc->fontSize == 0 ) - { - *have_sfnt = 1; - *sfnt_id = EndianS16_BtoN( base_assoc->fontID ); - } - } - - if ( EndianS32_BtoN( fond->ffStylOff ) ) - { - unsigned char* p = (unsigned char*)fond_data; - StyleTable* style; - unsigned short string_count; - char ps_name[256]; - unsigned char* names[64]; - int i; - - - p += EndianS32_BtoN( fond->ffStylOff ); - style = (StyleTable*)p; - p += sizeof ( StyleTable ); - string_count = EndianS16_BtoN( *(short*)(p) ); - string_count = FT_MIN( 64, string_count ); - p += sizeof ( short ); - - for ( i = 0; i < string_count; i++ ) - { - names[i] = p; - p += names[i][0]; - p++; - } - - { - size_t ps_name_len = (size_t)names[0][0]; - - - if ( ps_name_len != 0 ) - { - ft_memcpy(ps_name, names[0] + 1, ps_name_len); - ps_name[ps_name_len] = 0; - } - if ( style->indexes[face_index] > 1 && - style->indexes[face_index] <= string_count ) - { - unsigned char* suffixes = names[style->indexes[face_index] - 1]; - - - for ( i = 1; i <= suffixes[0]; i++ ) - { - unsigned char* s; - size_t j = suffixes[i] - 1; - - - if ( j < string_count && ( s = names[j] ) != NULL ) - { - size_t s_len = (size_t)s[0]; - - - if ( s_len != 0 && ps_name_len + s_len < sizeof ( ps_name ) ) - { - ft_memcpy( ps_name + ps_name_len, s + 1, s_len ); - ps_name_len += s_len; - ps_name[ps_name_len] = 0; - } - } - } - } - } - - create_lwfn_name( ps_name, lwfn_file_name ); - } - } - - - static FT_Error - lookup_lwfn_by_fond( const UInt8* path_fond, - ConstStr255Param base_lwfn, - UInt8* path_lwfn, - int path_size ) - { - -#if HAVE_FSREF - - FSRef ref, par_ref; - int dirname_len; - - - /* Pathname for FSRef can be in various formats: HFS, HFS+, and POSIX. */ - /* We should not extract parent directory by string manipulation. */ - - if ( noErr != FSPathMakeRef( path_fond, &ref, FALSE ) ) - return FT_THROW( Invalid_Argument ); - - if ( noErr != FSGetCatalogInfo( &ref, kFSCatInfoNone, - NULL, NULL, NULL, &par_ref ) ) - return FT_THROW( Invalid_Argument ); - - if ( noErr != FSRefMakePath( &par_ref, path_lwfn, path_size ) ) - return FT_THROW( Invalid_Argument ); - - if ( ft_strlen( (char *)path_lwfn ) + 1 + base_lwfn[0] > path_size ) - return FT_THROW( Invalid_Argument ); - - /* now we have absolute dirname in path_lwfn */ - if ( path_lwfn[0] == '/' ) - ft_strcat( (char *)path_lwfn, "/" ); - else - ft_strcat( (char *)path_lwfn, ":" ); - - dirname_len = ft_strlen( (char *)path_lwfn ); - ft_strcat( (char *)path_lwfn, (char *)base_lwfn + 1 ); - path_lwfn[dirname_len + base_lwfn[0]] = '\0'; - - if ( noErr != FSPathMakeRef( path_lwfn, &ref, FALSE ) ) - return FT_THROW( Cannot_Open_Resource ); - - if ( noErr != FSGetCatalogInfo( &ref, kFSCatInfoNone, - NULL, NULL, NULL, NULL ) ) - return FT_THROW( Cannot_Open_Resource ); - - return FT_Err_Ok; - -#else - - int i; - FSSpec spec; - - - /* pathname for FSSpec is always HFS format */ - if ( ft_strlen( (char *)path_fond ) > path_size ) - return FT_THROW( Invalid_Argument ); - - ft_strcpy( (char *)path_lwfn, (char *)path_fond ); - - i = ft_strlen( (char *)path_lwfn ) - 1; - while ( i > 0 && ':' != path_lwfn[i] ) - i--; - - if ( i + 1 + base_lwfn[0] > path_size ) - return FT_THROW( Invalid_Argument ); - - if ( ':' == path_lwfn[i] ) - { - ft_strcpy( (char *)path_lwfn + i + 1, (char *)base_lwfn + 1 ); - path_lwfn[i + 1 + base_lwfn[0]] = '\0'; - } - else - { - ft_strcpy( (char *)path_lwfn, (char *)base_lwfn + 1 ); - path_lwfn[base_lwfn[0]] = '\0'; - } - - if ( noErr != FT_FSPathMakeSpec( path_lwfn, &spec, FALSE ) ) - return FT_THROW( Cannot_Open_Resource ); - - return FT_Err_Ok; - -#endif /* HAVE_FSREF */ - - } - - - static short - count_faces( Handle fond, - const UInt8* pathname ) - { - ResID sfnt_id; - short have_sfnt, have_lwfn; - Str255 lwfn_file_name; - UInt8 buff[PATH_MAX]; - FT_Error err; - short num_faces; - - - have_sfnt = have_lwfn = 0; - - HLock( fond ); - parse_fond( *fond, &have_sfnt, &sfnt_id, lwfn_file_name, 0 ); - - if ( lwfn_file_name[0] ) - { - err = lookup_lwfn_by_fond( pathname, lwfn_file_name, - buff, sizeof ( buff ) ); - if ( !err ) - have_lwfn = 1; - } - - if ( have_lwfn && ( !have_sfnt || PREFER_LWFN ) ) - num_faces = 1; - else - num_faces = count_faces_scalable( *fond ); - - HUnlock( fond ); - return num_faces; - } - - - /* Read Type 1 data from the POST resources inside the LWFN file, - return a PFB buffer. This is somewhat convoluted because the FT2 - PFB parser wants the ASCII header as one chunk, and the LWFN - chunks are often not organized that way, so we glue chunks - of the same type together. */ - static FT_Error - read_lwfn( FT_Memory memory, - ResFileRefNum res, - FT_Byte** pfb_data, - FT_ULong* size ) - { - FT_Error error = FT_Err_Ok; - ResID res_id; - unsigned char *buffer, *p, *size_p = NULL; - FT_ULong total_size = 0; - FT_ULong old_total_size = 0; - FT_ULong post_size, pfb_chunk_size; - Handle post_data; - char code, last_code; - - - UseResFile( res ); - - /* First pass: load all POST resources, and determine the size of */ - /* the output buffer. */ - res_id = 501; - last_code = -1; - - for (;;) - { - post_data = Get1Resource( TTAG_POST, res_id++ ); - if ( post_data == NULL ) - break; /* we are done */ - - code = (*post_data)[0]; - - if ( code != last_code ) - { - if ( code == 5 ) - total_size += 2; /* just the end code */ - else - total_size += 6; /* code + 4 bytes chunk length */ - } - - total_size += GetHandleSize( post_data ) - 2; - last_code = code; - - /* detect integer overflows */ - if ( total_size < old_total_size ) - { - error = FT_ERR( Array_Too_Large ); - goto Error; - } - - old_total_size = total_size; - } - - if ( FT_QALLOC( buffer, (FT_Long)total_size ) ) - goto Error; - - /* Second pass: append all POST data to the buffer, add PFB fields. */ - /* Glue all consecutive chunks of the same type together. */ - p = buffer; - res_id = 501; - last_code = -1; - pfb_chunk_size = 0; - - for (;;) - { - post_data = Get1Resource( TTAG_POST, res_id++ ); - if ( post_data == NULL ) - break; /* we are done */ - - post_size = (FT_ULong)GetHandleSize( post_data ) - 2; - code = (*post_data)[0]; - - if ( code != last_code ) - { - if ( last_code != -1 ) - { - /* we are done adding a chunk, fill in the size field */ - if ( size_p != NULL ) - { - *size_p++ = (FT_Byte)( pfb_chunk_size & 0xFF ); - *size_p++ = (FT_Byte)( ( pfb_chunk_size >> 8 ) & 0xFF ); - *size_p++ = (FT_Byte)( ( pfb_chunk_size >> 16 ) & 0xFF ); - *size_p++ = (FT_Byte)( ( pfb_chunk_size >> 24 ) & 0xFF ); - } - pfb_chunk_size = 0; - } - - *p++ = 0x80; - if ( code == 5 ) - *p++ = 0x03; /* the end */ - else if ( code == 2 ) - *p++ = 0x02; /* binary segment */ - else - *p++ = 0x01; /* ASCII segment */ - - if ( code != 5 ) - { - size_p = p; /* save for later */ - p += 4; /* make space for size field */ - } - } - - ft_memcpy( p, *post_data + 2, post_size ); - pfb_chunk_size += post_size; - p += post_size; - last_code = code; - } - - *pfb_data = buffer; - *size = total_size; - - Error: - CloseResFile( res ); - return error; - } - - - /* Create a new FT_Face from a file spec to an LWFN file. */ - static FT_Error - FT_New_Face_From_LWFN( FT_Library library, - const UInt8* pathname, - FT_Long face_index, - FT_Face* aface ) - { - FT_Byte* pfb_data; - FT_ULong pfb_size; - FT_Error error; - ResFileRefNum res; - - - if ( noErr != FT_FSPathMakeRes( pathname, &res ) ) - return FT_THROW( Cannot_Open_Resource ); - - pfb_data = NULL; - pfb_size = 0; - error = read_lwfn( library->memory, res, &pfb_data, &pfb_size ); - CloseResFile( res ); /* PFB is already loaded, useless anymore */ - if ( error ) - return error; - - return open_face_from_buffer( library, - pfb_data, - pfb_size, - face_index, - "type1", - aface ); - } - - - /* Create a new FT_Face from an SFNT resource, specified by res ID. */ - static FT_Error - FT_New_Face_From_SFNT( FT_Library library, - ResID sfnt_id, - FT_Long face_index, - FT_Face* aface ) - { - Handle sfnt = NULL; - FT_Byte* sfnt_data; - size_t sfnt_size; - FT_Error error = FT_Err_Ok; - FT_Memory memory = library->memory; - int is_cff, is_sfnt_ps; - - - sfnt = GetResource( TTAG_sfnt, sfnt_id ); - if ( sfnt == NULL ) - return FT_THROW( Invalid_Handle ); - - sfnt_size = (FT_ULong)GetHandleSize( sfnt ); - if ( FT_QALLOC( sfnt_data, (FT_Long)sfnt_size ) ) - { - ReleaseResource( sfnt ); - return error; - } - - HLock( sfnt ); - ft_memcpy( sfnt_data, *sfnt, sfnt_size ); - HUnlock( sfnt ); - ReleaseResource( sfnt ); - - is_cff = sfnt_size > 4 && !ft_memcmp( sfnt_data, "OTTO", 4 ); - is_sfnt_ps = sfnt_size > 4 && !ft_memcmp( sfnt_data, "typ1", 4 ); - - if ( is_sfnt_ps ) - { - FT_Stream stream; - - - if ( FT_NEW( stream ) ) - goto Try_OpenType; - - FT_Stream_OpenMemory( stream, sfnt_data, sfnt_size ); - if ( !open_face_PS_from_sfnt_stream( library, - stream, - face_index, - 0, NULL, - aface ) ) - { - FT_Stream_Close( stream ); - FT_FREE( stream ); - FT_FREE( sfnt_data ); - goto Exit; - } - - FT_FREE( stream ); - } - Try_OpenType: - error = open_face_from_buffer( library, - sfnt_data, - sfnt_size, - face_index, - is_cff ? "cff" : "truetype", - aface ); - Exit: - return error; - } - - - /* Create a new FT_Face from a file spec to a suitcase file. */ - static FT_Error - FT_New_Face_From_Suitcase( FT_Library library, - const UInt8* pathname, - FT_Long face_index, - FT_Face* aface ) - { - FT_Error error = FT_ERR( Cannot_Open_Resource ); - ResFileRefNum res_ref; - ResourceIndex res_index; - Handle fond; - short num_faces_in_res; - - - if ( noErr != FT_FSPathMakeRes( pathname, &res_ref ) ) - return FT_THROW( Cannot_Open_Resource ); - - UseResFile( res_ref ); - if ( ResError() ) - return FT_THROW( Cannot_Open_Resource ); - - num_faces_in_res = 0; - for ( res_index = 1; ; ++res_index ) - { - short num_faces_in_fond; - - - fond = Get1IndResource( TTAG_FOND, res_index ); - if ( ResError() ) - break; - - num_faces_in_fond = count_faces( fond, pathname ); - num_faces_in_res += num_faces_in_fond; - - if ( 0 <= face_index && face_index < num_faces_in_fond && error ) - error = FT_New_Face_From_FOND( library, fond, face_index, aface ); - - face_index -= num_faces_in_fond; - } - - CloseResFile( res_ref ); - if ( !error && aface ) - (*aface)->num_faces = num_faces_in_res; - return error; - } - - - /* documentation is in ftmac.h */ - - FT_EXPORT_DEF( FT_Error ) - FT_New_Face_From_FOND( FT_Library library, - Handle fond, - FT_Long face_index, - FT_Face* aface ) - { - short have_sfnt, have_lwfn = 0; - ResID sfnt_id, fond_id; - OSType fond_type; - Str255 fond_name; - Str255 lwfn_file_name; - UInt8 path_lwfn[PATH_MAX]; - OSErr err; - FT_Error error = FT_Err_Ok; - - - /* test for valid `aface' and `library' delayed to */ - /* `FT_New_Face_From_XXX' */ - - GetResInfo( fond, &fond_id, &fond_type, fond_name ); - if ( ResError() != noErr || fond_type != TTAG_FOND ) - return FT_THROW( Invalid_File_Format ); - - HLock( fond ); - parse_fond( *fond, &have_sfnt, &sfnt_id, lwfn_file_name, face_index ); - HUnlock( fond ); - - if ( lwfn_file_name[0] ) - { - ResFileRefNum res; - - - res = HomeResFile( fond ); - if ( noErr != ResError() ) - goto found_no_lwfn_file; - -#if HAVE_FSREF - - { - UInt8 path_fond[PATH_MAX]; - FSRef ref; - - - err = FSGetForkCBInfo( res, kFSInvalidVolumeRefNum, - NULL, NULL, NULL, &ref, NULL ); - if ( noErr != err ) - goto found_no_lwfn_file; - - err = FSRefMakePath( &ref, path_fond, sizeof ( path_fond ) ); - if ( noErr != err ) - goto found_no_lwfn_file; - - error = lookup_lwfn_by_fond( path_fond, lwfn_file_name, - path_lwfn, sizeof ( path_lwfn ) ); - if ( !error ) - have_lwfn = 1; - } - -#elif HAVE_FSSPEC - - { - UInt8 path_fond[PATH_MAX]; - FCBPBRec pb; - Str255 fond_file_name; - FSSpec spec; - - - FT_MEM_SET( &spec, 0, sizeof ( FSSpec ) ); - FT_MEM_SET( &pb, 0, sizeof ( FCBPBRec ) ); - - pb.ioNamePtr = fond_file_name; - pb.ioVRefNum = 0; - pb.ioRefNum = res; - pb.ioFCBIndx = 0; - - err = PBGetFCBInfoSync( &pb ); - if ( noErr != err ) - goto found_no_lwfn_file; - - err = FSMakeFSSpec( pb.ioFCBVRefNum, pb.ioFCBParID, - fond_file_name, &spec ); - if ( noErr != err ) - goto found_no_lwfn_file; - - err = FT_FSpMakePath( &spec, path_fond, sizeof ( path_fond ) ); - if ( noErr != err ) - goto found_no_lwfn_file; - - error = lookup_lwfn_by_fond( path_fond, lwfn_file_name, - path_lwfn, sizeof ( path_lwfn ) ); - if ( !error ) - have_lwfn = 1; - } - -#endif /* HAVE_FSREF, HAVE_FSSPEC */ - - } - - if ( have_lwfn && ( !have_sfnt || PREFER_LWFN ) ) - error = FT_New_Face_From_LWFN( library, - path_lwfn, - face_index, - aface ); - else - error = FT_ERR( Unknown_File_Format ); - - found_no_lwfn_file: - if ( have_sfnt && error ) - error = FT_New_Face_From_SFNT( library, - sfnt_id, - face_index, - aface ); - - return error; - } - - - /* Common function to load a new FT_Face from a resource file. */ - static FT_Error - FT_New_Face_From_Resource( FT_Library library, - const UInt8* pathname, - FT_Long face_index, - FT_Face* aface ) - { - OSType file_type; - FT_Error error; - - - /* LWFN is a (very) specific file format, check for it explicitly */ - file_type = get_file_type_from_path( pathname ); - if ( file_type == TTAG_LWFN ) - return FT_New_Face_From_LWFN( library, pathname, face_index, aface ); - - /* Otherwise the file type doesn't matter (there are more than */ - /* `FFIL' and `tfil'). Just try opening it as a font suitcase; */ - /* if it works, fine. */ - - error = FT_New_Face_From_Suitcase( library, pathname, face_index, aface ); - if ( !error ) - return error; - - /* let it fall through to normal loader (.ttf, .otf, etc.); */ - /* we signal this by returning no error and no FT_Face */ - *aface = NULL; - return 0; - } - - - /*************************************************************************/ - /* */ - /* */ - /* FT_New_Face */ - /* */ - /* */ - /* This is the Mac-specific implementation of FT_New_Face. In */ - /* addition to the standard FT_New_Face() functionality, it also */ - /* accepts pathnames to Mac suitcase files. For further */ - /* documentation see the original FT_New_Face() in freetype.h. */ - /* */ - FT_EXPORT_DEF( FT_Error ) - FT_New_Face( FT_Library library, - const char* pathname, - FT_Long face_index, - FT_Face* aface ) - { - FT_Open_Args args; - FT_Error error; - - - /* test for valid `library' and `aface' delayed to FT_Open_Face() */ - if ( !pathname ) - return FT_THROW( Invalid_Argument ); - - *aface = NULL; - - /* try resourcefork based font: LWFN, FFIL */ - error = FT_New_Face_From_Resource( library, (UInt8 *)pathname, - face_index, aface ); - if ( error || *aface ) - return error; - - /* let it fall through to normal loader (.ttf, .otf, etc.) */ - args.flags = FT_OPEN_PATHNAME; - args.pathname = (char*)pathname; - return FT_Open_Face( library, &args, face_index, aface ); - } - - - /*************************************************************************/ - /* */ - /* */ - /* FT_New_Face_From_FSRef */ - /* */ - /* */ - /* FT_New_Face_From_FSRef is identical to FT_New_Face except it */ - /* accepts an FSRef instead of a path. */ - /* */ - /* This function is deprecated because Carbon data types (FSRef) */ - /* are not cross-platform, and thus not suitable for the FreeType API. */ - FT_EXPORT_DEF( FT_Error ) - FT_New_Face_From_FSRef( FT_Library library, - const FSRef* ref, - FT_Long face_index, - FT_Face* aface ) - { - -#if !HAVE_FSREF - - FT_UNUSED( library ); - FT_UNUSED( ref ); - FT_UNUSED( face_index ); - FT_UNUSED( aface ); - - return FT_THROW( Unimplemented_Feature ); - -#else - - FT_Error error; - FT_Open_Args args; - OSErr err; - UInt8 pathname[PATH_MAX]; - - - /* test for valid `library' and `aface' delayed to `FT_Open_Face' */ - - if ( !ref ) - return FT_THROW( Invalid_Argument ); - - err = FSRefMakePath( ref, pathname, sizeof ( pathname ) ); - if ( err ) - error = FT_ERR( Cannot_Open_Resource ); - - error = FT_New_Face_From_Resource( library, pathname, face_index, aface ); - if ( error || *aface ) - return error; - - /* fallback to datafork font */ - args.flags = FT_OPEN_PATHNAME; - args.pathname = (char*)pathname; - return FT_Open_Face( library, &args, face_index, aface ); - -#endif /* HAVE_FSREF */ - - } - - - /*************************************************************************/ - /* */ - /* */ - /* FT_New_Face_From_FSSpec */ - /* */ - /* */ - /* FT_New_Face_From_FSSpec is identical to FT_New_Face except it */ - /* accepts an FSSpec instead of a path. */ - /* */ - /* This function is deprecated because Carbon data types (FSSpec) */ - /* are not cross-platform, and thus not suitable for the FreeType API. */ - FT_EXPORT_DEF( FT_Error ) - FT_New_Face_From_FSSpec( FT_Library library, - const FSSpec* spec, - FT_Long face_index, - FT_Face* aface ) - { - -#if HAVE_FSREF - - FSRef ref; - - - if ( !spec || FSpMakeFSRef( spec, &ref ) != noErr ) - return FT_THROW( Invalid_Argument ); - else - return FT_New_Face_From_FSRef( library, &ref, face_index, aface ); - -#elif HAVE_FSSPEC - - FT_Error error; - FT_Open_Args args; - OSErr err; - UInt8 pathname[PATH_MAX]; - - - if ( !spec ) - return FT_THROW( Invalid_Argument ); - - err = FT_FSpMakePath( spec, pathname, sizeof ( pathname ) ); - if ( err ) - error = FT_ERR( Cannot_Open_Resource ); - - error = FT_New_Face_From_Resource( library, pathname, face_index, aface ); - if ( error || *aface ) - return error; - - /* fallback to datafork font */ - args.flags = FT_OPEN_PATHNAME; - args.pathname = (char*)pathname; - return FT_Open_Face( library, &args, face_index, aface ); - -#else - - FT_UNUSED( library ); - FT_UNUSED( spec ); - FT_UNUSED( face_index ); - FT_UNUSED( aface ); - - return FT_THROW( Unimplemented_Feature ); - -#endif /* HAVE_FSREF, HAVE_FSSPEC */ - - } - -#endif /* FT_MACINTOSH */ - - -/* END */ diff --git a/vendor/freetype/builds/meson/extract_freetype_version.py b/vendor/freetype/builds/meson/extract_freetype_version.py deleted file mode 100644 index 05951af3d0a..00000000000 --- a/vendor/freetype/builds/meson/extract_freetype_version.py +++ /dev/null @@ -1,117 +0,0 @@ -#!/usr/bin/env python3 -# -# Copyright (C) 2020-2025 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - -"""Extract the FreeType version numbers from ``. - -This script parses the header to extract the version number defined there. -By default, the full dotted version number is printed, but `--major`, -`--minor` or `--patch` can be used to only print one of these values -instead. -""" - -from __future__ import print_function - -import argparse -import os -import re -import sys - -# Expected input: -# -# ... -# #define FREETYPE_MAJOR 2 -# #define FREETYPE_MINOR 10 -# #define FREETYPE_PATCH 2 -# ... - -RE_MAJOR = re.compile(r"^ \#define \s+ FREETYPE_MAJOR \s+ (.*) $", re.X) -RE_MINOR = re.compile(r"^ \#define \s+ FREETYPE_MINOR \s+ (.*) $", re.X) -RE_PATCH = re.compile(r"^ \#define \s+ FREETYPE_PATCH \s+ (.*) $", re.X) - - -def parse_freetype_header(header): - major = None - minor = None - patch = None - - for line in header.splitlines(): - line = line.rstrip() - m = RE_MAJOR.match(line) - if m: - assert major == None, "FREETYPE_MAJOR appears more than once!" - major = m.group(1) - continue - - m = RE_MINOR.match(line) - if m: - assert minor == None, "FREETYPE_MINOR appears more than once!" - minor = m.group(1) - continue - - m = RE_PATCH.match(line) - if m: - assert patch == None, "FREETYPE_PATCH appears more than once!" - patch = m.group(1) - continue - - assert ( - major and minor and patch - ), "This header is missing one of FREETYPE_MAJOR, FREETYPE_MINOR or FREETYPE_PATCH!" - - return (major, minor, patch) - - -def main(): - parser = argparse.ArgumentParser(description=__doc__) - - group = parser.add_mutually_exclusive_group() - group.add_argument( - "--major", - action="store_true", - help="Only print the major version number.", - ) - group.add_argument( - "--minor", - action="store_true", - help="Only print the minor version number.", - ) - group.add_argument( - "--patch", - action="store_true", - help="Only print the patch version number.", - ) - - parser.add_argument( - "input", - metavar="FREETYPE_H", - help="The input freetype.h header to parse.", - ) - - args = parser.parse_args() - with open(args.input) as f: - header = f.read() - - version = parse_freetype_header(header) - - if args.major: - print(version[0]) - elif args.minor: - print(version[1]) - elif args.patch: - print(version[2]) - else: - print("%s.%s.%s" % version) - - return 0 - - -if __name__ == "__main__": - sys.exit(main()) diff --git a/vendor/freetype/builds/meson/extract_libtool_version.py b/vendor/freetype/builds/meson/extract_libtool_version.py deleted file mode 100644 index 09bc3582961..00000000000 --- a/vendor/freetype/builds/meson/extract_libtool_version.py +++ /dev/null @@ -1,115 +0,0 @@ -#!/usr/bin/env python3 -# -# Copyright (C) 2020-2025 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - -"""Extract the libtool version from `configure.raw`. - -This script parses the `configure.raw` file to extract the libtool version -number. By default, the full dotted version number is printed, but -`--major`, `--minor` or `--patch` can be used to only print one of these -values instead. -""" - -from __future__ import print_function - -import argparse -import os -import re -import sys - -# Expected input: -# -# ... -# version_info='23:2:17' -# ... - -RE_VERSION_INFO = re.compile(r"^version_info='(\d+):(\d+):(\d+)'") - - -def parse_configure_raw(header): - major = None - minor = None - patch = None - - for line in header.splitlines(): - line = line.rstrip() - m = RE_VERSION_INFO.match(line) - if m: - assert major == None, "version_info appears more than once!" - major = m.group(1) - minor = m.group(2) - patch = m.group(3) - continue - - assert ( - major and minor and patch - ), "This input file is missing a version_info definition!" - - return (major, minor, patch) - - -def main(): - parser = argparse.ArgumentParser(description=__doc__) - - group = parser.add_mutually_exclusive_group() - group.add_argument( - "--major", - action="store_true", - help="Only print the major version number.", - ) - group.add_argument( - "--minor", - action="store_true", - help="Only print the minor version number.", - ) - group.add_argument( - "--patch", - action="store_true", - help="Only print the patch version number.", - ) - group.add_argument( - "--soversion", - action="store_true", - help="Only print the libtool library suffix.", - ) - - parser.add_argument( - "input", - metavar="CONFIGURE_RAW", - help="The input configure.raw file to parse.", - ) - - args = parser.parse_args() - with open(args.input) as f: - raw_file = f.read() - - version = parse_configure_raw(raw_file) - - if args.major: - print(version[0]) - elif args.minor: - print(version[1]) - elif args.patch: - print(version[2]) - elif args.soversion: - # Convert libtool version_info to the library suffix. - # (current,revision, age) -> (current - age, age, revision) - print( - "%d.%s.%s" - % (int(version[0]) - int(version[2]), version[2], version[1]) - ) - else: - print("%s.%s.%s" % version) - - return 0 - - -if __name__ == "__main__": - sys.exit(main()) diff --git a/vendor/freetype/builds/meson/generate_reference_docs.py b/vendor/freetype/builds/meson/generate_reference_docs.py deleted file mode 100644 index 24669f8ae3b..00000000000 --- a/vendor/freetype/builds/meson/generate_reference_docs.py +++ /dev/null @@ -1,89 +0,0 @@ -#!/usr/bin/env python3 -# -# Copyright (C) 2020-2025 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - -"""Generate FreeType reference documentation.""" - -from __future__ import print_function - -import argparse -import glob -import os -import subprocess -import sys - - -def main(): - parser = argparse.ArgumentParser(description=__doc__) - - parser.add_argument( - "--input-dir", - required=True, - help="Top-level FreeType source directory.", - ) - - parser.add_argument( - "--version", required=True, help='FreeType version (e.g. "2.x.y").' - ) - - parser.add_argument( - "--output-dir", required=True, help="Output directory." - ) - - args = parser.parse_args() - - # Get the list of input files of interest. - include_dir = os.path.join(args.input_dir, "include") - include_config_dir = os.path.join(include_dir, "config") - include_cache_dir = os.path.join(include_dir, "cache") - - all_headers = ( - glob.glob(os.path.join(args.input_dir, "include", "freetype", "*.h")) - + glob.glob( - os.path.join( - args.input_dir, "include", "freetype", "config", "*.h" - ) - ) - + glob.glob( - os.path.join( - args.input_dir, "include", "freetype", "cache", "*.h" - ) - ) - ) - - if not os.path.exists(args.output_dir): - os.makedirs(args.output_dir) - else: - assert os.path.isdir(args.output_dir), ( - "Not a directory: " + args.output_dir - ) - - cmds = [ - sys.executable, - "-m", - "docwriter", - "--prefix=ft2", - "--title=FreeType-" + args.version, - "--site=reference", - "--output=" + args.output_dir, - ] + all_headers - - print("Running docwriter...") - subprocess.check_call(cmds) - - print("Building static site...") - subprocess.check_call( - [sys.executable, "-m", "mkdocs", "build"], cwd=args.output_dir - ) - return 0 - - -if __name__ == "__main__": - sys.exit(main()) diff --git a/vendor/freetype/builds/meson/parse_modules_cfg.py b/vendor/freetype/builds/meson/parse_modules_cfg.py deleted file mode 100644 index 26ea95055ab..00000000000 --- a/vendor/freetype/builds/meson/parse_modules_cfg.py +++ /dev/null @@ -1,177 +0,0 @@ -#!/usr/bin/env python3 -# -# Copyright (C) 2020-2025 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - -"""Parse modules.cfg and dump its output either as ftmodule.h or a list of -base extensions. -""" - -from __future__ import print_function - -import argparse -import os -import re -import sys - -# Expected input: -# -# ... -# FONT_MODULES += -# HINTING_MODULES += -# RASTER_MODULES += -# AUX_MODULES += -# BASE_EXTENSIONS += -# ... - - -def parse_modules_cfg(input_file): - - lists = { - "FONT_MODULES": [], - "HINTING_MODULES": [], - "RASTER_MODULES": [], - "AUX_MODULES": [], - "BASE_EXTENSIONS": [], - } - - for line in input_file.splitlines(): - line = line.rstrip() - # Ignore empty lines and those that start with a comment. - if not line or line[0] == "#": - continue - - items = line.split() - assert len(items) == 3 and items[1] == "+=", ( - "Unexpected input line [%s]" % line - ) - assert items[0] in lists, ( - "Unexpected configuration variable name " + items[0] - ) - - lists[items[0]].append(items[2]) - - return lists - - -def generate_ftmodule(lists): - result = "/* This is a generated file. */\n" - for driver in lists["FONT_MODULES"]: - if driver == "sfnt": # Special case for the sfnt 'driver'. - result += "FT_USE_MODULE( FT_Module_Class, sfnt_module_class )\n" - continue - - name = { - "truetype": "tt", - "type1": "t1", - "cid": "t1cid", - "type42": "t42", - "winfonts": "winfnt", - }.get(driver, driver) - result += ( - "FT_USE_MODULE( FT_Driver_ClassRec, %s_driver_class )\n" % name - ) - - for module in lists["HINTING_MODULES"]: - result += ( - "FT_USE_MODULE( FT_Module_Class, %s_module_class )\n" % module - ) - - for module in lists["RASTER_MODULES"]: - names = { - "raster": ("ft_raster1",), - "smooth": ("ft_smooth",), - "svg": ("ft_svg",), - "sdf": ("ft_sdf", "ft_bitmap_sdf"), - }.get(module) - for name in names: - result += ( - "FT_USE_MODULE( FT_Renderer_Class, %s_renderer_class )\n" % name - ) - - for module in lists["AUX_MODULES"]: - if module in ("psaux", "psnames", "otvalid", "gxvalid"): - name = { - "gxvalid": "gxv", - "otvalid": "otv", - }.get(module, module) - result += ( - "FT_USE_MODULE( FT_Module_Class, %s_module_class )\n" % name - ) - - result += "/* EOF */\n" - return result - - -def generate_main_modules(lists): - return "\n".join( - lists["FONT_MODULES"] - + lists["HINTING_MODULES"] - + lists["RASTER_MODULES"] - ) - - -def generate_aux_modules(lists): - return "\n".join(lists["AUX_MODULES"]) - - -def generate_base_extensions(lists): - return "\n".join(lists["BASE_EXTENSIONS"]) - - -def main(): - parser = argparse.ArgumentParser(description=__doc__) - - parser.add_argument( - "--format", - required=True, - choices=( - "ftmodule.h", - "main-modules", - "aux-modules", - "base-extensions-list", - ), - help="Select output format.", - ) - - parser.add_argument( - "input", - metavar="CONFIGURE_RAW", - help="The input configure.raw file to parse.", - ) - - parser.add_argument("--output", help="Output file (default is stdout).") - - args = parser.parse_args() - with open(args.input) as f: - input_data = f.read() - - lists = parse_modules_cfg(input_data) - - if args.format == "ftmodule.h": - result = generate_ftmodule(lists) - elif args.format == "main-modules": - result = generate_main_modules(lists) - elif args.format == "aux-modules": - result = generate_aux_modules(lists) - elif args.format == "base-extensions-list": - result = generate_base_extensions(lists) - else: - assert False, "Invalid output format!" - - if args.output: - with open(args.output, "w") as f: - f.write(result) - else: - print(result) - return 0 - - -if __name__ == "__main__": - sys.exit(main()) diff --git a/vendor/freetype/builds/meson/process_ftoption_h.py b/vendor/freetype/builds/meson/process_ftoption_h.py deleted file mode 100644 index 96e44b396f5..00000000000 --- a/vendor/freetype/builds/meson/process_ftoption_h.py +++ /dev/null @@ -1,115 +0,0 @@ -#!/usr/bin/env python3 -# -# Copyright (C) 2020-2025 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - -"""Toggle settings in `ftoption.h` file based on command-line arguments. - -This script takes an `ftoption.h` file as input and rewrites -`#define`/`#undef` lines in it based on `--enable=CONFIG_VARNAME` or -`--disable=CONFIG_VARNAME` arguments passed to it, where `CONFIG_VARNAME` is -configuration variable name, such as `FT_CONFIG_OPTION_USE_LZW`, that may -appear in the file. - -Note that if one of `CONFIG_VARNAME` is not found in the input file, this -script exits with an error message listing the missing variable names. -""" - -import argparse -import os -import re -import sys - - -def main(): - parser = argparse.ArgumentParser(description=__doc__) - - parser.add_argument( - "input", metavar="FTOPTION_H", help="Path to input ftoption.h file." - ) - - parser.add_argument("--output", help="Output to file instead of stdout.") - - parser.add_argument( - "--enable", - action="append", - default=[], - help="Enable a given build option (e.g. FT_CONFIG_OPTION_USE_LZW).", - ) - - parser.add_argument( - "--disable", - action="append", - default=[], - help="Disable a given build option.", - ) - - args = parser.parse_args() - - common_options = set(args.enable) & set(args.disable) - if common_options: - parser.error( - "Options cannot be both enabled and disabled: %s" - % sorted(common_options) - ) - return 1 - - with open(args.input) as f: - input_file = f.read() - - options_seen = set() - - new_lines = [] - for line in input_file.splitlines(): - # Expected formats: - # #define - # /* #define */ - # #undef - line = line.rstrip() - if line.startswith("/* #define ") and line.endswith(" */"): - option_name = line[11:-3].strip() - option_enabled = False - elif line.startswith("#define "): - option_name = line[8:].strip() - option_enabled = True - elif line.startswith("#undef "): - option_name = line[7:].strip() - option_enabled = False - else: - new_lines.append(line) - continue - - options_seen.add(option_name) - if option_enabled and option_name in args.disable: - line = "#undef " + option_name - elif not option_enabled and option_name in args.enable: - line = "#define " + option_name - new_lines.append(line) - - result = "\n".join(new_lines) + "\n" - - # Sanity check that all command-line options were actually processed. - cmdline_options = set(args.enable) | set(args.disable) - assert cmdline_options.issubset( - options_seen - ), "Could not find options in input file: " + ", ".join( - sorted(cmdline_options - options_seen) - ) - - if args.output: - with open(args.output, "w") as f: - f.write(result) - else: - print(result) - - return 0 - - -if __name__ == "__main__": - sys.exit(main()) diff --git a/vendor/freetype/builds/modules.mk b/vendor/freetype/builds/modules.mk deleted file mode 100644 index 458cbc2e57c..00000000000 --- a/vendor/freetype/builds/modules.mk +++ /dev/null @@ -1,79 +0,0 @@ -# -# FreeType 2 modules sub-Makefile -# - - -# Copyright (C) 1996-2025 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -# DO NOT INVOKE THIS MAKEFILE DIRECTLY! IT IS MEANT TO BE INCLUDED BY -# OTHER MAKEFILES. - - -# This file is in charge of handling the generation of the modules list -# file. - - -# Build the modules list. -# -$(FTMODULE_H): $(MODULES_CFG) - $(FTMODULE_H_INIT) - $(FTMODULE_H_CREATE) - $(FTMODULE_H_DONE) - -ifneq ($(findstring $(PLATFORM),dos windows os2),) - OPEN_MODULE := @echo$(space) - CLOSE_MODULE := >> $(subst /,$(SEP),$(FTMODULE_H)) - REMOVE_MODULE := @-$(DELETE) $(subst /,$(SEP),$(FTMODULE_H)) -else - OPEN_MODULE := @echo " - CLOSE_MODULE := " >> $(FTMODULE_H) - REMOVE_MODULE := @-$(DELETE) $(FTMODULE_H) -endif - - -define FTMODULE_H_INIT -$(REMOVE_MODULE) -$(info Generating modules list in $(FTMODULE_H)...) -$(OPEN_MODULE)/* This is a generated file. */$(CLOSE_MODULE) -endef - -# It is no mistake that the final closing parenthesis is on the -# next line -- it produces proper newlines during the expansion -# of `foreach'. -# -define FTMODULE_H_CREATE -$(foreach COMMAND,$(FTMODULE_H_COMMANDS),$($(COMMAND)) -) -endef - -define FTMODULE_H_DONE -$(OPEN_MODULE)/* EOF */$(CLOSE_MODULE) -$(info done.) -endef - - -# $(OPEN_DRIVER) & $(CLOSE_DRIVER) are used to specify a given font driver -# in the `module.mk' rules file. -# -OPEN_DRIVER := $(OPEN_MODULE)FT_USE_MODULE( -CLOSE_DRIVER := )$(CLOSE_MODULE) - -ECHO_DRIVER := @echo "* module:$(space) -ECHO_DRIVER_DESC := ( -ECHO_DRIVER_DONE := )" - -# Each `module.mk' in the `src/*' subdirectories adds a variable with -# commands to $(FTMODULE_H_COMMANDS). Note that we can't use SRC_DIR here. -# --include $(patsubst %,$(TOP_DIR)/src/%/module.mk,$(MODULES)) - - -# EOF diff --git a/vendor/freetype/builds/os2/detect.mk b/vendor/freetype/builds/os2/detect.mk deleted file mode 100644 index a99014c60de..00000000000 --- a/vendor/freetype/builds/os2/detect.mk +++ /dev/null @@ -1,81 +0,0 @@ -# -# FreeType 2 configuration file to detect an OS/2 host platform. -# - - -# Copyright (C) 1996-2025 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -.PHONY: setup - - -ifeq ($(PLATFORM),ansi) - - ifdef OS2_SHELL - - PLATFORM := os2 - - endif # test OS2_SHELL -endif - -ifeq ($(PLATFORM),os2) - - COPY := copy - DELETE := del - CAT := type - SEP := $(BACKSLASH) - - # gcc-emx by default - CONFIG_FILE := os2-gcc.mk - - # additionally, we provide hooks for various other compilers - # - ifneq ($(findstring visualage,$(MAKECMDGOALS)),) # Visual Age C++ - CONFIG_FILE := os2-icc.mk - CC := icc - - .PHONY: visualage - visualage: setup - @cd . - endif - - ifneq ($(findstring watcom,$(MAKECMDGOALS)),) # Watcom C/C++ - CONFIG_FILE := os2-wat.mk - CC := wcc386 - - .PHONY: watcom - watcom: setup - @cd . - endif - - ifneq ($(findstring borlandc,$(MAKECMDGOALS)),) # Borland C++ 32-bit - CONFIG_FILE := os2-bcc.mk - CC := bcc32 - - .PHONY: borlandc - borlandc: setup - @cd . - endif - - ifneq ($(findstring devel,$(MAKECMDGOALS)),) # development target - CONFIG_FILE := os2-dev.mk - CC := gcc - - .PHONY: devel - devel: setup - @cd . - endif - - setup: std_setup - -endif # test PLATFORM os2 - - -# EOF diff --git a/vendor/freetype/builds/os2/os2-def.mk b/vendor/freetype/builds/os2/os2-def.mk deleted file mode 100644 index b194b935632..00000000000 --- a/vendor/freetype/builds/os2/os2-def.mk +++ /dev/null @@ -1,48 +0,0 @@ -# -# FreeType 2 OS/2 specific definitions -# - - -# Copyright (C) 1996-2025 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -DELETE := del -CAT := type -SEP := $(strip \ ) -PLATFORM_DIR := $(TOP_DIR)/builds/os2 -PLATFORM := os2 - -# This is used for `make refdoc' and `make refdoc-venv' -# -BIN := Scripts - -# The executable file extension (for tools), *with* leading dot. -# -E := .exe - -# The directory where all library files are placed. -# -# By default, this is the same as $(OBJ_DIR); however, this can be changed -# to suit particular needs. -# -LIB_DIR := $(OBJ_DIR) - -# The name of the final library file. Note that the DOS-specific Makefile -# uses a shorter (8.3) name. -# -LIBRARY := $(PROJECT) - - -# The NO_OUTPUT macro is used to ignore the output of commands. -# -NO_OUTPUT = 2> nul - - -# EOF diff --git a/vendor/freetype/builds/os2/os2-dev.mk b/vendor/freetype/builds/os2/os2-dev.mk deleted file mode 100644 index 11602d7a2dc..00000000000 --- a/vendor/freetype/builds/os2/os2-dev.mk +++ /dev/null @@ -1,30 +0,0 @@ -# -# FreeType 2 configuration rules for OS/2 + GCC -# -# Development version without optimizations. -# - - -# Copyright (C) 1996-2025 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -DEVEL_DIR := $(TOP_DIR)/devel - -# include OS/2-specific definitions -include $(TOP_DIR)/builds/os2/os2-def.mk - -# include gcc-specific definitions -include $(TOP_DIR)/builds/compiler/gcc-dev.mk - -# include linking instructions -include $(TOP_DIR)/builds/link_dos.mk - - -# EOF diff --git a/vendor/freetype/builds/os2/os2-gcc.mk b/vendor/freetype/builds/os2/os2-gcc.mk deleted file mode 100644 index b0f2a09967f..00000000000 --- a/vendor/freetype/builds/os2/os2-gcc.mk +++ /dev/null @@ -1,26 +0,0 @@ -# -# FreeType 2 configuration rules for the OS/2 + gcc -# - - -# Copyright (C) 1996-2025 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -# include OS/2-specific definitions -include $(TOP_DIR)/builds/os2/os2-def.mk - -# include gcc-specific definitions -include $(TOP_DIR)/builds/compiler/gcc.mk - -# include linking instructions -include $(TOP_DIR)/builds/link_dos.mk - - -# EOF diff --git a/vendor/freetype/builds/symbian/bld.inf b/vendor/freetype/builds/symbian/bld.inf deleted file mode 100644 index 44e533ee7cf..00000000000 --- a/vendor/freetype/builds/symbian/bld.inf +++ /dev/null @@ -1,72 +0,0 @@ -// -// FreeType 2 project for the symbian platform -// - -// Copyright (C) 2008-2025 by -// David Turner, Robert Wilhelm, and Werner Lemberg. -// -// This file is part of the FreeType project, and may only be used, modified, -// and distributed under the terms of the FreeType project license, -// LICENSE.TXT. By continuing to use, modify, or distribute this file you -// indicate that you have read the license and understand and accept it -// fully. - -PRJ_PLATFORMS -DEFAULT - -PRJ_MMPFILES -freetype.mmp - -PRJ_EXPORTS -../../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/ftadvanc.h ftadvanc.h -../../include/freetype/ftautoh.h ftautoh.h -../../include/freetype/ftbbox.h ftbbox.h -../../include/freetype/ftbdf.h ftbdf.h -../../include/freetype/ftbitmap.h ftbitmap.h -../../include/freetype/ftbzip2.h ftbzip2.h -../../include/freetype/ftcache.h ftcache.h -../../include/freetype/ftcffdrv.h ftcffdrv.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/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/ftparams.h ftparams.h -../../include/freetype/ftpcfdrv.h ftpcfdrv.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/ftt1drv.h ftt1drv.h -../../include/freetype/fttrigon.h fttrigon.h -../../include/freetype/ftttdrv.h ftttdrv.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 diff --git a/vendor/freetype/builds/symbian/freetype.mmp b/vendor/freetype/builds/symbian/freetype.mmp deleted file mode 100644 index aefdc8e0998..00000000000 --- a/vendor/freetype/builds/symbian/freetype.mmp +++ /dev/null @@ -1,146 +0,0 @@ -// -// FreeType 2 makefile for the symbian platform -// - -// Copyright (C) 2008-2025 by -// David Turner, Robert Wilhelm, and Werner Lemberg. -// -// This file is part of the FreeType project, and may only be used, modified, -// and distributed under the terms of the FreeType project license, -// LICENSE.TXT. By continuing to use, modify, or distribute this file you -// indicate that you have read the license and understand and accept it -// fully. - -target freetype.lib -targettype lib - -macro NDEBUG -macro FT2_BUILD_LIBRARY - -sourcepath ..\..\src\autofit - -source autofit.c - -sourcepath ..\..\src\base - -source ftbase.c -source ftbbox.c -source ftbdf.c -source ftbitmap.c -source ftcid.c -source ftfstype.c -source ftgasp.c -source ftglyph.c -source ftgxval.c -source ftinit.c -source ftmm.c -source ftotval.c -source ftpatent.c -source ftpfr.c -source ftstroke.c -source ftsynth.c -source ftsystem.c -source fttype1.c -source ftwinfnt.c - -sourcepath ..\..\src\bdf - -source bdf.c - -sourcepath ..\..\src\bzip2 - -source ftbzip2.c - -sourcepath ..\..\src\cache - -source ftcache.c - -sourcepath ..\..\src\cff - -source cff.c - -sourcepath ..\..\src\cid - -source type1cid.c - -sourcepath ..\..\src\gzip - -source ftgzip.c - -sourcepath ..\..\src\lzw - -source ftlzw.c - -sourcepath ..\..\src\pcf - -source pcf.c - -sourcepath ..\..\src\pfr - -source pfr.c - -sourcepath ..\..\src\psaux - -source psaux.c - -sourcepath ..\..\src\pshinter - -source pshinter.c - -sourcepath ..\..\src\psnames - -source psmodule.c - -sourcepath ..\..\src\raster - -source raster.c - -sourcepath ..\..\src\sfnt - -source sfnt.c - -sourcepath ..\..\src\smooth - -source smooth.c - -sourcepath ..\..\src\truetype - -source truetype.c - -sourcepath ..\..\src\type1 - -source type1.c - -sourcepath ..\..\src\type42 - -source type42.c - -sourcepath ..\..\src\winfonts - -source winfnt.c - - -systeminclude ..\..\include -systeminclude \epoc32\include\stdapis -userinclude ..\..\src\autofit -userinclude ..\..\src\bdf -userinclude ..\..\src\bzip2 -userinclude ..\..\src\cache -userinclude ..\..\src\cff -userinclude ..\..\src\cid -userinclude ..\..\src\gxvalid -userinclude ..\..\src\gzip -userinclude ..\..\src\lzw -userinclude ..\..\src\otvalid -userinclude ..\..\src\pcf -userinclude ..\..\src\pfr -userinclude ..\..\src\psaux -userinclude ..\..\src\pshinter -userinclude ..\..\src\psnames -userinclude ..\..\src\raster -userinclude ..\..\src\sfnt -userinclude ..\..\src\smooth -userinclude ..\..\src\truetype -userinclude ..\..\src\type1 -userinclude ..\..\src\type42 -userinclude ..\..\src\winfonts diff --git a/vendor/freetype/builds/toplevel.mk b/vendor/freetype/builds/toplevel.mk deleted file mode 100644 index e00e9df2567..00000000000 --- a/vendor/freetype/builds/toplevel.mk +++ /dev/null @@ -1,323 +0,0 @@ -# -# FreeType build system -- top-level sub-Makefile -# - - -# Copyright (C) 1996-2025 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -# This file is designed for GNU Make, do not use it with another Make tool! -# -# It works as follows: -# -# - When invoked for the first time, this Makefile includes the rules found -# in `PROJECT/builds/detect.mk'. They are in charge of detecting the -# current platform. -# -# A summary of the detection is displayed, and the file `config.mk' is -# created in the current directory. -# -# - When invoked later, this Makefile includes the rules found in -# `config.mk'. This sub-Makefile defines some system-specific variables -# (like compiler, compilation flags, object suffix, etc.), then includes -# the rules found in `PROJECT/builds/PROJECT.mk', used to build the -# library. -# -# See the comments in `builds/detect.mk' and `builds/PROJECT.mk' for more -# details on host platform detection and library builds. - - -# First of all, check whether we have `$(value ...)'. We do this by testing -# for `$(eval ...)' which has been introduced in the same GNU make version. - -eval_available := -$(eval eval_available := T) -ifneq ($(eval_available),T) - $(error FreeType's build system needs a Make program which supports $$(value)) -endif - - -.PHONY: all dist distclean modules setup - - -# The `space' variable is used to avoid trailing spaces in defining the -# `T' variable later. -# -empty := -space := $(empty) $(empty) - - -# The main configuration file, defining the `XXX_MODULES' variables. We -# prefer a `modules.cfg' file in OBJ_DIR over TOP_DIR. -# -ifndef MODULES_CFG - MODULES_CFG := $(TOP_DIR)/modules.cfg - ifneq ($(wildcard $(OBJ_DIR)/modules.cfg),) - MODULES_CFG := $(OBJ_DIR)/modules.cfg - endif -endif - - -# FTMODULE_H, as its name suggests, indicates where the FreeType module -# class file resides. -# -FTMODULE_H ?= $(OBJ_DIR)/ftmodule.h - - -include $(MODULES_CFG) - - -# The list of modules we are using. -# -MODULES := $(FONT_MODULES) \ - $(HINTING_MODULES) \ - $(RASTER_MODULES) \ - $(AUX_MODULES) - - -CONFIG_MK ?= config.mk - -# If no configuration sub-makefile is present, or if `setup' is the target -# to be built, run the auto-detection rules to figure out which -# configuration rules file to use. -# -# Note that the configuration file is put in the current directory, which is -# not necessarily $(TOP_DIR). - -# If `config.mk' is not present, set `check_platform'. -# -ifeq ($(wildcard $(CONFIG_MK)),) - check_platform := 1 -endif - -# If `setup' is one of the targets requested, set `check_platform'. -# -ifneq ($(findstring setup,$(MAKECMDGOALS)),) - check_platform := 1 -endif - - -# Include the automatic host platform detection rules when we need to -# check the platform. -# -ifdef check_platform - - all modules: setup - - include $(TOP_DIR)/builds/detect.mk - - # For builds directly from the git repository we need to copy files - # from `subprojects/dlg' to `src/dlg' and `include/dlg'. - # - ifeq ($(wildcard $(TOP_DIR)/src/dlg/dlg.*),) - ifeq ($(wildcard $(TOP_DIR)/subprojects/dlg/*),) - copy_submodule: check_out_submodule - endif - - setup: copy_submodule - endif - - # This rule makes sense for Unix only to remove files created by a run of - # the configure script which hasn't been successful (so that no - # `config.mk' has been created). It uses the built-in $(RM) command of - # GNU make. Similarly, `nul' is created if e.g. `make setup windows' has - # been erroneously used. - # - # Note: This test is duplicated in `builds/unix/detect.mk'. - # - is_unix := $(strip $(wildcard /sbin/init) \ - $(wildcard /usr/sbin/init) \ - $(wildcard /dev/null) \ - $(wildcard /hurd/auth)) - ifneq ($(is_unix),) - - distclean: - $(RM) $(TOP_DIR)/builds/unix/config.cache - $(RM) $(TOP_DIR)/builds/unix/config.log - $(RM) $(TOP_DIR)/builds/unix/config.status - $(RM) $(TOP_DIR)/builds/unix/unix-def.mk - $(RM) $(TOP_DIR)/builds/unix/unix-cc.mk - $(RM) $(TOP_DIR)/builds/unix/freetype2.pc - $(RM) nul - - endif # test is_unix - - # IMPORTANT: - # - # `setup' must be defined by the host platform detection rules to create - # the `config.mk' file in the current directory. - -else - - # A configuration sub-Makefile is present -- simply run it. - # - all: single - - BUILD_PROJECT := yes - include $(CONFIG_MK) - -endif # test check_platform - - -.PHONY: check_out_submodule copy_submodule - -check_out_submodule: - $(info Checking out submodule in `subprojects/dlg') - git -C $(TOP_DIR) submodule update --init - -copy_submodule: - $(info Copying files from `subprojects/dlg' to `src/dlg' and `include/dlg') - ifeq ($(wildcard $(TOP_DIR)/include/dlg),) - mkdir $(subst /,$(SEP),$(TOP_DIR)/include/dlg) - endif - $(COPY) $(subst /,$(SEP),$(TOP_DIR)/subprojects/dlg/include/dlg/output.h $(TOP_DIR)/include/dlg) - $(COPY) $(subst /,$(SEP),$(TOP_DIR)/subprojects/dlg/include/dlg/dlg.h $(TOP_DIR)/include/dlg) - $(COPY) $(subst /,$(SEP),$(TOP_DIR)/subprojects/dlg/src/dlg/dlg.c $(TOP_DIR)/src/dlg) - - -# We always need the list of modules in ftmodule.h. -# -all setup: $(FTMODULE_H) - - -# The `modules' target unconditionally rebuilds the module list. -# -modules: - $(FTMODULE_H_INIT) - $(FTMODULE_H_CREATE) - $(FTMODULE_H_DONE) - -include $(TOP_DIR)/builds/modules.mk - - -# get FreeType version string using built-in string functions -# -hash := \# - -work := $(strip $(shell $(CAT) \ - $(subst /,$(SEP),$(TOP_DIR)/include/freetype/freetype.h))) - -work := $(subst $(hash)define$(space)FREETYPE_MAJOR$(space),MAjOR=,$(work)) -work := $(subst $(hash)define$(space)FREETYPE_MINOR$(space),MInOR=,$(work)) -work := $(subst $(hash)define$(space)FREETYPE_PATCH$(space),PAtCH=,$(work)) - -major := $(subst MAjOR=,,$(filter MAjOR=%,$(work))) -minor := $(subst MInOR=,,$(filter MInOR=%,$(work))) -patch := $(subst PAtCH=,,$(filter PAtCH=%,$(work))) - -work := - -# ifneq ($(findstring x0x,x$(patch)x),) -# version := $(major).$(minor) -# winversion := $(major)$(minor) -# else - version := $(major).$(minor).$(patch) - winversion := $(major)$(minor)$(patch) - version_tag := VER-$(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. - -dist: - -rm -rf tmp - rm -f freetype-$(version).tar.gz - rm -f freetype-$(version).tar.xz - rm -f ft$(winversion).zip - - for d in `find . -wholename '*/.git' -prune \ - -o -type f \ - -o -print` ; do \ - mkdir -p tmp/$$d ; \ - done ; - - currdir=`pwd` ; \ - for f in `find . -wholename '*/.git' -prune \ - -o -name .gitattributes \ - -o -name .gitignore \ - -o -name .gitlab-ci.yml \ - -o -name .gitmodules \ - -o -name .mailmap \ - -o -type d \ - -o -print` ; do \ - ln -s $$currdir/$$f tmp/$$f ; \ - done - - cd tmp ; \ - $(MAKE) devel ; \ - $(MAKE) do-dist - - mv tmp freetype-$(version) - - tar -H ustar -chf - freetype-$(version) \ - | gzip -9 -c > freetype-$(version).tar.gz - tar -H ustar -chf - freetype-$(version) \ - | xz -c > freetype-$(version).tar.xz - - @# Use CR/LF for zip files. - zip -lr9 ft$(winversion).zip freetype-$(version) - - rm -fr freetype-$(version) - - -# The locations of the latest `config.guess' and `config.sub' versions (from -# GNU `config' git repository), relative to the `tmp' directory used during -# `make dist'. -# -# GNU_CONFIG_GIT_URL = git://git.savannah.gnu.org/config.git -GNU_CONFIG_GIT_URL = https://git.savannah.gnu.org/git/config.git -GNU_CONFIG_DESTDIR = $(TOP_DIR)/subprojects/gnu-config - -CONFIG_GUESS = $(GNU_CONFIG_DESTDIR)/config.guess -CONFIG_SUB = $(GNU_CONFIG_DESTDIR)/config.sub - -# We also use this repository to access the gnulib script that converts git -# commit messages to a ChangeLog file. -CHANGELOG_SCRIPT = $(GNU_CONFIG_DESTDIR)/gitlog-to-changelog - - -# Don't say `make do-dist'. Always use `make dist' instead. -# -.PHONY: do-dist - -do-dist: distclean refdoc - @# Without removing the files, `autoconf' and friends follow links. - rm -f $(TOP_DIR)/builds/unix/aclocal.m4 - rm -f $(TOP_DIR)/builds/unix/configure.ac - rm -f $(TOP_DIR)/builds/unix/configure - - sh autogen.sh - rm -rf $(TOP_DIR)/builds/unix/autom4te.cache - - rm -rf $(GNU_CONFIG_DESTDIR) - git clone --depth=1 $(GNU_CONFIG_GIT_URL) $(GNU_CONFIG_DESTDIR) - cp $(CONFIG_GUESS) $(TOP_DIR)/builds/unix - cp $(CONFIG_SUB) $(TOP_DIR)/builds/unix - - @# Generate `ChangeLog' file with commits since release 2.11.0 - @# (when we stopped creating this file manually). - $(CHANGELOG_SCRIPT) \ - --format='%B%n' \ - --no-cluster \ - -- VER-2-11-0..$(version_tag) \ - > ChangeLog - - @# Remove intermediate files created by the `refdoc' target. - rm -rf $(TOP_DIR)/docs/markdown - rm -f $(TOP_DIR)/docs/mkdocs.yml - - @# Remove more stuff related to git. - rm -rf $(TOP_DIR)/subprojects/dlg - rm -rf $(TOP_DIR)/subprojects/gnu-config - -# EOF diff --git a/vendor/freetype/builds/unix/.gitignore b/vendor/freetype/builds/unix/.gitignore deleted file mode 100644 index f89b226b81a..00000000000 --- a/vendor/freetype/builds/unix/.gitignore +++ /dev/null @@ -1,18 +0,0 @@ -aclocal.m4 -autom4te.cache -config.cache -config.guess -config.log -config.status -config.sub -configure -configure.ac -freetype2.pc -freetype-config -ftconfig.h -ftoption.h -install-sh -libtool -ltmain.sh -unix-cc.mk -unix-def.mk diff --git a/vendor/freetype/builds/unix/ax_compare_version.m4 b/vendor/freetype/builds/unix/ax_compare_version.m4 deleted file mode 100644 index ffb4997e8b1..00000000000 --- a/vendor/freetype/builds/unix/ax_compare_version.m4 +++ /dev/null @@ -1,177 +0,0 @@ -# =========================================================================== -# https://www.gnu.org/software/autoconf-archive/ax_compare_version.html -# =========================================================================== -# -# SYNOPSIS -# -# AX_COMPARE_VERSION(VERSION_A, OP, VERSION_B, [ACTION-IF-TRUE], [ACTION-IF-FALSE]) -# -# DESCRIPTION -# -# This macro compares two version strings. Due to the various number of -# minor-version numbers that can exist, and the fact that string -# comparisons are not compatible with numeric comparisons, this is not -# necessarily trivial to do in a autoconf script. This macro makes doing -# these comparisons easy. -# -# The six basic comparisons are available, as well as checking equality -# limited to a certain number of minor-version levels. -# -# The operator OP determines what type of comparison to do, and can be one -# of: -# -# eq - equal (test A == B) -# ne - not equal (test A != B) -# le - less than or equal (test A <= B) -# ge - greater than or equal (test A >= B) -# lt - less than (test A < B) -# gt - greater than (test A > B) -# -# Additionally, the eq and ne operator can have a number after it to limit -# the test to that number of minor versions. -# -# eq0 - equal up to the length of the shorter version -# ne0 - not equal up to the length of the shorter version -# eqN - equal up to N sub-version levels -# neN - not equal up to N sub-version levels -# -# When the condition is true, shell commands ACTION-IF-TRUE are run, -# otherwise shell commands ACTION-IF-FALSE are run. The environment -# variable 'ax_compare_version' is always set to either 'true' or 'false' -# as well. -# -# Examples: -# -# AX_COMPARE_VERSION([3.15.7],[lt],[3.15.8]) -# AX_COMPARE_VERSION([3.15],[lt],[3.15.8]) -# -# would both be true. -# -# AX_COMPARE_VERSION([3.15.7],[eq],[3.15.8]) -# AX_COMPARE_VERSION([3.15],[gt],[3.15.8]) -# -# would both be false. -# -# AX_COMPARE_VERSION([3.15.7],[eq2],[3.15.8]) -# -# would be true because it is only comparing two minor versions. -# -# AX_COMPARE_VERSION([3.15.7],[eq0],[3.15]) -# -# would be true because it is only comparing the lesser number of minor -# versions of the two values. -# -# Note: The characters that separate the version numbers do not matter. An -# empty string is the same as version 0. OP is evaluated by autoconf, not -# configure, so must be a string, not a variable. -# -# The author would like to acknowledge Guido Draheim whose advice about -# the m4_case and m4_ifvaln functions make this macro only include the -# portions necessary to perform the specific comparison specified by the -# OP argument in the final configure script. -# -# LICENSE -# -# Copyright (c) 2008 Tim Toolan -# -# Copying and distribution of this file, with or without modification, are -# permitted in any medium without royalty provided the copyright notice -# and this notice are preserved. This file is offered as-is, without any -# warranty. - -#serial 13 - -dnl ######################################################################### -AC_DEFUN([AX_COMPARE_VERSION], [ - AC_REQUIRE([AC_PROG_AWK]) - - # Used to indicate true or false condition - ax_compare_version=false - - # Convert the two version strings to be compared into a format that - # allows a simple string comparison. The end result is that a version - # string of the form 1.12.5-r617 will be converted to the form - # 0001001200050617. In other words, each number is zero padded to four - # digits, and non digits are removed. - AS_VAR_PUSHDEF([A],[ax_compare_version_A]) - A=`echo "$1" | sed -e 's/\([[0-9]]*\)/Z\1Z/g' \ - -e 's/Z\([[0-9]]\)Z/Z0\1Z/g' \ - -e 's/Z\([[0-9]][[0-9]]\)Z/Z0\1Z/g' \ - -e 's/Z\([[0-9]][[0-9]][[0-9]]\)Z/Z0\1Z/g' \ - -e 's/[[^0-9]]//g'` - - AS_VAR_PUSHDEF([B],[ax_compare_version_B]) - B=`echo "$3" | sed -e 's/\([[0-9]]*\)/Z\1Z/g' \ - -e 's/Z\([[0-9]]\)Z/Z0\1Z/g' \ - -e 's/Z\([[0-9]][[0-9]]\)Z/Z0\1Z/g' \ - -e 's/Z\([[0-9]][[0-9]][[0-9]]\)Z/Z0\1Z/g' \ - -e 's/[[^0-9]]//g'` - - dnl # In the case of le, ge, lt, and gt, the strings are sorted as necessary - dnl # then the first line is used to determine if the condition is true. - dnl # The sed right after the echo is to remove any indented white space. - m4_case(m4_tolower($2), - [lt],[ - ax_compare_version=`echo "x$A -x$B" | sed 's/^ *//' | sort -r | sed "s/x${A}/false/;s/x${B}/true/;1q"` - ], - [gt],[ - ax_compare_version=`echo "x$A -x$B" | sed 's/^ *//' | sort | sed "s/x${A}/false/;s/x${B}/true/;1q"` - ], - [le],[ - ax_compare_version=`echo "x$A -x$B" | sed 's/^ *//' | sort | sed "s/x${A}/true/;s/x${B}/false/;1q"` - ], - [ge],[ - ax_compare_version=`echo "x$A -x$B" | sed 's/^ *//' | sort -r | sed "s/x${A}/true/;s/x${B}/false/;1q"` - ],[ - dnl Split the operator from the subversion count if present. - m4_bmatch(m4_substr($2,2), - [0],[ - # A count of zero means use the length of the shorter version. - # Determine the number of characters in A and B. - ax_compare_version_len_A=`echo "$A" | $AWK '{print(length)}'` - ax_compare_version_len_B=`echo "$B" | $AWK '{print(length)}'` - - # Set A to no more than B's length and B to no more than A's length. - A=`echo "$A" | sed "s/\(.\{$ax_compare_version_len_B\}\).*/\1/"` - B=`echo "$B" | sed "s/\(.\{$ax_compare_version_len_A\}\).*/\1/"` - ], - [[0-9]+],[ - # A count greater than zero means use only that many subversions - A=`echo "$A" | sed "s/\(\([[0-9]]\{4\}\)\{m4_substr($2,2)\}\).*/\1/"` - B=`echo "$B" | sed "s/\(\([[0-9]]\{4\}\)\{m4_substr($2,2)\}\).*/\1/"` - ], - [.+],[ - AC_WARNING( - [invalid OP numeric parameter: $2]) - ],[]) - - # Pad zeros at end of numbers to make same length. - ax_compare_version_tmp_A="$A`echo $B | sed 's/./0/g'`" - B="$B`echo $A | sed 's/./0/g'`" - A="$ax_compare_version_tmp_A" - - # Check for equality or inequality as necessary. - m4_case(m4_tolower(m4_substr($2,0,2)), - [eq],[ - test "x$A" = "x$B" && ax_compare_version=true - ], - [ne],[ - test "x$A" != "x$B" && ax_compare_version=true - ],[ - AC_WARNING([invalid OP parameter: $2]) - ]) - ]) - - AS_VAR_POPDEF([A])dnl - AS_VAR_POPDEF([B])dnl - - dnl # Execute ACTION-IF-TRUE / ACTION-IF-FALSE. - if test "$ax_compare_version" = "true" ; then - m4_ifvaln([$4],[$4],[:])dnl - m4_ifvaln([$5],[else $5])dnl - fi -]) dnl AX_COMPARE_VERSION diff --git a/vendor/freetype/builds/unix/ax_prog_python_version.m4 b/vendor/freetype/builds/unix/ax_prog_python_version.m4 deleted file mode 100644 index dbc3dbf1da6..00000000000 --- a/vendor/freetype/builds/unix/ax_prog_python_version.m4 +++ /dev/null @@ -1,66 +0,0 @@ -# =========================================================================== -# https://www.gnu.org/software/autoconf-archive/ax_prog_python_version.html -# =========================================================================== -# -# SYNOPSIS -# -# AX_PROG_PYTHON_VERSION([VERSION],[ACTION-IF-TRUE],[ACTION-IF-FALSE]) -# -# DESCRIPTION -# -# Makes sure that python supports the version indicated. If true the shell -# commands in ACTION-IF-TRUE are executed. If not the shell commands in -# ACTION-IF-FALSE are run. Note if $PYTHON is not set (for example by -# running AC_CHECK_PROG or AC_PATH_PROG) the macro will fail. -# -# Example: -# -# AC_PATH_PROG([PYTHON],[python]) -# AX_PROG_PYTHON_VERSION([2.4.4],[ ... ],[ ... ]) -# -# This will check to make sure that the python you have supports at least -# version 2.4.4. -# -# NOTE: This macro uses the $PYTHON variable to perform the check. -# AX_WITH_PYTHON can be used to set that variable prior to running this -# macro. The $PYTHON_VERSION variable will be valorized with the detected -# version. -# -# LICENSE -# -# Copyright (c) 2009 Francesco Salvestrini -# -# Copying and distribution of this file, with or without modification, are -# permitted in any medium without royalty provided the copyright notice -# and this notice are preserved. This file is offered as-is, without any -# warranty. - -#serial 12 - -AC_DEFUN([AX_PROG_PYTHON_VERSION],[ - AC_REQUIRE([AC_PROG_SED]) - AC_REQUIRE([AC_PROG_GREP]) - - AS_IF([test -n "$PYTHON"],[ - ax_python_version="$1" - - AC_MSG_CHECKING([for python version]) - changequote(<<,>>) - python_version=`$PYTHON -V 2>&1 | $GREP "^Python " | $SED -e 's/^.* \([0-9]*\.[0-9]*\.[0-9]*\)/\1/'` - changequote([,]) - AC_MSG_RESULT($python_version) - - AC_SUBST([PYTHON_VERSION],[$python_version]) - - AX_COMPARE_VERSION([$ax_python_version],[le],[$python_version],[ - : - $2 - ],[ - : - $3 - ]) - ],[ - AC_MSG_WARN([could not find the python interpreter]) - $3 - ]) -]) diff --git a/vendor/freetype/builds/unix/ax_pthread.m4 b/vendor/freetype/builds/unix/ax_pthread.m4 deleted file mode 100644 index e5858e50c3c..00000000000 --- a/vendor/freetype/builds/unix/ax_pthread.m4 +++ /dev/null @@ -1,522 +0,0 @@ -# =========================================================================== -# https://www.gnu.org/software/autoconf-archive/ax_pthread.html -# =========================================================================== -# -# SYNOPSIS -# -# AX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]]) -# -# DESCRIPTION -# -# This macro figures out how to build C programs using POSIX threads. It -# sets the PTHREAD_LIBS output variable to the threads library and linker -# flags, and the PTHREAD_CFLAGS output variable to any special C compiler -# flags that are needed. (The user can also force certain compiler -# flags/libs to be tested by setting these environment variables.) -# -# Also sets PTHREAD_CC and PTHREAD_CXX to any special C compiler that is -# needed for multi-threaded programs (defaults to the value of CC -# respectively CXX otherwise). (This is necessary on e.g. AIX to use the -# special cc_r/CC_r compiler alias.) -# -# NOTE: You are assumed to not only compile your program with these flags, -# but also to link with them as well. For example, you might link with -# $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS $LIBS -# $PTHREAD_CXX $CXXFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS $LIBS -# -# If you are only building threaded programs, you may wish to use these -# variables in your default LIBS, CFLAGS, and CC: -# -# LIBS="$PTHREAD_LIBS $LIBS" -# CFLAGS="$CFLAGS $PTHREAD_CFLAGS" -# CXXFLAGS="$CXXFLAGS $PTHREAD_CFLAGS" -# CC="$PTHREAD_CC" -# CXX="$PTHREAD_CXX" -# -# In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute constant -# has a nonstandard name, this macro defines PTHREAD_CREATE_JOINABLE to -# that name (e.g. PTHREAD_CREATE_UNDETACHED on AIX). -# -# Also HAVE_PTHREAD_PRIO_INHERIT is defined if pthread is found and the -# PTHREAD_PRIO_INHERIT symbol is defined when compiling with -# PTHREAD_CFLAGS. -# -# ACTION-IF-FOUND is a list of shell commands to run if a threads library -# is found, and ACTION-IF-NOT-FOUND is a list of commands to run it if it -# is not found. If ACTION-IF-FOUND is not specified, the default action -# will define HAVE_PTHREAD. -# -# Please let the authors know if this macro fails on any platform, or if -# you have any other suggestions or comments. This macro was based on work -# by SGJ on autoconf scripts for FFTW (http://www.fftw.org/) (with help -# from M. Frigo), as well as ac_pthread and hb_pthread macros posted by -# Alejandro Forero Cuervo to the autoconf macro repository. We are also -# grateful for the helpful feedback of numerous users. -# -# Updated for Autoconf 2.68 by Daniel Richard G. -# -# LICENSE -# -# Copyright (c) 2008 Steven G. Johnson -# Copyright (c) 2011 Daniel Richard G. -# Copyright (c) 2019 Marc Stevens -# -# This program is free software: you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by the -# Free Software Foundation, either version 3 of the License, or (at your -# option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General -# Public License for more details. -# -# You should have received a copy of the GNU General Public License along -# with this program. If not, see . -# -# As a special exception, the respective Autoconf Macro's copyright owner -# gives unlimited permission to copy, distribute and modify the configure -# scripts that are the output of Autoconf when processing the Macro. You -# need not follow the terms of the GNU General Public License when using -# or distributing such scripts, even though portions of the text of the -# Macro appear in them. The GNU General Public License (GPL) does govern -# all other use of the material that constitutes the Autoconf Macro. -# -# This special exception to the GPL applies to versions of the Autoconf -# Macro released by the Autoconf Archive. When you make and distribute a -# modified version of the Autoconf Macro, you may extend this special -# exception to the GPL to apply to your modified version as well. - -#serial 30 - -AU_ALIAS([ACX_PTHREAD], [AX_PTHREAD]) -AC_DEFUN([AX_PTHREAD], [ -AC_REQUIRE([AC_CANONICAL_TARGET]) -AC_REQUIRE([AC_PROG_CC]) -AC_REQUIRE([AC_PROG_SED]) -AC_LANG_PUSH([C]) -ax_pthread_ok=no - -# We used to check for pthread.h first, but this fails if pthread.h -# requires special compiler flags (e.g. on Tru64 or Sequent). -# It gets checked for in the link test anyway. - -# First of all, check if the user has set any of the PTHREAD_LIBS, -# etcetera environment variables, and if threads linking works using -# them: -if test "x$PTHREAD_CFLAGS$PTHREAD_LIBS" != "x"; then - ax_pthread_save_CC="$CC" - ax_pthread_save_CFLAGS="$CFLAGS" - ax_pthread_save_LIBS="$LIBS" - AS_IF([test "x$PTHREAD_CC" != "x"], [CC="$PTHREAD_CC"]) - AS_IF([test "x$PTHREAD_CXX" != "x"], [CXX="$PTHREAD_CXX"]) - CFLAGS="$CFLAGS $PTHREAD_CFLAGS" - LIBS="$PTHREAD_LIBS $LIBS" - AC_MSG_CHECKING([for pthread_join using $CC $PTHREAD_CFLAGS $PTHREAD_LIBS]) - AC_LINK_IFELSE([AC_LANG_CALL([], [pthread_join])], [ax_pthread_ok=yes]) - AC_MSG_RESULT([$ax_pthread_ok]) - if test "x$ax_pthread_ok" = "xno"; then - PTHREAD_LIBS="" - PTHREAD_CFLAGS="" - fi - CC="$ax_pthread_save_CC" - CFLAGS="$ax_pthread_save_CFLAGS" - LIBS="$ax_pthread_save_LIBS" -fi - -# We must check for the threads library under a number of different -# names; the ordering is very important because some systems -# (e.g. DEC) have both -lpthread and -lpthreads, where one of the -# libraries is broken (non-POSIX). - -# Create a list of thread flags to try. Items with a "," contain both -# C compiler flags (before ",") and linker flags (after ","). Other items -# starting with a "-" are C compiler flags, and remaining items are -# library names, except for "none" which indicates that we try without -# any flags at all, and "pthread-config" which is a program returning -# the flags for the Pth emulation library. - -ax_pthread_flags="pthreads none -Kthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config" - -# The ordering *is* (sometimes) important. Some notes on the -# individual items follow: - -# pthreads: AIX (must check this before -lpthread) -# none: in case threads are in libc; should be tried before -Kthread and -# other compiler flags to prevent continual compiler warnings -# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h) -# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads), Tru64 -# (Note: HP C rejects this with "bad form for `-t' option") -# -pthreads: Solaris/gcc (Note: HP C also rejects) -# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it -# doesn't hurt to check since this sometimes defines pthreads and -# -D_REENTRANT too), HP C (must be checked before -lpthread, which -# is present but should not be used directly; and before -mthreads, -# because the compiler interprets this as "-mt" + "-hreads") -# -mthreads: Mingw32/gcc, Lynx/gcc -# pthread: Linux, etcetera -# --thread-safe: KAI C++ -# pthread-config: use pthread-config program (for GNU Pth library) - -case $target_os in - - freebsd*) - - # -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able) - # lthread: LinuxThreads port on FreeBSD (also preferred to -pthread) - - ax_pthread_flags="-kthread lthread $ax_pthread_flags" - ;; - - hpux*) - - # From the cc(1) man page: "[-mt] Sets various -D flags to enable - # multi-threading and also sets -lpthread." - - ax_pthread_flags="-mt -pthread pthread $ax_pthread_flags" - ;; - - openedition*) - - # IBM z/OS requires a feature-test macro to be defined in order to - # enable POSIX threads at all, so give the user a hint if this is - # not set. (We don't define these ourselves, as they can affect - # other portions of the system API in unpredictable ways.) - - AC_EGREP_CPP([AX_PTHREAD_ZOS_MISSING], - [ -# if !defined(_OPEN_THREADS) && !defined(_UNIX03_THREADS) - AX_PTHREAD_ZOS_MISSING -# endif - ], - [AC_MSG_WARN([IBM z/OS requires -D_OPEN_THREADS or -D_UNIX03_THREADS to enable pthreads support.])]) - ;; - - solaris*) - - # On Solaris (at least, for some versions), libc contains stubbed - # (non-functional) versions of the pthreads routines, so link-based - # tests will erroneously succeed. (N.B.: The stubs are missing - # pthread_cleanup_push, or rather a function called by this macro, - # so we could check for that, but who knows whether they'll stub - # that too in a future libc.) So we'll check first for the - # standard Solaris way of linking pthreads (-mt -lpthread). - - ax_pthread_flags="-mt,-lpthread pthread $ax_pthread_flags" - ;; -esac - -# Are we compiling with Clang? - -AC_CACHE_CHECK([whether $CC is Clang], - [ax_cv_PTHREAD_CLANG], - [ax_cv_PTHREAD_CLANG=no - # Note that Autoconf sets GCC=yes for Clang as well as GCC - if test "x$GCC" = "xyes"; then - AC_EGREP_CPP([AX_PTHREAD_CC_IS_CLANG], - [/* Note: Clang 2.7 lacks __clang_[a-z]+__ */ -# if defined(__clang__) && defined(__llvm__) - AX_PTHREAD_CC_IS_CLANG -# endif - ], - [ax_cv_PTHREAD_CLANG=yes]) - fi - ]) -ax_pthread_clang="$ax_cv_PTHREAD_CLANG" - - -# GCC generally uses -pthread, or -pthreads on some platforms (e.g. SPARC) - -# Note that for GCC and Clang -pthread generally implies -lpthread, -# except when -nostdlib is passed. -# This is problematic using libtool to build C++ shared libraries with pthread: -# [1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=25460 -# [2] https://bugzilla.redhat.com/show_bug.cgi?id=661333 -# [3] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=468555 -# To solve this, first try -pthread together with -lpthread for GCC - -AS_IF([test "x$GCC" = "xyes"], - [ax_pthread_flags="-pthread,-lpthread -pthread -pthreads $ax_pthread_flags"]) - -# Clang takes -pthread (never supported any other flag), but we'll try with -lpthread first - -AS_IF([test "x$ax_pthread_clang" = "xyes"], - [ax_pthread_flags="-pthread,-lpthread -pthread"]) - - -# The presence of a feature test macro requesting re-entrant function -# definitions is, on some systems, a strong hint that pthreads support is -# correctly enabled - -case $target_os in - darwin* | hpux* | linux* | osf* | solaris*) - ax_pthread_check_macro="_REENTRANT" - ;; - - aix*) - ax_pthread_check_macro="_THREAD_SAFE" - ;; - - *) - ax_pthread_check_macro="--" - ;; -esac -AS_IF([test "x$ax_pthread_check_macro" = "x--"], - [ax_pthread_check_cond=0], - [ax_pthread_check_cond="!defined($ax_pthread_check_macro)"]) - - -if test "x$ax_pthread_ok" = "xno"; then -for ax_pthread_try_flag in $ax_pthread_flags; do - - case $ax_pthread_try_flag in - none) - AC_MSG_CHECKING([whether pthreads work without any flags]) - ;; - - *,*) - PTHREAD_CFLAGS=`echo $ax_pthread_try_flag | sed "s/^\(.*\),\(.*\)$/\1/"` - PTHREAD_LIBS=`echo $ax_pthread_try_flag | sed "s/^\(.*\),\(.*\)$/\2/"` - AC_MSG_CHECKING([whether pthreads work with "$PTHREAD_CFLAGS" and "$PTHREAD_LIBS"]) - ;; - - -*) - AC_MSG_CHECKING([whether pthreads work with $ax_pthread_try_flag]) - PTHREAD_CFLAGS="$ax_pthread_try_flag" - ;; - - pthread-config) - AC_CHECK_PROG([ax_pthread_config], [pthread-config], [yes], [no]) - AS_IF([test "x$ax_pthread_config" = "xno"], [continue]) - PTHREAD_CFLAGS="`pthread-config --cflags`" - PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`" - ;; - - *) - AC_MSG_CHECKING([for the pthreads library -l$ax_pthread_try_flag]) - PTHREAD_LIBS="-l$ax_pthread_try_flag" - ;; - esac - - ax_pthread_save_CFLAGS="$CFLAGS" - ax_pthread_save_LIBS="$LIBS" - CFLAGS="$CFLAGS $PTHREAD_CFLAGS" - LIBS="$PTHREAD_LIBS $LIBS" - - # Check for various functions. We must include pthread.h, - # since some functions may be macros. (On the Sequent, we - # need a special flag -Kthread to make this header compile.) - # We check for pthread_join because it is in -lpthread on IRIX - # while pthread_create is in libc. We check for pthread_attr_init - # due to DEC craziness with -lpthreads. We check for - # pthread_cleanup_push because it is one of the few pthread - # functions on Solaris that doesn't have a non-functional libc stub. - # We try pthread_create on general principles. - - AC_LINK_IFELSE([AC_LANG_PROGRAM([#include -# if $ax_pthread_check_cond -# error "$ax_pthread_check_macro must be defined" -# endif - static void *some_global = NULL; - static void routine(void *a) - { - /* To avoid any unused-parameter or - unused-but-set-parameter warning. */ - some_global = a; - } - static void *start_routine(void *a) { return a; }], - [pthread_t th; pthread_attr_t attr; - pthread_create(&th, 0, start_routine, 0); - pthread_join(th, 0); - pthread_attr_init(&attr); - pthread_cleanup_push(routine, 0); - pthread_cleanup_pop(0) /* ; */])], - [ax_pthread_ok=yes], - []) - - CFLAGS="$ax_pthread_save_CFLAGS" - LIBS="$ax_pthread_save_LIBS" - - AC_MSG_RESULT([$ax_pthread_ok]) - AS_IF([test "x$ax_pthread_ok" = "xyes"], [break]) - - PTHREAD_LIBS="" - PTHREAD_CFLAGS="" -done -fi - - -# Clang needs special handling, because older versions handle the -pthread -# option in a rather... idiosyncratic way - -if test "x$ax_pthread_clang" = "xyes"; then - - # Clang takes -pthread; it has never supported any other flag - - # (Note 1: This will need to be revisited if a system that Clang - # supports has POSIX threads in a separate library. This tends not - # to be the way of modern systems, but it's conceivable.) - - # (Note 2: On some systems, notably Darwin, -pthread is not needed - # to get POSIX threads support; the API is always present and - # active. We could reasonably leave PTHREAD_CFLAGS empty. But - # -pthread does define _REENTRANT, and while the Darwin headers - # ignore this macro, third-party headers might not.) - - # However, older versions of Clang make a point of warning the user - # that, in an invocation where only linking and no compilation is - # taking place, the -pthread option has no effect ("argument unused - # during compilation"). They expect -pthread to be passed in only - # when source code is being compiled. - # - # Problem is, this is at odds with the way Automake and most other - # C build frameworks function, which is that the same flags used in - # compilation (CFLAGS) are also used in linking. Many systems - # supported by AX_PTHREAD require exactly this for POSIX threads - # support, and in fact it is often not straightforward to specify a - # flag that is used only in the compilation phase and not in - # linking. Such a scenario is extremely rare in practice. - # - # Even though use of the -pthread flag in linking would only print - # a warning, this can be a nuisance for well-run software projects - # that build with -Werror. So if the active version of Clang has - # this misfeature, we search for an option to squash it. - - AC_CACHE_CHECK([whether Clang needs flag to prevent "argument unused" warning when linking with -pthread], - [ax_cv_PTHREAD_CLANG_NO_WARN_FLAG], - [ax_cv_PTHREAD_CLANG_NO_WARN_FLAG=unknown - # Create an alternate version of $ac_link that compiles and - # links in two steps (.c -> .o, .o -> exe) instead of one - # (.c -> exe), because the warning occurs only in the second - # step - ax_pthread_save_ac_link="$ac_link" - ax_pthread_sed='s/conftest\.\$ac_ext/conftest.$ac_objext/g' - ax_pthread_link_step=`AS_ECHO(["$ac_link"]) | sed "$ax_pthread_sed"` - ax_pthread_2step_ac_link="($ac_compile) && (echo ==== >&5) && ($ax_pthread_link_step)" - ax_pthread_save_CFLAGS="$CFLAGS" - for ax_pthread_try in '' -Qunused-arguments -Wno-unused-command-line-argument unknown; do - AS_IF([test "x$ax_pthread_try" = "xunknown"], [break]) - CFLAGS="-Werror -Wunknown-warning-option $ax_pthread_try -pthread $ax_pthread_save_CFLAGS" - ac_link="$ax_pthread_save_ac_link" - AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(void){return 0;}]])], - [ac_link="$ax_pthread_2step_ac_link" - AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(void){return 0;}]])], - [break]) - ]) - done - ac_link="$ax_pthread_save_ac_link" - CFLAGS="$ax_pthread_save_CFLAGS" - AS_IF([test "x$ax_pthread_try" = "x"], [ax_pthread_try=no]) - ax_cv_PTHREAD_CLANG_NO_WARN_FLAG="$ax_pthread_try" - ]) - - case "$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" in - no | unknown) ;; - *) PTHREAD_CFLAGS="$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG $PTHREAD_CFLAGS" ;; - esac - -fi # $ax_pthread_clang = yes - - - -# Various other checks: -if test "x$ax_pthread_ok" = "xyes"; then - ax_pthread_save_CFLAGS="$CFLAGS" - ax_pthread_save_LIBS="$LIBS" - CFLAGS="$CFLAGS $PTHREAD_CFLAGS" - LIBS="$PTHREAD_LIBS $LIBS" - - # Detect AIX lossage: JOINABLE attribute is called UNDETACHED. - AC_CACHE_CHECK([for joinable pthread attribute], - [ax_cv_PTHREAD_JOINABLE_ATTR], - [ax_cv_PTHREAD_JOINABLE_ATTR=unknown - for ax_pthread_attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do - AC_LINK_IFELSE([AC_LANG_PROGRAM([#include ], - [int attr = $ax_pthread_attr; return attr /* ; */])], - [ax_cv_PTHREAD_JOINABLE_ATTR=$ax_pthread_attr; break], - []) - done - ]) - AS_IF([test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xunknown" && \ - test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xPTHREAD_CREATE_JOINABLE" && \ - test "x$ax_pthread_joinable_attr_defined" != "xyes"], - [AC_DEFINE_UNQUOTED([PTHREAD_CREATE_JOINABLE], - [$ax_cv_PTHREAD_JOINABLE_ATTR], - [Define to necessary symbol if this constant - uses a non-standard name on your system.]) - ax_pthread_joinable_attr_defined=yes - ]) - - AC_CACHE_CHECK([whether more special flags are required for pthreads], - [ax_cv_PTHREAD_SPECIAL_FLAGS], - [ax_cv_PTHREAD_SPECIAL_FLAGS=no - case $target_os in - solaris*) - ax_cv_PTHREAD_SPECIAL_FLAGS="-D_POSIX_PTHREAD_SEMANTICS" - ;; - esac - ]) - AS_IF([test "x$ax_cv_PTHREAD_SPECIAL_FLAGS" != "xno" && \ - test "x$ax_pthread_special_flags_added" != "xyes"], - [PTHREAD_CFLAGS="$ax_cv_PTHREAD_SPECIAL_FLAGS $PTHREAD_CFLAGS" - ax_pthread_special_flags_added=yes]) - - AC_CACHE_CHECK([for PTHREAD_PRIO_INHERIT], - [ax_cv_PTHREAD_PRIO_INHERIT], - [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include ]], - [[int i = PTHREAD_PRIO_INHERIT; - return i;]])], - [ax_cv_PTHREAD_PRIO_INHERIT=yes], - [ax_cv_PTHREAD_PRIO_INHERIT=no]) - ]) - AS_IF([test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes" && \ - test "x$ax_pthread_prio_inherit_defined" != "xyes"], - [AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], [1], [Have PTHREAD_PRIO_INHERIT.]) - ax_pthread_prio_inherit_defined=yes - ]) - - CFLAGS="$ax_pthread_save_CFLAGS" - LIBS="$ax_pthread_save_LIBS" - - # More AIX lossage: compile with *_r variant - if test "x$GCC" != "xyes"; then - case $target_os in - aix*) - AS_CASE(["x/$CC"], - [x*/c89|x*/c89_128|x*/c99|x*/c99_128|x*/cc|x*/cc128|x*/xlc|x*/xlc_v6|x*/xlc128|x*/xlc128_v6], - [#handle absolute path differently from PATH based program lookup - AS_CASE(["x$CC"], - [x/*], - [ - AS_IF([AS_EXECUTABLE_P([${CC}_r])],[PTHREAD_CC="${CC}_r"]) - AS_IF([test "x${CXX}" != "x"], [AS_IF([AS_EXECUTABLE_P([${CXX}_r])],[PTHREAD_CXX="${CXX}_r"])]) - ], - [ - AC_CHECK_PROGS([PTHREAD_CC],[${CC}_r],[$CC]) - AS_IF([test "x${CXX}" != "x"], [AC_CHECK_PROGS([PTHREAD_CXX],[${CXX}_r],[$CXX])]) - ] - ) - ]) - ;; - esac - fi -fi - -test -n "$PTHREAD_CC" || PTHREAD_CC="$CC" -test -n "$PTHREAD_CXX" || PTHREAD_CXX="$CXX" - -AC_SUBST([PTHREAD_LIBS]) -AC_SUBST([PTHREAD_CFLAGS]) -AC_SUBST([PTHREAD_CC]) -AC_SUBST([PTHREAD_CXX]) - -# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: -if test "x$ax_pthread_ok" = "xyes"; then - ifelse([$1],,[AC_DEFINE([HAVE_PTHREAD],[1],[Define if you have POSIX threads libraries and header files.])],[$1]) - : -else - ax_pthread_ok=no - $2 -fi -AC_LANG_POP -])dnl AX_PTHREAD diff --git a/vendor/freetype/builds/unix/configure.raw b/vendor/freetype/builds/unix/configure.raw deleted file mode 100644 index b3ced050979..00000000000 --- a/vendor/freetype/builds/unix/configure.raw +++ /dev/null @@ -1,1234 +0,0 @@ -# This file is part of the FreeType project. -# -# Process this file with autoconf to produce a configure script. -# -# Copyright (C) 2001-2025 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - -AC_INIT([FreeType], [@VERSION@], [freetype@nongnu.org], [freetype]) -AC_CONFIG_SRCDIR([ftconfig.h.in]) - - -# Don't forget to update `docs/VERSIONS.TXT'! - -version_info='26:4:20' -AC_SUBST([version_info]) -ft_version=`echo $version_info | tr : .` -AC_SUBST([ft_version]) - - -# checks for system type - -AC_CANONICAL_HOST - - -# checks for programs - -AC_PROG_CC -AC_PROG_CPP -AC_SUBST(EXEEXT) - -PKG_PROG_PKG_CONFIG([0.24]) - -LT_INIT(win32-dll) -AC_CHECK_HEADER([windows.h], [LT_PROG_RC]) - - -# checks for native programs to generate building tool - -if test ${cross_compiling} = yes; then - AC_CHECK_PROG(CC_BUILD, ${build}-gcc, ${build}-gcc) - test -z "${CC_BUILD}" && AC_CHECK_PROG(CC_BUILD, gcc, gcc) - test -z "${CC_BUILD}" && AC_CHECK_PROG(CC_BUILD, cc, cc, , , /usr/ucb/cc) - test -z "${CC_BUILD}" && AC_CHECK_PROG(CC_BUILD, clang, clang) - test -z "${CC_BUILD}" && AC_MSG_ERROR([cannot find native C compiler]) - - AC_MSG_CHECKING([for suffix of native executables]) - rm -f a.* b.* a_out.exe conftest.* - echo > conftest.c "int main(void) { return 0;}" - ${CC_BUILD} conftest.c || AC_MSG_ERROR([native C compiler is not working]) - rm -f conftest.c - if test -x a.out -o -x b.out -o -x conftest; then - EXEEXT_BUILD="" - elif test -x a_out.exe -o -x conftest.exe; then - EXEEXT_BUILD=".exe" - elif test -x conftest.*; then - EXEEXT_BUILD=`echo conftest.* | sed -n '1s/^.*\././'` - fi - rm -f a.* b.* a_out.exe conftest.* - AC_MSG_RESULT($EXEEXT_BUILD) - CFLAGS_BUILD= - LDFLAGS_BUILD= -else - CC_BUILD=${CC} - CFLAGS_BUILD=${CFLAGS} - LDFLAGS_BUILD=${LDFLAGS} - EXEEXT_BUILD=${EXEEXT} -fi - -AC_SUBST(CC_BUILD) -AC_SUBST(CFLAGS_BUILD) -AC_SUBST(LDFLAGS_BUILD) -AC_SUBST(EXEEXT_BUILD) - - -# 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 - -AC_CHECK_HEADERS([fcntl.h unistd.h]) - - -# checks for typedefs, structures, and compiler characteristics - -AC_C_CONST - -AC_ARG_ENABLE([freetype-config], - AS_HELP_STRING([--enable-freetype-config], [install freetype-config]), - [case "${enableval}" in - yes) enable_freetype_config="TRUE" ;; - no) enable_freetype_config="FALSE" ;; - *) AC_MSG_ERROR([unknown value '${enableval}' passed with --enable-freetype-config]) ;; - esac], [enable_freetype_config="FALSE"]) - -AC_SUBST(INSTALL_FT2_CONFIG, [$enable_freetype_config]) - -# checks for library functions - -AC_SYS_LARGEFILE - -# Here we check whether we can use our mmap file component. -# -# Note that `ftsystem.c` for Windows has its own mmap-like implementation -# not covered by `AC_FUNC_MMAP` and/or `FT_UNMAP_PARAM`. - -AC_ARG_ENABLE([mmap], - AS_HELP_STRING([--disable-mmap], - [do not check mmap() and do not use]), - [enable_mmap="no"], [enable_mmap="yes"]) -if test "x${enable_mmap}" != "xno"; then - case "$host" in - *-*-mingw*) - AC_MSG_CHECKING([for working mmap]) - AC_MSG_RESULT([using MapViewOfFile in Windows]) - FTSYS_SRC='$(TOP_DIR)/builds/windows/ftsystem.c' - ;; - *) - AC_FUNC_MMAP - if test "$ac_cv_func_mmap_fixed_mapped" = "yes"; then - FTSYS_SRC='$(PLATFORM_DIR)/ftsystem.c' - - AC_CHECK_DECLS([munmap], - [], - [], - [ - -#ifdef HAVE_UNISTD_H -#include -#endif -#include - - ]) - - FT_MUNMAP_PARAM - fi - ;; - esac -fi - -if test -z "$FTSYS_SRC"; then - FTSYS_SRC='$(BASE_DIR)/ftsystem.c' -fi -AC_SUBST([FTSYS_SRC]) - - -# get compiler flags right -# -# We try to make the compiler work for C99-strict source. Even if the -# C compiler is gcc and C99 flags are available, some system headers -# might be broken in C99 mode. We have to check whether compilation -# finishes successfully. -# -if test "x$GCC" = xyes; then - XX_CFLAGS="-Wall" - case "$host" in - *-*-mingw*) - XX_ANSIFLAGS="-pedantic" - ;; - *-*-aix*) - XX_ANSIFLAGS="-pedantic" - ;; - *) - XX_ANSIFLAGS="" - - for a in "-pedantic" "-std=c99" - do - AC_MSG_CHECKING([$CC compiler flag ${a} to assure ANSI C99 works correctly]) - orig_CFLAGS="${CFLAGS}" - CFLAGS="${CFLAGS} ${XX_ANSIFLAGS} ${a}" - AC_COMPILE_IFELSE([ - AC_LANG_PROGRAM([ - -#include - - ], - [ - - { - puts( "" ); - return 0; - } - - ])], - [AC_MSG_RESULT([ok, adding to XX_ANSIFLAGS]) - XX_ANSIFLAGS="${XX_ANSIFLAGS} ${a}" - ], - [AC_MSG_RESULT([no])]) - CFLAGS="${orig_CFLAGS}" - done - ;; - esac -else - case "$host" in - *-dec-osf*) - CFLAGS= - XX_CFLAGS="-std1 -g3" - XX_ANSIFLAGS= - ;; - *) - XX_CFLAGS= - XX_ANSIFLAGS= - ;; - esac -fi -AC_SUBST([XX_CFLAGS]) -AC_SUBST([XX_ANSIFLAGS]) - - -# It is recommended that shared libraries hide symbols except those with -# explicit __attribute__((visibility("default"))). -# -found_visibility_flag=no -AC_MSG_CHECKING([for -fvisibility=hidden compiler flag]) -orig_CFLAGS="${CFLAGS}" -CFLAGS="${CFLAGS} -fvisibility=hidden -Werror" -AC_COMPILE_IFELSE([ - AC_LANG_PROGRAM([ - -__attribute__(( visibility( "default" ) )) int foo( void ); -__attribute__(( visibility( "hidden" ) )) int bar( void ); - -int foo( void ) { return 0; } -int bar( void ) { return 1; } - - ], - [])], - [found_visibility_flag=yes - CFLAGS="${orig_CFLAGS} -fvisibility=hidden" - AC_MSG_RESULT(yes) - ], - [CFLAGS="${orig_CFLAGS}" - AC_MSG_RESULT(no)]) - -if test "${found_visibility_flag}" = "no"; then - AC_MSG_CHECKING([for -xldscope=hidden compiler flag]) - orig_CFLAGS="${CFLAGS}" - CFLAGS="${CFLAGS} -xldscope=hidden" - AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])], - [found_visibility_flag=yes - AC_MSG_RESULT(yes)], - [CFLAGS="${orig_CFLAGS}" - AC_MSG_RESULT(no)]) -fi - -# All library tests below try `pkg-config' first. If that fails, a function -# from the library is tested in the traditional autoconf way (zlib, bzip2), -# or a config script is called (libpng). -# -# The `xxx_reqpriv' variables are for the `Requires.private' field in -# `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_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 -# for a library by the user, no entry for this library is added to -# `Requires.private'. Instead, it gets added to `Libs.private' - - -# check for system zlib - -AC_ARG_WITH([zlib], - [AS_HELP_STRING([--with-zlib=@<:@yes|no|auto@:>@], - [use system zlib instead of internal library @<:@default=auto@:>@])], - [], [with_zlib=auto]) - -have_zlib=no -if test x"$with_zlib" = xyes -o x"$with_zlib" = xauto; then - zlib_pkg="zlib" - have_zlib_pkg=no - - if test x"$ZLIB_CFLAGS" = x -a x"$ZLIB_LIBS" = x; then - PKG_CHECK_EXISTS([$zlib_pkg], [have_zlib_pkg=yes]) - fi - PKG_CHECK_MODULES([ZLIB], [$zlib_pkg], - [have_zlib="yes (pkg-config)"], [:]) - - if test $have_zlib_pkg = yes; then - # we have zlib.pc - zlib_reqpriv="$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_libspriv="$ZLIB_LIBS" - zlib_libsstaticconf="$ZLIB_LIBS" - have_zlib="yes (ZLIB_CFLAGS and ZLIB_LIBS)" - else - # fall back to standard autoconf test - AC_CHECK_LIB([z], - [gzsetparams], - [AC_CHECK_HEADER([zlib.h], - [have_zlib="yes (autoconf test)" - zlib_libspriv="-lz" - zlib_libsstaticconf="$zlib_libspriv" - ZLIB_LIBS="$zlib_libspriv"])]) - fi - fi -fi - -if test x"$with_zlib" = xyes -a "$have_zlib" = no; then - AC_MSG_ERROR([external zlib support requested but library not found]) -fi - -SYSTEM_ZLIB= -if test "$have_zlib" != no; then - SYSTEM_ZLIB=yes -fi -AC_SUBST([SYSTEM_ZLIB]) - - -# check for system libbz2 - -AC_ARG_WITH([bzip2], - [AS_HELP_STRING([--with-bzip2=@<:@yes|no|auto@:>@], - [support bzip2 compressed fonts @<:@default=auto@:>@])], - [], [with_bzip2=auto]) - -have_bzip2=no -if test x"$with_bzip2" = xyes -o x"$with_bzip2" = xauto; then - bzip2_pkg="bzip2" - have_bzip2_pkg=no - - if test x"$BZIP2_CFLAGS" = x -a x"$BZIP2_LIBS" = x; then - PKG_CHECK_EXISTS([$bzip2_pkg], [have_bzip2_pkg=yes]) - fi - PKG_CHECK_MODULES([BZIP2], [$bzip2_pkg], - [have_bzip2="yes (pkg-config)"], [:]) - - if test $have_bzip2_pkg = yes; then - # we have bzip2.pc - bzip2_reqpriv="$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_libspriv="$BZIP2_LIBS" - bzip2_libsstaticconf="$BZIP2_LIBS" - have_bzip2="yes (BZIP2_CFLAGS and BZIP2_LIBS)" - else - # fall back to standard autoconf test - AC_CHECK_LIB([bz2], - [BZ2_bzDecompress], - [AC_CHECK_HEADER([bzlib.h], - [have_bzip2="yes (autoconf test)" - bzip2_libspriv="-lbz2" - bzip2_libsstaticconf="$bzip2_libspriv" - BZIP2_LIBS="$bzip2_libspriv"])]) - fi - fi -fi - -if test x"$with_bzip2" = xyes -a "$have_bzip2" = no; then - AC_MSG_ERROR([bzip2 support requested but library not found]) -fi - - -# check for system libpng - -AC_ARG_WITH([png], - [AS_HELP_STRING([--with-png=@<:@yes|no|auto@:>@], - [support png compressed OpenType embedded bitmaps @<:@default=auto@:>@])], - [], [with_png=auto]) - -have_libpng=no -if test x"$with_png" = xyes -o x"$with_png" = xauto; then - libpng_pkg="libpng" - have_libpng_pkg=no - - if test x"$LIBPNG_CFLAGS" = x -a x"$LIBPNG_LIBS" = x; then - PKG_CHECK_EXISTS([$libpng_pkg], [have_libpng_pkg=yes]) - fi - PKG_CHECK_MODULES([LIBPNG], [$libpng_pkg], - [have_libpng="yes (pkg-config)"], [:]) - - if test $have_libpng_pkg = yes; then - # we have libpng.pc - libpng_reqpriv="$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_libspriv="$LIBPNG_LIBS" - libpng_libsstaticconf="$LIBPNG_LIBS" - have_libpng="yes (LIBPNG_CFLAGS and LIBPNG_LIBS)" - else - # fall back to config script - AC_CHECK_PROG(have_libpng, [libpng-config], [yes (libpng-config)], [no]) - if test "$have_libpng" != no; then - LIBPNG_CFLAGS=`libpng-config --cflags` - LIBPNG_LIBS=`libpng-config --ldflags` - libpng_libspriv=`libpng-config --static --ldflags` - libpng_libsstaticconf="$libpng_libspriv" - fi - fi - fi -fi - -if test x"$with_png" = xyes -a "$have_libpng" = no; then - AC_MSG_ERROR([libpng support requested but library not found]) -fi - - -# check for system libharfbuzz - -AC_ARG_WITH([harfbuzz], - [AS_HELP_STRING([--with-harfbuzz=@<:@yes|dynamic|no|auto@:>@], - [improve auto-hinting of OpenType fonts @<:@default=auto@:>@])], - [], [with_harfbuzz=auto]) - -have_harfbuzz=no -if test x"$with_harfbuzz" = xyes -o x"$with_harfbuzz" = xauto; then - harfbuzz_pkg="harfbuzz >= 2.0.0" - have_harfbuzz_pkg=no - - if test x"$HARFBUZZ_CFLAGS" = x -a x"$HARFBUZZ_LIBS" = x; then - PKG_CHECK_EXISTS([$harfbuzz_pkg], [have_harfbuzz_pkg=yes]) - fi - PKG_CHECK_MODULES([HARFBUZZ], [$harfbuzz_pkg], - [have_harfbuzz="yes (pkg-config)"], [:]) - - if test $have_harfbuzz_pkg = yes; then - # we have harfbuzz.pc - harfbuzz_reqpriv="$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_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 - # different test; additionally, it has too many dependencies - : - fi - fi -fi - -have_harfbuzz_dynamic=no -if test x"$have_harfbuzz" = xno; then - if test x"$with_harfbuzz" = xdynamic -o x"$with_harfbuzz" = xauto; then - case "$host" in - *-*-mingw*) - # Windows uses its own LoadLibrary(), set variables to dynamic. - have_harfbuzz_dynamic=yes - have_harfbuzz="yes (dynamic)" - ;; - *) - # Check for libdl - AC_CHECK_LIB([c], - [dlopen], - [have_harfbuzz_dynamic=yes], - AC_CHECK_LIB([dl], - [dlopen], - [have_harfbuzz_dynamic=yes - need_libdl=yes])) - if test x"$have_harfbuzz_dynamic" = xyes; then - have_harfbuzz="yes (dynamic)" - HARFBUZZ_CFLAGS= - if test x"$need_libdl" = xyes; then - HARFBUZZ_LIBS="-ldl" - fi - fi - ;; - esac - fi -fi - -if test x"$have_harfbuzz" = xno; then - if test x"$with_harfbuzz" != xno -a "$with_harfbuzz" != xauto; then - AC_MSG_ERROR([harfbuzz support requested but library not found]) - fi -fi - -# check for system libbrotlidec - -AC_ARG_WITH([brotli], - [AS_HELP_STRING([--with-brotli=@<:@yes|no|auto@:>@], - [support decompression of WOFF2 streams @<:@default=auto@:>@])], - [], [with_brotli=auto]) - -have_brotli=no -if test x"$with_brotli" = xyes -o x"$with_brotli" = xauto; then - brotli_pkg="libbrotlidec" - have_brotli_pkg=no - - if test x"$BROTLI_CFLAGS" = x -a x"$BROTLI_LIBS" = x; then - PKG_CHECK_EXISTS([$brotli_pkg], [have_brotli_pkg=yes]) - fi - PKG_CHECK_MODULES([BROTLI], [$brotli_pkg], - [have_brotli="yes (pkg-config)"], [:]) - - if test $have_brotli_pkg = yes; then - # we have libbrotlidec.pc - brotli_reqpriv="$brotli_pkg" - brotli_libspriv= - brotli_libsstaticconf=`$PKG_CONFIG --static --libs "$brotli_pkg"` - else - brotli_reqpriv= - - if test "$have_brotli" != no; then - # BROTLI_CFLAGS and BROTLI_LIBS are set by the user - brotli_libspriv="$BROTLI_LIBS" - brotli_libsstaticconf="$BROTLI_LIBS" - have_brotli="yes (BROTLI_CFLAGS and BROTLI_LIBS)" - else - # since Brotli is quite a new library we don't fall back to a - # different test - : - fi - fi -fi - -if test x"$with_brotli" = xyes -a "$have_brotli" = no; then - AC_MSG_ERROR([brotli support requested but library not found]) -fi - - -# Checks for the demo programs. -# -# FreeType doesn't need this. However, since the demo program repository -# doesn't come with a `configure` script of its own, we integrate the tests -# here for simplicity. - -# We need `clock_gettime` from 'librt' for the `ftbench` demo program. -# -# The code is modeled after gnulib's file `clock_time.m4`, ignoring -# very old Solaris systems. -LIB_CLOCK_GETTIME= -AC_SEARCH_LIBS([clock_gettime], - [rt], - [test "$ac_cv_search_clock_gettime" = "none required" \ - || LIB_CLOCK_GETTIME=$ac_cv_search_clock_gettime]) - -FT_DEMO_CFLAGS="" -FT_DEMO_LDFLAGS="$LIB_CLOCK_GETTIME" - -# 'librsvg' is needed to demonstrate SVG support. -AC_ARG_WITH([librsvg], - [AS_HELP_STRING([--with-librsvg=@<:@yes|no|auto@:>@], - [support OpenType SVG fonts in FreeType demo programs @<:@default=auto@:>@])], - [], [with_librsvg=auto]) - -have_librsvg=no -if test x"$with_librsvg" = xyes -o x"$with_librsvg" = xauto; then - PKG_CHECK_MODULES([LIBRSVG], [librsvg-2.0 >= 2.46.0], - [have_librsvg="yes (pkg-config)"], [:]) - - if test "$have_librsvg" != no; then - FT_DEMO_CFLAGS="$FT_DEMO_CFLAGS $LIBRSVG_CFLAGS -DHAVE_LIBRSVG" - FT_DEMO_LDFLAGS="$FT_DEMO_LDFLAGS $LIBRSVG_LIBS" - fi -fi - -if test x"$with_librsvg" = xyes -a "$have_librsvg" = no; then - AC_MSG_ERROR([librsvg support requested but library not found]) -fi - -AC_SUBST([FT_DEMO_CFLAGS]) -AC_SUBST([FT_DEMO_LDFLAGS]) - - -# Some options handling SDKs/archs in CFLAGS should be copied -# to LDFLAGS. Apple TechNote 2137 recommends to include these -# options in CFLAGS but not in LDFLAGS. - -save_config_args=$* -set dummy ${CFLAGS} -i=1 -while test $i -le $# -do - c=$1 - - case "${c}" in - -isysroot|-arch) # options taking 1 argument - a=$2 - AC_MSG_CHECKING([whether CFLAGS and LDFLAGS share ${c} ${a}]) - if expr " ${LDFLAGS} " : ".* ${c} *${a}.*" > /dev/null - then - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no, copy to LDFLAGS]) - LDFLAGS="${LDFLAGS} ${c} ${a}" - fi - shift 1 - ;; - -m32|-m64|-march=*|-mcpu=*) # options taking no argument - AC_MSG_CHECKING([whether CFLAGS and LDFLAGS share ${c}]) - if expr " ${LDFLAGS} " : ".* ${c} *${a}.*" > /dev/null - then - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no, copy to LDFLAGS]) - LDFLAGS="${LDFLAGS} ${c}" - fi - ;; - # *) - # AC_MSG_RESULT([${c} is not copied to LDFLAGS]) - # ;; - esac - - shift 1 -done -set ${save_config_args} - - -# Whether to use Mac OS resource-based fonts. - -ftmac_c="" # src/base/ftmac.c should not be included in makefiles by default - -AC_ARG_WITH([old-mac-fonts], - AS_HELP_STRING([--with-old-mac-fonts], - [allow Mac resource-based fonts to be used])) -if test x$with_old_mac_fonts = xyes; then - orig_LDFLAGS="${LDFLAGS}" - AC_MSG_CHECKING([CoreServices & ApplicationServices of Mac OS X]) - ft2_extra_libs="-Wl,-framework,CoreServices -Wl,-framework,ApplicationServices" - LDFLAGS="$LDFLAGS $ft2_extra_libs" - AC_LINK_IFELSE([ - AC_LANG_PROGRAM([ - -#if defined(__GNUC__) && defined(__APPLE_CC__) -# include -# include -#else -# include -# include -#endif - - ], - [ - - short res = 0; - - - UseResFile( res ); - - ])], - [AC_MSG_RESULT([ok]) - ftmac_c='ftmac.c' - AC_MSG_CHECKING([whether OS_INLINE macro is ANSI compatible]) - orig_CFLAGS="$CFLAGS -DFT_MACINTOSH" - CFLAGS="$CFLAGS $XX_CFLAGS $XX_ANSIFLAGS" - AC_COMPILE_IFELSE([ - AC_LANG_PROGRAM([ - -#if defined(__GNUC__) && defined(__APPLE_CC__) -# include -# include -#else -# include -# include -#endif - - ], - [ - - /* OSHostByteOrder() is typed as OS_INLINE */ - int32_t os_byte_order = OSHostByteOrder(); - - - if ( OSBigEndian != os_byte_order ) - return 1; - - ])], - [AC_MSG_RESULT([ok]) - CFLAGS="$orig_CFLAGS" - CFLAGS="$CFLAGS -DHAVE_ANSI_OS_INLINE=1" - ], - [AC_MSG_RESULT([no, ANSI incompatible]) - CFLAGS="$orig_CFLAGS" - ]) - AC_MSG_CHECKING([type ResourceIndex]) - orig_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $XX_CFLAGS $XX_ANSIFLAGS" - AC_COMPILE_IFELSE([ - AC_LANG_PROGRAM([ - -#if defined(__GNUC__) && defined(__APPLE_CC__) -# include -# include -#else -# include -# include -# include -#endif - - ], - [ - - ResourceIndex i = 0; - return i; - - ])], - [AC_MSG_RESULT([ok]) - CFLAGS="$orig_CFLAGS" - CFLAGS="$CFLAGS -DHAVE_TYPE_RESOURCE_INDEX=1" - ], - [AC_MSG_RESULT([no]) - CFLAGS="$orig_CFLAGS" - CFLAGS="$CFLAGS -DHAVE_TYPE_RESOURCE_INDEX=0" - ])], - [AC_MSG_RESULT([not found]) - ft2_extra_libs="" - LDFLAGS="${orig_LDFLAGS}" - CFLAGS="$CFLAGS -DDARWIN_NO_CARBON"]) -else - case x$host_os in - xdarwin*) - dnl AC_MSG_WARN([host system is MacOS but configured to build without Carbon]) - CFLAGS="$CFLAGS -DDARWIN_NO_CARBON" - ;; - *) - ;; - esac -fi - - -# Whether to use FileManager, which is deprecated since Mac OS X 10.4. - -AC_ARG_WITH([fsspec], - AS_HELP_STRING([--with-fsspec], - [use obsolete FSSpec API of MacOS, if available (default=yes)])) -if test x$with_fsspec = xno; then - CFLAGS="$CFLAGS -DHAVE_FSSPEC=0" -elif test x$with_old_mac_fonts = xyes -a x$with_fsspec != x; then - AC_MSG_CHECKING([FSSpec-based FileManager]) - AC_LINK_IFELSE([ - AC_LANG_PROGRAM([ - -#if defined(__GNUC__) && defined(__APPLE_CC__) -# include -# include -#else -# include -# include -#endif - - ], - [ - - FCBPBPtr paramBlock; - short vRefNum; - long dirID; - ConstStr255Param fileName; - FSSpec* spec; - - - /* FSSpec functions: deprecated since Mac OS X 10.4 */ - PBGetFCBInfoSync( paramBlock ); - FSMakeFSSpec( vRefNum, dirID, fileName, spec ); - - ])], - [AC_MSG_RESULT([ok]) - CFLAGS="$CFLAGS -DHAVE_FSSPEC=1"], - [AC_MSG_RESULT([not found]) - CFLAGS="$CFLAGS -DHAVE_FSSPEC=0"]) -fi - - -# Whether to use FileManager in Carbon since MacOS 9.x. - -AC_ARG_WITH([fsref], - AS_HELP_STRING([--with-fsref], - [use Carbon FSRef API of MacOS, if available (default=yes)])) -if test x$with_fsref = xno; then - AC_MSG_WARN([ -*** WARNING - FreeType2 built without FSRef API cannot load - data-fork fonts on MacOS, except of XXX.dfont. - ]) - CFLAGS="$CFLAGS -DHAVE_FSREF=0" -elif test x$with_old_mac_fonts = xyes -a x$with_fsref != x; then - AC_MSG_CHECKING([FSRef-based FileManager]) - AC_LINK_IFELSE([ - AC_LANG_PROGRAM([ - -#if defined(__GNUC__) && defined(__APPLE_CC__) -# include -# include -#else -# include -# include -#endif - - ], - [ - - short vRefNum; - long dirID; - ConstStr255Param fileName; - - Boolean* isDirectory; - UInt8* path; - SInt16 desiredRefNum; - SInt16* iterator; - SInt16* actualRefNum; - HFSUniStr255* outForkName; - FSVolumeRefNum volume; - FSCatalogInfoBitmap whichInfo; - FSCatalogInfo* catalogInfo; - FSForkInfo* forkInfo; - FSRef* ref; - -#if HAVE_FSSPEC - FSSpec* spec; -#endif - - /* FSRef functions: no need to check? */ - FSGetForkCBInfo( desiredRefNum, volume, iterator, - actualRefNum, forkInfo, ref, - outForkName ); - FSPathMakeRef( path, ref, isDirectory ); - -#if HAVE_FSSPEC - FSpMakeFSRef ( spec, ref ); - FSGetCatalogInfo( ref, whichInfo, catalogInfo, - outForkName, spec, ref ); -#endif - ])], - [AC_MSG_RESULT([ok]) - CFLAGS="$CFLAGS -DHAVE_FSREF=1"], - [AC_MSG_RESULT([not found]) - CFLAGS="$CFLAGS -DHAVE_FSREF=0"]) -fi - - -# Whether to use QuickDraw API in ToolBox, which is deprecated since -# Mac OS X 10.4. - -AC_ARG_WITH([quickdraw-toolbox], - AS_HELP_STRING([--with-quickdraw-toolbox], - [use MacOS QuickDraw in ToolBox, if available (default=yes)])) -if test x$with_quickdraw_toolbox = xno; then - CFLAGS="$CFLAGS -DHAVE_QUICKDRAW_TOOLBOX=0" -elif test x$with_old_mac_fonts = xyes -a x$with_quickdraw_toolbox != x; then - AC_MSG_CHECKING([QuickDraw FontManager functions in ToolBox]) - AC_LINK_IFELSE([ - AC_LANG_PROGRAM([ - -#if defined(__GNUC__) && defined(__APPLE_CC__) -# include -# include -#else -# include -# include -#endif - - ], - [ - - Str255 familyName; - SInt16 familyID = 0; - FMInput* fmIn = NULL; - FMOutput* fmOut = NULL; - - - GetFontName( familyID, familyName ); - GetFNum( familyName, &familyID ); - fmOut = FMSwapFont( fmIn ); - - ])], - [AC_MSG_RESULT([ok]) - CFLAGS="$CFLAGS -DHAVE_QUICKDRAW_TOOLBOX=1"], - [AC_MSG_RESULT([not found]) - CFLAGS="$CFLAGS -DHAVE_QUICKDRAW_TOOLBOX=0"]) -fi - - -# Whether to use QuickDraw API in Carbon, which is deprecated since -# Mac OS X 10.4. - -AC_ARG_WITH([quickdraw-carbon], - AS_HELP_STRING([--with-quickdraw-carbon], - [use MacOS QuickDraw in Carbon, if available (default=yes)])) -if test x$with_quickdraw_carbon = xno; then - CFLAGS="$CFLAGS -DHAVE_QUICKDRAW_CARBON=0" -elif test x$with_old_mac_fonts = xyes -a x$with_quickdraw_carbon != x; then - AC_MSG_CHECKING([QuickDraw FontManager functions in Carbon]) - AC_LINK_IFELSE([ - AC_LANG_PROGRAM([ - -#if defined(__GNUC__) && defined(__APPLE_CC__) -# include -# include -#else -# include -# include -#endif - - ], - [ - - FMFontFamilyIterator famIter; - FMFontFamily family; - Str255 famNameStr; - FMFontFamilyInstanceIterator instIter; - FMFontStyle style; - FMFontSize size; - FMFont font; - FSSpec* pathSpec; - - - FMCreateFontFamilyIterator( NULL, NULL, kFMUseGlobalScopeOption, - &famIter ); - FMGetNextFontFamily( &famIter, &family ); - FMGetFontFamilyName( family, famNameStr ); - FMCreateFontFamilyInstanceIterator( family, &instIter ); - FMGetNextFontFamilyInstance( &instIter, &font, &style, &size ); - FMDisposeFontFamilyInstanceIterator( &instIter ); - FMDisposeFontFamilyIterator( &famIter ); - FMGetFontContainer( font, pathSpec ); - - ])], - [AC_MSG_RESULT([ok]) - CFLAGS="$CFLAGS -DHAVE_QUICKDRAW_CARBON=1"], - [AC_MSG_RESULT([not found]) - CFLAGS="$CFLAGS -DHAVE_QUICKDRAW_CARBON=0"]) -fi - - -# Whether to use AppleTypeService since Mac OS X. - -AC_ARG_WITH([ats], - AS_HELP_STRING([--with-ats], - [use AppleTypeService, if available (default=yes)])) -if test x$with_ats = xno; then - CFLAGS="$CFLAGS -DHAVE_ATS=0" -elif test x$with_old_mac_fonts = xyes -a x$with_ats != x; then - AC_MSG_CHECKING([AppleTypeService functions]) - AC_LINK_IFELSE([ - AC_LANG_PROGRAM([ - -#if defined(__GNUC__) && defined(__APPLE_CC__) -# include -# include -#else -# include -# include -#endif - - ], - [ - - FSSpec* pathSpec; - - - ATSFontFindFromName( NULL, kATSOptionFlagsUnRestrictedScope ); -#if HAVE_FSSPEC - ATSFontGetFileSpecification( 0, pathSpec ); -#endif - - ])], - [AC_MSG_RESULT([ok]) - CFLAGS="$CFLAGS -DHAVE_ATS=1"], - [AC_MSG_RESULT([not found]) - CFLAGS="$CFLAGS -DHAVE_ATS=0"]) -fi - -case "$CFLAGS" in - *HAVE_FSSPEC* | *HAVE_FSREF* | *HAVE_QUICKDRAW* | *HAVE_ATS* ) - AC_MSG_WARN([ -*** WARNING - FSSpec/FSRef/QuickDraw/ATS options are explicitly given, - thus it is recommended to replace src/base/ftmac.c by builds/mac/ftmac.c. - ]) - CFLAGS="$CFLAGS "'-I$(TOP_DIR)/builds/mac/' - ;; - *) - ;; -esac - -# Check for pthreads - -AX_PTHREAD([have_pthread=yes], [have_pthread=no]) - -# Check for Python and docwriter -PYTHON_MIN_VERSION=3.5 -have_py3=no -have_docwriter=no -PIP=pip - -AC_CHECK_PROGS([PYTHON], [python3 python], [missing]) -if test "x$PYTHON" != "xmissing"; then - AX_PROG_PYTHON_VERSION([$PYTHON_MIN_VERSION], [have_py3=yes], []) - - if test "x$have_py3" = "xyes"; then - PIP="$PYTHON -m $PIP" - AC_MSG_CHECKING([for `docwriter' Python module]) - $PYTHON -m docwriter -h > /dev/null 2>&1 - if test "x$?" = "x0"; then - have_docwriter=yes - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no]) - fi - fi -fi - - -# entries in Requires.private are separated by commas -PKGCONFIG_REQUIRES_PRIVATE="$zlib_reqpriv, \ - $bzip2_reqpriv, \ - $libpng_reqpriv, \ - $harfbuzz_reqpriv, \ - $brotli_reqpriv" -# beautify -PKGCONFIG_REQUIRES_PRIVATE=`echo "$PKGCONFIG_REQUIRES_PRIVATE" \ - | sed -e 's/^ *//' \ - -e 's/ *$//' \ - -e 's/, */,/g' \ - -e 's/,,*/,/g' \ - -e 's/^,*//' \ - -e 's/,*$//' \ - -e 's/,/, /g'` - -PKGCONFIG_LIBS_PRIVATE="$zlib_libspriv \ - $bzip2_libspriv \ - $libpng_libspriv \ - $harfbuzz_libspriv \ - $brotli_libspriv \ - $ft2_extra_libs" -# beautify -PKGCONFIG_LIBS_PRIVATE=`echo "$PKGCONFIG_LIBS_PRIVATE" \ - | sed -e 's/^ *//' \ - -e 's/ *$//' \ - -e 's/ */ /g'` - -LIBSSTATIC_CONFIG="-lfreetype \ - $zlib_libsstaticconf \ - $bzip2_libsstaticconf \ - $libpng_libsstaticconf \ - $harfbuzz_libsstaticconf \ - $brotli_libsstaticconf \ - $ft2_extra_libs" -# remove -L/usr/lib and -L/usr/lib64 since `freetype-config' adds them later -# on if necessary; also beautify -LIBSSTATIC_CONFIG=`echo "$LIBSSTATIC_CONFIG" \ - | sed -e 's|-L */usr/lib64/* | |g' \ - -e 's|-L */usr/lib/* | |g' \ - -e 's/^ *//' \ - -e 's/ *$//' \ - -e 's/ */ /g'` - -# If FreeType gets installed with `--disable-shared', don't use -# 'private' fields. `pkg-config' only looks into `.pc' files and is -# completely agnostic to whether shared libraries are actually present -# or not. As a consequence, the user had to specify `--static' while -# calling `pkg-config', which configure scripts are normally not -# prepared for. - -PKGCONFIG_REQUIRES= -PKGCONFIG_LIBS='-L${libdir} -lfreetype' - -if test $enable_shared = "no"; then - PKGCONFIG_REQUIRES="$PKGCONFIG_REQUIRES $PKGCONFIG_REQUIRES_PRIVATE" - PKGCONFIG_REQUIRES_PRIVATE= - PKGCONFIG_LIBS="$PKGCONFIG_LIBS $PKGCONFIG_LIBS_PRIVATE" - PKGCONFIG_LIBS_PRIVATE= -fi - -AC_SUBST([ftmac_c]) -AC_SUBST([PKGCONFIG_REQUIRES]) -AC_SUBST([PKGCONFIG_LIBS]) -AC_SUBST([PKGCONFIG_REQUIRES_PRIVATE]) -AC_SUBST([PKGCONFIG_LIBS_PRIVATE]) -AC_SUBST([LIBSSTATIC_CONFIG]) - -AC_SUBST([hardcode_libdir_flag_spec]) -AC_SUBST([wl]) -AC_SUBST([build_libtool_libs]) - - -# changing LDFLAGS value should only be done after -# lt_cv_prog_compiler_static_works test - -ftoption_set() -{ - regexp="-e \\\"s|.*#.*def.*$1\>.*|#define $1|\\\"" - FTOPTION_H_SED="$FTOPTION_H_SED $regexp" -} - -ftoption_unset() -{ - regexp="-e \\\"s|.*#.*def.*$1\>.*|/* #undef $1 */|\\\"" - FTOPTION_H_SED="$FTOPTION_H_SED $regexp" -} - -if test "$have_zlib" != no; then - CFLAGS="$CFLAGS $ZLIB_CFLAGS" - LDFLAGS="$LDFLAGS $ZLIB_LIBS" - ftoption_set FT_CONFIG_OPTION_SYSTEM_ZLIB -else - ftoption_unset FT_CONFIG_OPTION_SYSTEM_ZLIB -fi -if test "$have_bzip2" != no; then - CFLAGS="$CFLAGS $BZIP2_CFLAGS" - LDFLAGS="$LDFLAGS $BZIP2_LIBS" - ftoption_set FT_CONFIG_OPTION_USE_BZIP2 -else - ftoption_unset FT_CONFIG_OPTION_USE_BZIP2 -fi -if test "$have_libpng" != no; then - CFLAGS="$CFLAGS $LIBPNG_CFLAGS" - LDFLAGS="$LDFLAGS $LIBPNG_LIBS" - ftoption_set FT_CONFIG_OPTION_USE_PNG -else - ftoption_unset FT_CONFIG_OPTION_USE_PNG -fi -if test "$have_harfbuzz" != no; then - CFLAGS="$CFLAGS $HARFBUZZ_CFLAGS" - LDFLAGS="$LDFLAGS $HARFBUZZ_LIBS" - ftoption_set FT_CONFIG_OPTION_USE_HARFBUZZ -else - ftoption_unset FT_CONFIG_OPTION_USE_HARFBUZZ -fi -if test "$have_harfbuzz_dynamic" != no; then - ftoption_set FT_CONFIG_OPTION_USE_HARFBUZZ_DYNAMIC -else - ftoption_unset FT_CONFIG_OPTION_USE_HARFBUZZ_DYNAMIC -fi -if test "$have_brotli" != no; then - CFLAGS="$CFLAGS $BROTLI_CFLAGS" - LDFLAGS="$LDFLAGS $BROTLI_LIBS" - ftoption_set FT_CONFIG_OPTION_USE_BROTLI -else - ftoption_unset FT_CONFIG_OPTION_USE_BROTLI -fi - -if test "$have_pthread" != no; then - CFLAGS="$CFLAGS $PTHREAD_CFLAGS" - LDFLAGS="$LDFLAGS $PTHREAD_CFLAGS $PTHREAD_LIBS" -fi - -AC_SUBST([CFLAGS]) -AC_SUBST([LDFLAGS]) - -# We don't want to use a template file for `ftoption.h', since compilation -# should work without calling a configure script also. For this reason, we -# copy the `include/freetype/config/ftoption.h' file to the `unix/builds' -# directory (using a dummy `AC_CONFIG_FILES' call) and apply the just -# constructed $FTOPTION_H_SED regexp (using the post-action of -# `AC_CONFIG_FILES'); this is also the version that gets installed later on. -# -AC_CONFIG_FILES([ftoption.h:${srcdir}/../../include/freetype/config/ftoption.h], - [mv ftoption.h ftoption.tmp - eval "sed $FTOPTION_H_SED < ftoption.tmp > ftoption.h" - rm ftoption.tmp], - [FTOPTION_H_SED="$FTOPTION_H_SED"]) - -AC_CONFIG_HEADERS([ftconfig.h]) - -# create the Unix-specific sub-Makefiles `builds/unix/unix-def.mk' -# and `builds/unix/unix-cc.mk' that will be used by the build system -# -AC_CONFIG_FILES([unix-cc.mk:unix-cc.in - unix-def.mk:unix-def.in]) - -AC_OUTPUT - -AC_MSG_NOTICE([ - -Library configuration: - external zlib: $have_zlib - bzip2: $have_bzip2 - libpng: $have_libpng - harfbuzz: $have_harfbuzz - brotli: $have_brotli - pthread: $have_pthread -]) - -# Warn if docwriter is not installed - -if test $have_docwriter = no; then - AC_MSG_WARN([ - `make refdoc' will fail since pip package `docwriter' is not installed. - To install, run `$PIP install docwriter', or to use a Python - virtual environment, run `make refdoc-venv' (requires pip package - `virtualenv'). These operations require Python >= $PYTHON_MIN_VERSION. - ]) -fi - -# Warn if pthread is not available - -if test $have_pthread = no; then - AC_MSG_WARN([ - `FT_DEBUG_LOGGING' will not work since the `pthread' library is not - available. This warning can be safely ignored if you don't plan to use - this configuration macro. - ]) -fi - -# end of configure.raw diff --git a/vendor/freetype/builds/unix/detect.mk b/vendor/freetype/builds/unix/detect.mk deleted file mode 100644 index e1c85a957ed..00000000000 --- a/vendor/freetype/builds/unix/detect.mk +++ /dev/null @@ -1,99 +0,0 @@ -# -# FreeType 2 configuration file to detect a UNIX host platform. -# - - -# Copyright (C) 1996-2025 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - -.PHONY: setup - -ifeq ($(PLATFORM),ansi) - - # Note: this test is duplicated in "builds/toplevel.mk". - # - is_unix := $(strip $(wildcard /sbin/init) \ - $(wildcard /usr/sbin/init) \ - $(wildcard /dev/null) \ - $(wildcard /hurd/auth)) - ifneq ($(is_unix),) - - PLATFORM := unix - - endif # test is_unix -endif # test PLATFORM ansi - -ifeq ($(PLATFORM),unix) - COPY := cp - DELETE := rm -f - CAT := cat - - # If `devel' is the requested target, we use a special configuration - # file named `unix-dev.mk'. It disables optimization and libtool. - # - ifneq ($(findstring devel,$(MAKECMDGOALS)),) - CONFIG_FILE := unix-dev.mk - CC := gcc - - .PHONY: devel - devel: setup - @: - else - - # If `lcc' is the requested target, we use a special configuration - # file named `unix-lcc.mk'. It disables libtool for LCC. - # - ifneq ($(findstring lcc,$(MAKECMDGOALS)),) - CONFIG_FILE := unix-lcc.mk - CC := lcc - - .PHONY: lcc - lcc: setup - @: - else - - # If a Unix platform is detected, the configure script is called and - # `unix-def.mk' together with `unix-cc.mk' is created. - # - # Arguments to `configure' should be in the CFG variable. Example: - # - # make CFG="--prefix=/usr --disable-static" - # - # If you need to set CFLAGS or LDFLAGS, do it here also. - # - # Feel free to add support for other platform specific compilers in - # this directory (e.g. solaris.mk + changes here to detect the - # platform). - # - CONFIG_FILE := unix.mk - must_configure := 1 - - .PHONY: unix - unix: setup - @: - endif - endif - - have_Makefile := $(wildcard $(OBJ_DIR)/Makefile) - - setup: std_setup - ifdef must_configure - ifneq ($(have_Makefile),) - # we are building FT2 not in the src tree - $(TOP_DIR)/builds/unix/configure $(value CFG) - else - cd builds/unix; \ - ./configure $(value CFG) - endif - endif - -endif # test PLATFORM unix - - -# EOF diff --git a/vendor/freetype/builds/unix/freetype-config.in b/vendor/freetype/builds/unix/freetype-config.in deleted file mode 100644 index 911b5347c71..00000000000 --- a/vendor/freetype/builds/unix/freetype-config.in +++ /dev/null @@ -1,211 +0,0 @@ -#! /bin/sh -# -# Copyright (C) 2000-2025 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - -LC_ALL=C -export LC_ALL - - -# if `pkg-config' is available, use values from `freetype2.pc' -%PKG_CONFIG% --atleast-pkgconfig-version 0.24 >/dev/null 2>&1 -if test $? -eq 0 ; then - # note that option `--variable' is not affected by the - # PKG_CONFIG_SYSROOT_DIR environment variable - if test "x$SYSROOT" != "x" ; then - PKG_CONFIG_SYSROOT_DIR="$SYSROOT" - export PKG_CONFIG_SYSROOT_DIR - fi - - prefix=`%PKG_CONFIG% --variable prefix freetype2` - exec_prefix=`%PKG_CONFIG% --variable exec_prefix freetype2` - - includedir=`%PKG_CONFIG% --variable includedir freetype2` - libdir=`%PKG_CONFIG% --variable libdir freetype2` - - version=`%PKG_CONFIG% --modversion freetype2` - - cflags=`%PKG_CONFIG% --cflags freetype2` - dynamic_libs=`%PKG_CONFIG% --libs freetype2` - static_libs=`%PKG_CONFIG% --static --libs freetype2` -else - prefix="%prefix%" - exec_prefix="%exec_prefix%" - - includedir="%includedir%" - libdir="%libdir%" - - version=%ft_version% - - cflags="-I${SYSROOT}$includedir/freetype2" - dynamic_libs="-lfreetype" - static_libs="%LIBSSTATIC_CONFIG%" - if test "${SYSROOT}$libdir" != "/usr/lib" && - test "${SYSROOT}$libdir" != "/usr/lib64" ; then - libs_L="-L${SYSROOT}$libdir" - fi -fi - -orig_prefix=$prefix -orig_exec_prefix=$exec_prefix - -orig_includedir=$includedir -orig_libdir=$libdir - -include_suffix=`echo $includedir | sed "s|$prefix||"` -lib_suffix=`echo $libdir | sed "s|$exec_prefix||"` - - -usage() -{ - cat <&2 -fi - - -while test $# -gt 0 ; do - case "$1" in - -*=*) - optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` - ;; - *) - optarg= - ;; - esac - - case $1 in - --prefix=*) - prefix=$optarg - local_prefix=yes - ;; - --prefix) - echo_prefix=yes - ;; - --exec-prefix=*) - exec_prefix=$optarg - exec_prefix_set=yes - local_prefix=yes - ;; - --exec-prefix) - echo_exec_prefix=yes - ;; - --version) - echo_version=yes - break - ;; - --ftversion) - echo_ft_version=yes - ;; - --cflags) - echo_cflags=yes - ;; - --libs) - echo_libs=yes - ;; - --libtool) - echo_libtool=yes - ;; - --static) - show_static=yes - ;; - --help) - usage 0 - ;; - *) - usage 1 1>&2 - ;; - esac - shift -done - - -if test "$local_prefix" = "yes" ; then - if test "$exec_prefix_set" != "yes" ; then - exec_prefix=$prefix - fi -fi - -if test "$local_prefix" = "yes" ; then - includedir=${prefix}${include_suffix} - if test "$exec_prefix_set" = "yes" ; then - libdir=${exec_prefix}${lib_suffix} - else - libdir=${prefix}${lib_suffix} - fi -fi - - -if test "$echo_version" = "yes" ; then - echo $version -fi - -if test "$echo_prefix" = "yes" ; then - echo ${SYSROOT}$prefix -fi - -if test "$echo_exec_prefix" = "yes" ; then - echo ${SYSROOT}$exec_prefix -fi - -if test "$echo_ft_version" = "yes" ; then - 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/freetype.h \ - | grep FREETYPE_MINOR \ - | sed 's/.*[ ]\([0-9][0-9]*\).*/\1/'` - 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 - echo $cflags | sed "s|$orig_includedir/freetype2|$includedir/freetype2|" -fi - -if test "$echo_libs" = "yes" ; then - if test "$show_static" = "yes" ; then - libs="$libs_L $static_libs" - else - libs="$libs_L $dynamic_libs" - fi - echo $libs | sed "s|$orig_libdir|$libdir|" -fi - -if test "$echo_libtool" = "yes" ; then - echo ${SYSROOT}$libdir/libfreetype.la -fi - -# EOF diff --git a/vendor/freetype/builds/unix/freetype2.in b/vendor/freetype/builds/unix/freetype2.in deleted file mode 100644 index fe389f4b6fe..00000000000 --- a/vendor/freetype/builds/unix/freetype2.in +++ /dev/null @@ -1,14 +0,0 @@ -prefix=%prefix% -exec_prefix=%exec_prefix% -libdir=%libdir% -includedir=%includedir% - -Name: FreeType 2 -URL: https://freetype.org -Description: A free, high-quality, and portable font engine. -Version: %ft_version% -Requires: %PKGCONFIG_REQUIRES% -Requires.private: %PKGCONFIG_REQUIRES_PRIVATE% -Libs: %PKGCONFIG_LIBS% -Libs.private: %PKGCONFIG_LIBS_PRIVATE% -Cflags: -I${includedir}/freetype2 diff --git a/vendor/freetype/builds/unix/freetype2.m4 b/vendor/freetype/builds/unix/freetype2.m4 deleted file mode 100644 index ecada6e332d..00000000000 --- a/vendor/freetype/builds/unix/freetype2.m4 +++ /dev/null @@ -1,194 +0,0 @@ -# Configure paths for FreeType2 -# Marcelo Magallon 2001-10-26, based on `gtk.m4` by Owen Taylor -# -# Copyright (C) 2001-2025 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. -# -# As a special exception to the FreeType project license, this file may be -# distributed as part of a program that contains a configuration script -# generated by Autoconf, under the same distribution terms as the rest of -# that program. -# -# serial 7 - -# AC_CHECK_FT2([MINIMUM-VERSION [, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]]) -# Test for FreeType 2, and define FT2_CFLAGS and FT2_LIBS. -# MINIMUM-VERSION is what libtool reports; the default is '7.0.1' (this is -# FreeType 2.0.4). -# -# To make this code work with older autoconf versions, `AS_HELP_STRING` is -# not quoted. -# -AC_DEFUN([AC_CHECK_FT2], - [# Get the cflags and libraries from the freetype-config script - # - AC_ARG_WITH([ft-prefix], - AS_HELP_STRING([--with-ft-prefix=PREFIX], - [Prefix where FreeType is installed (optional)]), - [ft_config_prefix="$withval"], - [ft_config_prefix=""]) - - AC_ARG_WITH([ft-exec-prefix], - AS_HELP_STRING([--with-ft-exec-prefix=PREFIX], - [Exec prefix where FreeType is installed (optional)]), - [ft_config_exec_prefix="$withval"], - [ft_config_exec_prefix=""]) - - AC_ARG_ENABLE([freetypetest], - AS_HELP_STRING([--disable-freetypetest], - [Do not try to compile and run a test FreeType program]), - [], - [enable_fttest=yes]) - - if test x$ft_config_exec_prefix != x ; then - ft_config_args="$ft_config_args --exec-prefix=$ft_config_exec_prefix" - if test x${FT2_CONFIG+set} != xset ; then - FT2_CONFIG=$ft_config_exec_prefix/bin/freetype-config - fi - fi - - if test x$ft_config_prefix != x ; then - ft_config_args="$ft_config_args --prefix=$ft_config_prefix" - if test x${FT2_CONFIG+set} != xset ; then - FT2_CONFIG=$ft_config_prefix/bin/freetype-config - fi - fi - - if test "x$FT2_CONFIG" = x ; then - AC_PATH_TOOL([FT2_CONFIG], [freetype-config], [no]) - fi - - min_ft_version=m4_if([$1], [], [7.0.1], [$1]) - AC_MSG_CHECKING([for FreeType -- version >= $min_ft_version]) - no_ft="" - if test "$FT2_CONFIG" = "no" ; then - no_ft=yes - else - FT2_CFLAGS=`$FT2_CONFIG $ft_config_args --cflags` - FT2_LIBS=`$FT2_CONFIG $ft_config_args --libs` - ft_config_major_version=`$FT2_CONFIG $ft_config_args --version | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` - ft_config_minor_version=`$FT2_CONFIG $ft_config_args --version | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` - ft_config_micro_version=`$FT2_CONFIG $ft_config_args --version | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` - ft_min_major_version=`echo $min_ft_version | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` - ft_min_minor_version=`echo $min_ft_version | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` - ft_min_micro_version=`echo $min_ft_version | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` - if test x$enable_fttest = xyes ; then - ft_config_is_lt="" - if test $ft_config_major_version -lt $ft_min_major_version ; then - ft_config_is_lt=yes - else - if test $ft_config_major_version -eq $ft_min_major_version ; then - if test $ft_config_minor_version -lt $ft_min_minor_version ; then - ft_config_is_lt=yes - else - if test $ft_config_minor_version -eq $ft_min_minor_version ; then - if test $ft_config_micro_version -lt $ft_min_micro_version ; then - ft_config_is_lt=yes - fi - fi - fi - fi - fi - if test x$ft_config_is_lt = xyes ; then - no_ft=yes - else - ac_save_CFLAGS="$CFLAGS" - ac_save_LIBS="$LIBS" - CFLAGS="$CFLAGS $FT2_CFLAGS" - LIBS="$FT2_LIBS $LIBS" - - # - # Sanity checks for the results of freetype-config to some extent. - # - AC_RUN_IFELSE([ - AC_LANG_SOURCE([[ - -#include -#include -#include -#include - -int -main(void) -{ - FT_Library library; - FT_Error error; - - error = FT_Init_FreeType(&library); - - if (error) - return 1; - else - { - FT_Done_FreeType(library); - return 0; - } -} - - ]]) - ], - [], - [no_ft=yes], - [echo $ECHO_N "cross compiling; assuming OK... $ECHO_C"]) - - CFLAGS="$ac_save_CFLAGS" - LIBS="$ac_save_LIBS" - fi # test $ft_config_version -lt $ft_min_version - fi # test x$enable_fttest = xyes - fi # test "$FT2_CONFIG" = "no" - - if test x$no_ft = x ; then - AC_MSG_RESULT([yes]) - m4_if([$2], [], [:], [$2]) - else - AC_MSG_RESULT([no]) - if test "$FT2_CONFIG" = "no" ; then - AC_MSG_WARN([ - - The freetype-config script installed by FreeType 2 could not be found. - If FreeType 2 was installed in PREFIX, make sure PREFIX/bin is in - your path, or set the FT2_CONFIG environment variable to the - full path to freetype-config. - ]) - else - if test x$ft_config_is_lt = xyes ; then - AC_MSG_WARN([ - - Your installed version of the FreeType 2 library is too old. - If you have different versions of FreeType 2, make sure that - correct values for --with-ft-prefix or --with-ft-exec-prefix - are used, or set the FT2_CONFIG environment variable to the - full path to freetype-config. - ]) - else - AC_MSG_WARN([ - - The FreeType test program failed to run. If your system uses - shared libraries and they are installed outside the normal - system library path, make sure the variable LD_LIBRARY_PATH - (or whatever is appropriate for your system) is correctly set. - ]) - fi - fi - - FT2_CFLAGS="" - FT2_LIBS="" - m4_if([$3], [], [:], [$3]) - fi - - AC_SUBST([FT2_CFLAGS]) - AC_SUBST([FT2_LIBS])]) - -# end of freetype2.m4 diff --git a/vendor/freetype/builds/unix/ft-munmap.m4 b/vendor/freetype/builds/unix/ft-munmap.m4 deleted file mode 100644 index d4a467c5bd3..00000000000 --- a/vendor/freetype/builds/unix/ft-munmap.m4 +++ /dev/null @@ -1,32 +0,0 @@ -## FreeType specific autoconf tests -# -# Copyright (C) 2002-2025 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - -# serial 2 - -AC_DEFUN([FT_MUNMAP_PARAM], - [AC_MSG_CHECKING([for munmap's first parameter type]) - AC_COMPILE_IFELSE([ - AC_LANG_SOURCE([[ - -#include -#include -int munmap(void *, size_t); - - ]]) - ], - [AC_MSG_RESULT([void *]) - AC_DEFINE([MUNMAP_USES_VOIDP], - [], - [Define to 1 if the first argument of munmap is of type void *])], - [AC_MSG_RESULT([char *])]) - ]) - -# end of ft-munmap.m4 diff --git a/vendor/freetype/builds/unix/ftconfig.h.in b/vendor/freetype/builds/unix/ftconfig.h.in deleted file mode 100644 index 15cf3b3c4c6..00000000000 --- a/vendor/freetype/builds/unix/ftconfig.h.in +++ /dev/null @@ -1,52 +0,0 @@ -/**************************************************************************** - * - * ftconfig.h.in - * - * UNIX-specific configuration file (specification only). - * - * Copyright (C) 1996-2025 by - * David Turner, Robert Wilhelm, and Werner Lemberg. - * - * This file is part of the FreeType project, and may only be used, - * modified, and distributed under the terms of the FreeType project - * license, LICENSE.TXT. By continuing to use, modify, or distribute - * this file you indicate that you have read the license and - * understand and accept it fully. - * - */ - - - /************************************************************************** - * - * This header file contains a number of macro definitions that are used by - * the rest of the engine. Most of the macros here are automatically - * determined at compile time, and you should not need to change it to port - * FreeType, except to compile the library with a non-ANSI compiler. - * - * Note however that if some specific modifications are needed, we advise - * you to place a modified copy in your build directory. - * - * The build directory is usually `builds/`, and contains - * system-specific files that are always included first when building the - * library. - * - */ - -#ifndef FTCONFIG_H_ -#define FTCONFIG_H_ - -#include -#include FT_CONFIG_OPTIONS_H -#include FT_CONFIG_STANDARD_LIBRARY_H - -#undef HAVE_UNISTD_H -#undef HAVE_FCNTL_H - -#include -#include -#include - -#endif /* FTCONFIG_H_ */ - - -/* END */ diff --git a/vendor/freetype/builds/unix/ftsystem.c b/vendor/freetype/builds/unix/ftsystem.c deleted file mode 100644 index 5f03f35533f..00000000000 --- a/vendor/freetype/builds/unix/ftsystem.c +++ /dev/null @@ -1,436 +0,0 @@ -/**************************************************************************** - * - * ftsystem.c - * - * Unix-specific FreeType low-level system interface (body). - * - * Copyright (C) 1996-2025 by - * David Turner, Robert Wilhelm, and Werner Lemberg. - * - * This file is part of the FreeType project, and may only be used, - * modified, and distributed under the terms of the FreeType project - * license, LICENSE.TXT. By continuing to use, modify, or distribute - * this file you indicate that you have read the license and - * understand and accept it fully. - * - */ - - -#include - /* we use our special ftconfig.h file, not the standard one */ -#include FT_CONFIG_CONFIG_H -#include -#include -#include -#include -#include - - /* memory-mapping includes and definitions */ -#ifdef HAVE_UNISTD_H -#include -#endif - -#include -#ifndef MAP_FILE -#define MAP_FILE 0x00 -#endif - -#ifdef MUNMAP_USES_VOIDP -#define MUNMAP_ARG_CAST void * -#else -#define MUNMAP_ARG_CAST char * -#endif - -#ifdef NEED_MUNMAP_DECL - -#ifdef __cplusplus - extern "C" -#else - extern -#endif - int - munmap( char* addr, - int len ); - -#define MUNMAP_ARG_CAST char * - -#endif /* NEED_DECLARATION_MUNMAP */ - - -#include -#include - -#ifdef HAVE_FCNTL_H -#include -#endif - -#include -#include -#include -#include - - - /************************************************************************** - * - * MEMORY MANAGEMENT INTERFACE - * - */ - - - /************************************************************************** - * - * It is not necessary to do any error checking for the - * allocation-related functions. This will be done by the higher level - * routines like ft_mem_alloc() or ft_mem_realloc(). - * - */ - - - /************************************************************************** - * - * @Function: - * ft_alloc - * - * @Description: - * The memory allocation function. - * - * @Input: - * memory :: - * A pointer to the memory object. - * - * size :: - * The requested size in bytes. - * - * @Return: - * The address of newly allocated block. - */ - FT_CALLBACK_DEF( void* ) - ft_alloc( FT_Memory memory, - long size ) - { - FT_UNUSED( memory ); - - return malloc( size ); - } - - - /************************************************************************** - * - * @Function: - * ft_realloc - * - * @Description: - * The memory reallocation function. - * - * @Input: - * memory :: - * A pointer to the memory object. - * - * cur_size :: - * The current size of the allocated memory block. - * - * new_size :: - * The newly requested size in bytes. - * - * block :: - * The current address of the block in memory. - * - * @Return: - * The address of the reallocated memory block. - */ - FT_CALLBACK_DEF( void* ) - ft_realloc( FT_Memory memory, - long cur_size, - long new_size, - void* block ) - { - FT_UNUSED( memory ); - FT_UNUSED( cur_size ); - - return realloc( block, new_size ); - } - - - /************************************************************************** - * - * @Function: - * ft_free - * - * @Description: - * The memory release function. - * - * @Input: - * memory :: - * A pointer to the memory object. - * - * block :: - * The address of block in memory to be freed. - */ - FT_CALLBACK_DEF( void ) - ft_free( FT_Memory memory, - void* block ) - { - FT_UNUSED( memory ); - - free( block ); - } - - - /************************************************************************** - * - * RESOURCE MANAGEMENT INTERFACE - * - */ - - - /************************************************************************** - * - * The macro FT_COMPONENT is used in trace mode. It is an implicit - * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log - * messages during execution. - */ -#undef FT_COMPONENT -#define FT_COMPONENT io - - /* We use the macro STREAM_FILE for convenience to extract the */ - /* system-specific stream handle from a given FreeType stream object */ -#define STREAM_FILE( stream ) ( (FILE*)stream->descriptor.pointer ) - - - /************************************************************************** - * - * @Function: - * ft_close_stream_by_munmap - * - * @Description: - * The function to close a stream which is opened by mmap. - * - * @Input: - * stream :: A pointer to the stream object. - */ - FT_CALLBACK_DEF( void ) - ft_close_stream_by_munmap( FT_Stream stream ) - { - munmap( (MUNMAP_ARG_CAST)stream->descriptor.pointer, stream->size ); - - stream->descriptor.pointer = NULL; - stream->size = 0; - stream->base = NULL; - } - - - /************************************************************************** - * - * @Function: - * ft_close_stream_by_free - * - * @Description: - * The function to close a stream which is created by ft_alloc. - * - * @Input: - * stream :: A pointer to the stream object. - */ - FT_CALLBACK_DEF( void ) - ft_close_stream_by_free( FT_Stream stream ) - { - ft_free( stream->memory, stream->descriptor.pointer ); - - stream->descriptor.pointer = NULL; - stream->size = 0; - stream->base = NULL; - } - - - /* documentation is in ftobjs.h */ - - FT_BASE_DEF( FT_Error ) - FT_Stream_Open( FT_Stream stream, - const char* filepathname ) - { - int file; - struct stat stat_buf; - - - if ( !stream ) - return FT_THROW( Invalid_Stream_Handle ); - - /* open the file */ - file = open( filepathname, O_RDONLY ); - if ( file < 0 ) - { - FT_ERROR(( "FT_Stream_Open:" )); - FT_ERROR(( " could not open `%s'\n", filepathname )); - return FT_THROW( Cannot_Open_Resource ); - } - - /* Here we ensure that a "fork" will _not_ duplicate */ - /* our opened input streams on Unix. This is critical */ - /* since it avoids some (possible) access control */ - /* issues and cleans up the kernel file table a bit. */ - /* */ -#ifdef F_SETFD -#ifdef FD_CLOEXEC - (void)fcntl( file, F_SETFD, FD_CLOEXEC ); -#else - (void)fcntl( file, F_SETFD, 1 ); -#endif /* FD_CLOEXEC */ -#endif /* F_SETFD */ - - if ( fstat( file, &stat_buf ) < 0 ) - { - FT_ERROR(( "FT_Stream_Open:" )); - FT_ERROR(( " could not `fstat' file `%s'\n", filepathname )); - goto Fail_Map; - } - - /* XXX: TODO -- real 64bit platform support */ - /* */ - /* `stream->size' is typedef'd to unsigned long (in `ftsystem.h'); */ - /* `stat_buf.st_size', however, is usually typedef'd to off_t */ - /* (in sys/stat.h). */ - /* On some platforms, the former is 32bit and the latter is 64bit. */ - /* To avoid overflow caused by fonts in huge files larger than */ - /* 2GB, do a test. Temporary fix proposed by Sean McBride. */ - /* */ - if ( stat_buf.st_size > LONG_MAX ) - { - FT_ERROR(( "FT_Stream_Open: file is too big\n" )); - goto Fail_Map; - } - else if ( stat_buf.st_size == 0 ) - { - FT_ERROR(( "FT_Stream_Open: zero-length file\n" )); - goto Fail_Map; - } - - /* This cast potentially truncates a 64bit to 32bit! */ - stream->size = (unsigned long)stat_buf.st_size; - stream->pos = 0; - stream->base = (unsigned char *)mmap( NULL, - stream->size, - PROT_READ, - MAP_FILE | MAP_PRIVATE, - file, - 0 ); - - if ( stream->base != MAP_FAILED ) - stream->close = ft_close_stream_by_munmap; - else - { - ssize_t total_read_count; - - - FT_ERROR(( "FT_Stream_Open:" )); - FT_ERROR(( " could not `mmap' file `%s'\n", filepathname )); - - stream->base = (unsigned char*)ft_alloc( stream->memory, stream->size ); - - if ( !stream->base ) - { - FT_ERROR(( "FT_Stream_Open:" )); - FT_ERROR(( " could not `alloc' memory\n" )); - goto Fail_Map; - } - - total_read_count = 0; - do - { - ssize_t read_count; - - - read_count = read( file, - stream->base + total_read_count, - stream->size - total_read_count ); - - if ( read_count <= 0 ) - { - if ( read_count == -1 && errno == EINTR ) - continue; - - FT_ERROR(( "FT_Stream_Open:" )); - FT_ERROR(( " error while `read'ing file `%s'\n", filepathname )); - goto Fail_Read; - } - - total_read_count += read_count; - - } while ( (unsigned long)total_read_count != stream->size ); - - stream->close = ft_close_stream_by_free; - } - - close( file ); - - stream->descriptor.pointer = stream->base; - stream->pathname.pointer = (char*)filepathname; - - stream->read = NULL; - - FT_TRACE1(( "FT_Stream_Open:" )); - FT_TRACE1(( " opened `%s' (%ld bytes) successfully\n", - filepathname, stream->size )); - - return FT_Err_Ok; - - Fail_Read: - ft_free( stream->memory, stream->base ); - - Fail_Map: - close( file ); - - stream->base = NULL; - stream->size = 0; - stream->pos = 0; - - return FT_THROW( Cannot_Open_Stream ); - } - - -#ifdef FT_DEBUG_MEMORY - - extern FT_Int - ft_mem_debug_init( FT_Memory memory ); - - extern void - ft_mem_debug_done( FT_Memory memory ); - -#endif - - - /* documentation is in ftobjs.h */ - - FT_BASE_DEF( FT_Memory ) - FT_New_Memory( void ) - { - FT_Memory memory; - - - memory = (FT_Memory)malloc( sizeof ( *memory ) ); - if ( memory ) - { - memory->user = NULL; - memory->alloc = ft_alloc; - memory->realloc = ft_realloc; - memory->free = ft_free; -#ifdef FT_DEBUG_MEMORY - ft_mem_debug_init( memory ); -#endif - } - - return memory; - } - - - /* documentation is in ftobjs.h */ - - FT_BASE_DEF( void ) - FT_Done_Memory( FT_Memory memory ) - { -#ifdef FT_DEBUG_MEMORY - ft_mem_debug_done( memory ); -#endif - memory->free( memory, memory ); - } - - -/* END */ diff --git a/vendor/freetype/builds/unix/install.mk b/vendor/freetype/builds/unix/install.mk deleted file mode 100644 index 512b818ffae..00000000000 --- a/vendor/freetype/builds/unix/install.mk +++ /dev/null @@ -1,102 +0,0 @@ -# -# FreeType 2 installation instructions for Unix systems -# - - -# Copyright (C) 1996-2025 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - -# If you say -# -# make install DESTDIR=/tmp/somewhere/ -# -# don't forget the final backslash (this command is mainly for package -# maintainers). - - -.PHONY: install uninstall check - -# Unix installation and deinstallation targets. -# -# 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. -# -# Note that some header files get handled twice for simplicity; a special, -# configured version overwrites the generic one. -# -install: $(PROJECT_LIBRARY) - -$(DELDIR) $(DESTDIR)$(includedir)/freetype2 - -$(DELETE) $(DESTDIR)$(includedir)/ft2build.h - $(MKINSTALLDIRS) $(DESTDIR)$(libdir) \ - $(DESTDIR)$(libdir)/pkgconfig \ - $(DESTDIR)$(includedir)/freetype2/freetype/config \ - $(DESTDIR)$(datadir)/aclocal -ifeq ($(INSTALL_FT2_CONFIG),TRUE) - $(MKINSTALLDIRS) $(DESTDIR)$(bindir) \ - $(DESTDIR)$(mandir)/man1 -endif - $(LIBTOOL) --mode=install $(INSTALL) \ - $(PROJECT_LIBRARY) $(DESTDIR)$(libdir) - -for P in $(PUBLIC_H) ; do \ - $(INSTALL_DATA) \ - $$P $(DESTDIR)$(includedir)/freetype2/freetype ; \ - done - -for P in $(CONFIG_H) ; do \ - $(INSTALL_DATA) \ - $$P $(DESTDIR)$(includedir)/freetype2/freetype/config ; \ - done - $(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_DATA) $(OBJ_BUILD)/ftoption.h \ - $(DESTDIR)$(includedir)/freetype2/freetype/config/ftoption.h - $(INSTALL_SCRIPT) -m 644 $(PLATFORM_DIR)/freetype2.m4 \ - $(DESTDIR)$(datadir)/aclocal/freetype2.m4 - $(INSTALL_SCRIPT) -m 644 $(OBJ_BUILD)/freetype2.pc \ - $(DESTDIR)$(libdir)/pkgconfig/freetype2.pc -ifeq ($(INSTALL_FT2_CONFIG),TRUE) - $(INSTALL_SCRIPT) -m 755 $(OBJ_BUILD)/freetype-config \ - $(DESTDIR)$(bindir)/freetype-config - $(INSTALL_DATA) $(TOP_DIR)/docs/freetype-config.1 \ - $(DESTDIR)$(mandir)/man1/freetype-config.1 -endif - - -uninstall: - -$(LIBTOOL) --mode=uninstall $(RM) $(DESTDIR)$(libdir)/$(LIBRARY).$A - -$(DELDIR) $(DESTDIR)$(includedir)/freetype2 - -$(DELETE) $(DESTDIR)$(bindir)/freetype-config - -$(DELETE) $(DESTDIR)$(datadir)/aclocal/freetype2.m4 - -$(DELETE) $(DESTDIR)$(libdir)/pkgconfig/freetype2.pc - -$(DELETE) $(DESTDIR)$(mandir)/man1/freetype-config.1 - - -check: - $(info There is no validation suite for this package.) - - -.PHONY: clean_project_unix distclean_project_unix - -# Unix cleaning and distclean rules. -# -clean_project_unix: - -$(LIBTOOL) --mode=clean $(RM) $(OBJECTS_LIST) - -$(DELETE) $(CLEAN) - -distclean_project_unix: clean_project_unix - -$(LIBTOOL) --mode=clean $(RM) $(PROJECT_LIBRARY) - -$(DELETE) *.orig *~ core *.core $(DISTCLEAN) - -# EOF diff --git a/vendor/freetype/builds/unix/pkg.m4 b/vendor/freetype/builds/unix/pkg.m4 deleted file mode 100644 index 260e1fb9221..00000000000 --- a/vendor/freetype/builds/unix/pkg.m4 +++ /dev/null @@ -1,199 +0,0 @@ -# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- -# serial 1 (pkg-config-0.24) -# -# Copyright © 2004 Scott James Remnant . -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# PKG_PROG_PKG_CONFIG([MIN-VERSION]) -# ---------------------------------- -AC_DEFUN([PKG_PROG_PKG_CONFIG], -[m4_pattern_forbid([^_?PKG_[A-Z_]+$]) -m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) -m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) -AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility]) -AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path]) -AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path]) - -if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then - AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) -fi -if test -n "$PKG_CONFIG"; then - _pkg_min_version=m4_default([$1], [0.9.0]) - AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) - if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no]) - PKG_CONFIG="" - fi -fi[]dnl -])# PKG_PROG_PKG_CONFIG - -# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) -# -# Check to see whether a particular set of modules exists. Similar -# to PKG_CHECK_MODULES(), but does not set variables or print errors. -# -# Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) -# only at the first occurrence in configure.ac, so if the first place -# it's called might be skipped (such as if it is within an "if", you -# have to call PKG_CHECK_EXISTS manually -# -------------------------------------------------------------- -AC_DEFUN([PKG_CHECK_EXISTS], -[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl -if test -n "$PKG_CONFIG" && \ - AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then - m4_default([$2], [:]) -m4_ifvaln([$3], [else - $3])dnl -fi]) - -# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) -# --------------------------------------------- -m4_define([_PKG_CONFIG], -[if test -n "$$1"; then - pkg_cv_[]$1="$$1" - elif test -n "$PKG_CONFIG"; then - PKG_CHECK_EXISTS([$3], - [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes ], - [pkg_failed=yes]) - else - pkg_failed=untried -fi[]dnl -])# _PKG_CONFIG - -# _PKG_SHORT_ERRORS_SUPPORTED -# ----------------------------- -AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], -[AC_REQUIRE([PKG_PROG_PKG_CONFIG]) -if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then - _pkg_short_errors_supported=yes -else - _pkg_short_errors_supported=no -fi[]dnl -])# _PKG_SHORT_ERRORS_SUPPORTED - - -# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], -# [ACTION-IF-NOT-FOUND]) -# -# -# Note that if there is a possibility the first call to -# PKG_CHECK_MODULES might not happen, you should be sure to include an -# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac -# -# -# -------------------------------------------------------------- -AC_DEFUN([PKG_CHECK_MODULES], -[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl -AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl -AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl - -pkg_failed=no -AC_MSG_CHECKING([for $1]) - -_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) -_PKG_CONFIG([$1][_LIBS], [libs], [$2]) - -m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS -and $1[]_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details.]) - -if test $pkg_failed = yes; then - AC_MSG_RESULT([no]) - _PKG_SHORT_ERRORS_SUPPORTED - if test $_pkg_short_errors_supported = yes; then - $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1` - else - $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1` - fi - # Put the nasty error message in config.log where it belongs - echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD - - m4_default([$4], [AC_MSG_ERROR( -[Package requirements ($2) were not met: - -$$1_PKG_ERRORS - -Consider adjusting the PKG_CONFIG_PATH environment variable if you -installed software in a non-standard prefix. - -_PKG_TEXT])[]dnl - ]) -elif test $pkg_failed = untried; then - AC_MSG_RESULT([no]) - m4_default([$4], [AC_MSG_FAILURE( -[The pkg-config script could not be found or is too old. Make sure it -is in your PATH or set the PKG_CONFIG environment variable to the full -path to pkg-config. - -_PKG_TEXT - -To get pkg-config, see .])[]dnl - ]) -else - $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS - $1[]_LIBS=$pkg_cv_[]$1[]_LIBS - AC_MSG_RESULT([yes]) - $3 -fi[]dnl -])# PKG_CHECK_MODULES - - -# PKG_INSTALLDIR(DIRECTORY) -# ------------------------- -# Substitutes the variable pkgconfigdir as the location where a module -# should install pkg-config .pc files. By default the directory is -# $libdir/pkgconfig, but the default can be changed by passing -# DIRECTORY. The user can override through the --with-pkgconfigdir -# parameter. -AC_DEFUN([PKG_INSTALLDIR], -[m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])]) -m4_pushdef([pkg_description], - [pkg-config installation directory @<:@]pkg_default[@:>@]) -AC_ARG_WITH([pkgconfigdir], - [AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],, - [with_pkgconfigdir=]pkg_default) -AC_SUBST([pkgconfigdir], [$with_pkgconfigdir]) -m4_popdef([pkg_default]) -m4_popdef([pkg_description]) -]) dnl PKG_INSTALLDIR - - -# PKG_NOARCH_INSTALLDIR(DIRECTORY) -# ------------------------- -# Substitutes the variable noarch_pkgconfigdir as the location where a -# module should install arch-independent pkg-config .pc files. By -# default the directory is $datadir/pkgconfig, but the default can be -# changed by passing DIRECTORY. The user can override through the -# --with-noarch-pkgconfigdir parameter. -AC_DEFUN([PKG_NOARCH_INSTALLDIR], -[m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])]) -m4_pushdef([pkg_description], - [pkg-config arch-independent installation directory @<:@]pkg_default[@:>@]) -AC_ARG_WITH([noarch-pkgconfigdir], - [AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],, - [with_noarch_pkgconfigdir=]pkg_default) -AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir]) -m4_popdef([pkg_default]) -m4_popdef([pkg_description]) -]) dnl PKG_NOARCH_INSTALLDIR diff --git a/vendor/freetype/builds/unix/unix-cc.in b/vendor/freetype/builds/unix/unix-cc.in deleted file mode 100644 index 2a571a35cea..00000000000 --- a/vendor/freetype/builds/unix/unix-cc.in +++ /dev/null @@ -1,134 +0,0 @@ -# -# FreeType 2 template for Unix-specific compiler definitions -# - -# Copyright (C) 1996-2025 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -CC := @CC@ -COMPILER_SEP := $(SEP) -FT_LIBTOOL_DIR ?= $(PLATFORM_DIR) - -LIBTOOL := $(FT_LIBTOOL_DIR)/libtool - - -# The object file extension (for standard and static libraries). This can be -# .o, .tco, .obj, etc., depending on the platform. -# -O := lo -SO := o - - -# The executable file extension. Although most Unix platforms use no -# extension, we copy the extension detected by autoconf. Useful for cross -# building on Unix systems for non-Unix systems. -# -E := @EXEEXT@ - - -# The library file extension (for standard and static libraries). This can -# be .a, .lib, etc., depending on the platform. -# -A := la -SA := a - - -# The name of the final library file. Note that the DOS-specific Makefile -# uses a shorter (8.3) name. -# -LIBRARY := lib$(PROJECT) - - -# Path inclusion flag. Some compilers use a different flag than `-I' to -# specify an additional include path. Examples are `/i=' or `-J'. -# -I := -I - - -# C flag used to define a macro before the compilation of a given source -# object. Usually it is `-D' like in `-DDEBUG'. -# -D := -D - - -# The link flag used to specify a given library file on link. Note that -# this is only used to compile the demo programs, not the library itself. -# -L := -l - - -# Target flag. -# -T := -o$(space) - - -# C flags -# -# These should concern: debug output, optimization & warnings. -# -# Use the ANSIFLAGS variable to define the compiler flags used to enforce -# ANSI compliance. -# -# We use our own FreeType configuration files overriding defaults. -# -CPPFLAGS := @CPPFLAGS@ -CFLAGS := -c @XX_CFLAGS@ @CFLAGS@ \ - $DFT_CONFIG_CONFIG_H="" \ - $DFT_CONFIG_MODULES_H="" \ - $DFT_CONFIG_OPTIONS_H="" - -# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. -# -ANSIFLAGS := @XX_ANSIFLAGS@ - -# C compiler to use -- we use libtool! -# -# CC might be set on the command line; we store this value in `CCraw'. -# Consequently, we use the `override' directive to ensure that the -# libtool call is always prepended. -# -CCraw := $(CC) -override CC := $(LIBTOOL) --mode=compile $(CCraw) - -# Resource compiler to use on Cygwin/MinGW, usually windres. -# -RCraw := @RC@ -ifneq ($(RCraw),) - RC := $(LIBTOOL) --tag=RC --mode=compile $(RCraw) -endif - -# Linker flags. -# -LDFLAGS := @LDFLAGS@ - -# export symbols -# -CCraw_build := @CC_BUILD@ # native CC of building system -E_BUILD := @EXEEXT_BUILD@ # extension for executable on - # building system -EXPORTS_LIST := $(OBJ_DIR)/ftexport.sym -CCexe := $(CCraw_build) # used to compile `apinames` only, - # see `exports.mk` -CCexe_CFLAGS := @CFLAGS_BUILD@ # ditto -CCexe_LDFLAGS := @LDFLAGS_BUILD@ # ditto - - -# Library linking. -# -LINK_LIBRARY = $(LIBTOOL) --mode=link $(CCraw) -o $@ $(OBJECTS_LIST) \ - -rpath $(libdir) -version-info $(version_info) \ - $(LDFLAGS) -no-undefined \ - -export-symbols $(EXPORTS_LIST) - -# For the demo programs. -FT_DEMO_CFLAGS := @FT_DEMO_CFLAGS@ -FT_DEMO_LDFLAGS := @FT_DEMO_LDFLAGS@ - -# EOF diff --git a/vendor/freetype/builds/unix/unix-def.in b/vendor/freetype/builds/unix/unix-def.in deleted file mode 100644 index fe629272d5f..00000000000 --- a/vendor/freetype/builds/unix/unix-def.in +++ /dev/null @@ -1,163 +0,0 @@ -# -# FreeType 2 configuration rules templates for Unix + configure -# - - -# Copyright (C) 1996-2025 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - -SHELL := @SHELL@ - -TOP_DIR := $(shell cd $(TOP_DIR); pwd) - -DELETE := rm -f -DELDIR := rm -rf -CAT := cat -SEP := / - -# This is used for `make refdoc' and `make refdoc-venv' -# -PYTHON := @PYTHON@ -BIN := bin - -# this is used for `make distclean' and `make install' -OBJ_BUILD ?= $(PLATFORM_DIR) - -# don't use `:=' here since the path stuff will be included after this file -# -FTSYS_SRC = @FTSYS_SRC@ - -INSTALL := @INSTALL@ -INSTALL_DATA := @INSTALL_DATA@ -INSTALL_PROGRAM := @INSTALL_PROGRAM@ -INSTALL_SCRIPT := @INSTALL_SCRIPT@ -MKINSTALLDIRS := @MKDIR_P@ - -CLEAN += $(OBJ_BUILD)/freetype-config \ - $(OBJ_BUILD)/freetype2.pc - -DISTCLEAN += $(OBJ_BUILD)/config.cache \ - $(OBJ_BUILD)/config.log \ - $(OBJ_BUILD)/config.status \ - $(OBJ_BUILD)/unix-def.mk \ - $(OBJ_BUILD)/unix-cc.mk \ - $(OBJ_BUILD)/ftconfig.h \ - $(OBJ_BUILD)/ftoption.h \ - $(LIBTOOL) \ - $(OBJ_BUILD)/Makefile - - -# Standard installation variables. -# -prefix := @prefix@ -exec_prefix := @exec_prefix@ -libdir := @libdir@ -bindir := @bindir@ -includedir := @includedir@ -datarootdir := @datarootdir@ -datadir := @datadir@ -mandir := @mandir@ - -version_info := @version_info@ - -# Variables needed for `freetype-config' and `freetype.pc'. -# -PKG_CONFIG := @PKG_CONFIG@ -PKGCONFIG_REQUIRES := @PKGCONFIG_REQUIRES@ -PKGCONFIG_REQUIRES_PRIVATE := @PKGCONFIG_REQUIRES_PRIVATE@ -PKGCONFIG_LIBS := @PKGCONFIG_LIBS@ -PKGCONFIG_LIBS_PRIVATE := @PKGCONFIG_LIBS_PRIVATE@ -LIBSSTATIC_CONFIG := @LIBSSTATIC_CONFIG@ -build_libtool_libs := @build_libtool_libs@ -ft_version := @ft_version@ - -# The directory where all library files are placed. -# -# By default, this is the same as $(OBJ_DIR); however, this can be changed -# to suit particular needs. -# -LIB_DIR := $(OBJ_DIR) - -# The BASE_SRC macro lists all source files that should be included in -# src/base/ftbase.c. When configure sets up CFLAGS to build ftmac.c, -# ftmac.c should be added to BASE_SRC. -ftmac_c := @ftmac_c@ - -# The SYSTEM_ZLIB macro is defined if the user wishes to link dynamically -# with its system wide zlib. If SYSTEM_ZLIB is 'yes', the zlib part of the -# ftgzip module is not compiled in. -SYSTEM_ZLIB := @SYSTEM_ZLIB@ - - -# The NO_OUTPUT macro is appended to command lines in order to ignore -# the output of some programs. -# -NO_OUTPUT := 2> /dev/null - - -# To support calls like -# -# configure --includedir='${libdir}'/freetype2/include -# -# we generate `freetype-config' and `freetype.pc' at compile time so that -# those variables are properly expanded. - -$(OBJ_BUILD)/freetype-config: $(TOP_DIR)/builds/unix/freetype-config.in - rm -f $@ $@.tmp - sed -e 's|%LIBSSTATIC_CONFIG%|$(LIBSSTATIC_CONFIG)|' \ - -e 's|%PKG_CONFIG%|$(PKG_CONFIG)|' \ - -e 's|%build_libtool_libs%|$(build_libtool_libs)|' \ - -e 's|%exec_prefix%|$(exec_prefix)|' \ - -e 's|%ft_version%|$(ft_version)|' \ - -e 's|%includedir%|$(includedir)|' \ - -e 's|%libdir%|$(libdir)|' \ - -e 's|%prefix%|$(prefix)|' \ - $< \ - > $@.tmp - chmod +x $@.tmp - chmod go-w $@.tmp - mv $@.tmp $@ - -# To support directory names with spaces (as might easily happen on Windows -# platforms), the right solution would be to surround the pkg-variables in -# `freetype2.pc' with double quotes. However, doing so ironically disables -# the prefix override mechanism especially written for Windows. This is a -# bug in pkg-config version 0.28 and earlier. -# -# For this reason, we escape spaces with backslashes. - -exec_prefix_x := $(subst $(space),\\$(space),$(exec_prefix)) -includedir_x := $(subst $(space),\\$(space),$(includedir)) -libdir_x := $(subst $(space),\\$(space),$(libdir)) -prefix_x := $(subst $(space),\\$(space),$(prefix)) - -$(OBJ_BUILD)/freetype2.pc: $(TOP_DIR)/builds/unix/freetype2.in - rm -f $@ $@.tmp - sed -e 's|%PKGCONFIG_REQUIRES%|$(PKGCONFIG_REQUIRES)|' \ - -e 's|%PKGCONFIG_REQUIRES_PRIVATE%|$(PKGCONFIG_REQUIRES_PRIVATE)|' \ - -e 's|%PKGCONFIG_LIBS%|$(PKGCONFIG_LIBS)|' \ - -e 's|%PKGCONFIG_LIBS_PRIVATE%|$(PKGCONFIG_LIBS_PRIVATE)|' \ - -e 's|%build_libtool_libs%|$(build_libtool_libs)|' \ - -e 's|%exec_prefix%|$(exec_prefix_x)|' \ - -e 's|%ft_version%|$(ft_version)|' \ - -e 's|%includedir%|$(includedir_x)|' \ - -e 's|%libdir%|$(libdir_x)|' \ - -e 's|%prefix%|$(prefix_x)|' \ - $< \ - > $@.tmp - chmod a-w $@.tmp - mv $@.tmp $@ - -# defines whether we should install `freetype-config' or not -INSTALL_FT2_CONFIG = @INSTALL_FT2_CONFIG@ - -all install: $(OBJ_BUILD)/freetype-config \ - $(OBJ_BUILD)/freetype2.pc - -# EOF diff --git a/vendor/freetype/builds/unix/unix-dev.mk b/vendor/freetype/builds/unix/unix-dev.mk deleted file mode 100644 index 5f313a0fa2b..00000000000 --- a/vendor/freetype/builds/unix/unix-dev.mk +++ /dev/null @@ -1,26 +0,0 @@ -# -# FreeType 2 Configuration rules for Unix + GCC -# -# Development version without optimizations & libtool -# and no installation. -# - - -# Copyright (C) 1996-2025 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -DEVEL_DIR := $(TOP_DIR)/devel - -include $(TOP_DIR)/builds/unix/unixddef.mk -include $(TOP_DIR)/builds/compiler/gcc-dev.mk -include $(TOP_DIR)/builds/link_std.mk - - -# EOF diff --git a/vendor/freetype/builds/unix/unix-lcc.mk b/vendor/freetype/builds/unix/unix-lcc.mk deleted file mode 100644 index a91088dffde..00000000000 --- a/vendor/freetype/builds/unix/unix-lcc.mk +++ /dev/null @@ -1,24 +0,0 @@ -# -# FreeType 2 Configuration rules for Unix + LCC -# -# Development version without optimizations & libtool -# and no installation. -# - - -# Copyright (C) 1996-2025 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -include $(TOP_DIR)/builds/unix/unixddef.mk -include $(TOP_DIR)/builds/compiler/unix-lcc.mk -include $(TOP_DIR)/builds/link_std.mk - - -# EOF diff --git a/vendor/freetype/builds/unix/unix.mk b/vendor/freetype/builds/unix/unix.mk deleted file mode 100644 index 4e08d5415ef..00000000000 --- a/vendor/freetype/builds/unix/unix.mk +++ /dev/null @@ -1,62 +0,0 @@ -# -# FreeType 2 configuration rules for UNIX platforms -# - - -# Copyright (C) 1996-2025 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - -# We need these declarations here since unix-def.mk is a generated file. -PLATFORM_DIR := $(TOP_DIR)/builds/unix -PLATFORM := unix - -have_mk := $(wildcard $(OBJ_DIR)/unix-def.mk) -ifneq ($(have_mk),) - # We are building FreeType 2 not in the src tree. - include $(OBJ_DIR)/unix-def.mk - include $(OBJ_DIR)/unix-cc.mk -else - include $(PLATFORM_DIR)/unix-def.mk - include $(PLATFORM_DIR)/unix-cc.mk -endif - -ifdef BUILD_PROJECT - - .PHONY: clean_project distclean_project - - # Now include the main sub-makefile. It contains all the rules used to - # build the library with the previous variables defined. - # - include $(TOP_DIR)/builds/$(PROJECT).mk - - - # The cleanup targets. - # - clean_project: clean_project_unix - distclean_project: distclean_project_unix - - - # This final rule is used to link all object files into a single library. - # It is part of the system-specific sub-Makefile because not all - # librarians accept a simple syntax like - # - # librarian library_file {list of object files} - # - $(PROJECT_LIBRARY): $(OBJECTS_LIST) - ifdef CLEAN_LIBRARY - -$(CLEAN_LIBRARY) $(NO_OUTPUT) - endif - $(LINK_LIBRARY) - - include $(TOP_DIR)/builds/unix/install.mk - -endif - - -# EOF diff --git a/vendor/freetype/builds/unix/unixddef.mk b/vendor/freetype/builds/unix/unixddef.mk deleted file mode 100644 index 46230467684..00000000000 --- a/vendor/freetype/builds/unix/unixddef.mk +++ /dev/null @@ -1,46 +0,0 @@ -# -# FreeType 2 configuration rules templates for -# development under Unix with no configure script (gcc only) -# - - -# Copyright (C) 1996-2025 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -TOP_DIR := $(shell cd $(TOP_DIR); pwd) -OBJ_DIR := $(shell cd $(OBJ_DIR); pwd) - -PLATFORM := unix - -DELETE := rm -f -CAT := cat -SEP := / - -# This is used for `make refdoc' and `make refdoc-venv' -# -BIN := bin - - -# library file name -# -LIBRARY := lib$(PROJECT) - - -# The directory where all library files are placed. -# -# By default, this is the same as $(OBJ_DIR); however, this can be changed -# to suit particular needs. -# -LIB_DIR := $(OBJ_DIR) - - -NO_OUTPUT := 2> /dev/null - -# EOF diff --git a/vendor/freetype/builds/vms/apinames_vms.bash b/vendor/freetype/builds/vms/apinames_vms.bash deleted file mode 100644 index 1928d21ae73..00000000000 --- a/vendor/freetype/builds/vms/apinames_vms.bash +++ /dev/null @@ -1,2 +0,0 @@ -src/tools/apinames -wV include/freetype/*.h > freetype_vms0.opt -/gnu/bin/mv freetype_vms0.opt freetype_vms.opt diff --git a/vendor/freetype/builds/vms/ftconfig.h b/vendor/freetype/builds/vms/ftconfig.h deleted file mode 100644 index 7e6bf126307..00000000000 --- a/vendor/freetype/builds/vms/ftconfig.h +++ /dev/null @@ -1,58 +0,0 @@ -/**************************************************************************** - * - * ftconfig.h - * - * VMS-specific configuration file (specification only). - * - * Copyright (C) 1996-2025 by - * David Turner, Robert Wilhelm, and Werner Lemberg. - * - * This file is part of the FreeType project, and may only be used, - * modified, and distributed under the terms of the FreeType project - * license, LICENSE.TXT. By continuing to use, modify, or distribute - * this file you indicate that you have read the license and - * understand and accept it fully. - * - */ - - - /************************************************************************** - * - * This header file contains a number of macro definitions that are used by - * the rest of the engine. Most of the macros here are automatically - * determined at compile time, and you should not need to change it to port - * FreeType, except to compile the library with a non-ANSI compiler. - * - * Note however that if some specific modifications are needed, we advise - * you to place a modified copy in your build directory. - * - * The build directory is usually `builds/`, and contains - * system-specific files that are always included first when building the - * library. - * - */ - -#ifndef FTCONFIG_H_ -#define FTCONFIG_H_ - -#include -#include FT_CONFIG_OPTIONS_H -#include FT_CONFIG_STANDARD_LIBRARY_H - -#define HAVE_UNISTD_H 1 -#define HAVE_FCNTL_H 1 - -#define SIZEOF_INT 4 -#define SIZEOF_LONG 4 - -#define FT_SIZEOF_INT 4 -#define FT_SIZEOF_LONG 4 - -#include -#include -#include - -#endif /* FTCONFIG_H_ */ - - -/* END */ diff --git a/vendor/freetype/builds/vms/ftsystem.c b/vendor/freetype/builds/vms/ftsystem.c deleted file mode 100644 index ab2a24ec1fe..00000000000 --- a/vendor/freetype/builds/vms/ftsystem.c +++ /dev/null @@ -1,328 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftsystem.c */ -/* */ -/* VMS-specific FreeType low-level system interface (body). */ -/* */ -/* Copyright (C) 1996-2025 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include - /* we use our special ftconfig.h file, not the standard one */ -#include -#include -#include -#include -#include -#include - - /* memory-mapping includes and definitions */ -#ifdef HAVE_UNISTD_H -#include -#endif - -#include -#ifndef MAP_FILE -#define MAP_FILE 0x00 -#endif - -#ifdef MUNMAP_USES_VOIDP -#define MUNMAP_ARG_CAST void * -#else -#define MUNMAP_ARG_CAST char * -#endif - -#ifdef NEED_MUNMAP_DECL - -#ifdef __cplusplus - extern "C" -#else - extern -#endif - int - munmap( char* addr, - int len ); - -#define MUNMAP_ARG_CAST char * - -#endif /* NEED_DECLARATION_MUNMAP */ - - -#include -#include - -#ifdef HAVE_FCNTL_H -#include -#endif - -#include -#include -#include - - - /*************************************************************************/ - /* */ - /* MEMORY MANAGEMENT INTERFACE */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* */ - /* ft_alloc */ - /* */ - /* */ - /* The memory allocation function. */ - /* */ - /* */ - /* memory :: A pointer to the memory object. */ - /* */ - /* size :: The requested size in bytes. */ - /* */ - /* */ - /* The address of newly allocated block. */ - /* */ - FT_CALLBACK_DEF( void* ) - ft_alloc( FT_Memory memory, - long size ) - { - FT_UNUSED( memory ); - - return malloc( size ); - } - - - /*************************************************************************/ - /* */ - /* */ - /* ft_realloc */ - /* */ - /* */ - /* The memory reallocation function. */ - /* */ - /* */ - /* memory :: A pointer to the memory object. */ - /* */ - /* cur_size :: The current size of the allocated memory block. */ - /* */ - /* new_size :: The newly requested size in bytes. */ - /* */ - /* block :: The current address of the block in memory. */ - /* */ - /* */ - /* The address of the reallocated memory block. */ - /* */ - FT_CALLBACK_DEF( void* ) - ft_realloc( FT_Memory memory, - long cur_size, - long new_size, - void* block ) - { - FT_UNUSED( memory ); - FT_UNUSED( cur_size ); - - return realloc( block, new_size ); - } - - - /*************************************************************************/ - /* */ - /* */ - /* ft_free */ - /* */ - /* */ - /* The memory release function. */ - /* */ - /* */ - /* memory :: A pointer to the memory object. */ - /* */ - /* block :: The address of block in memory to be freed. */ - /* */ - FT_CALLBACK_DEF( void ) - ft_free( FT_Memory memory, - void* block ) - { - FT_UNUSED( memory ); - - free( block ); - } - - - /*************************************************************************/ - /* */ - /* RESOURCE MANAGEMENT INTERFACE */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ - /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log */ - /* messages during execution. */ - /* */ -#undef FT_COMPONENT -#define FT_COMPONENT io - - /* We use the macro STREAM_FILE for convenience to extract the */ - /* system-specific stream handle from a given FreeType stream object */ -#define STREAM_FILE( stream ) ( (FILE*)stream->descriptor.pointer ) - - - /*************************************************************************/ - /* */ - /* */ - /* ft_close_stream */ - /* */ - /* */ - /* The function to close a stream. */ - /* */ - /* */ - /* stream :: A pointer to the stream object. */ - /* */ - FT_CALLBACK_DEF( void ) - ft_close_stream( FT_Stream stream ) - { - munmap( (MUNMAP_ARG_CAST)stream->descriptor.pointer, stream->size ); - - stream->descriptor.pointer = NULL; - stream->size = 0; - stream->base = NULL; - } - - - /* documentation is in ftobjs.h */ - - FT_BASE_DEF( FT_Error ) - FT_Stream_Open( FT_Stream stream, - const char* filepathname ) - { - int file; - struct stat stat_buf; - - - if ( !stream ) - return FT_THROW( Invalid_Stream_Handle ); - - /* open the file */ - file = open( filepathname, O_RDONLY ); - if ( file < 0 ) - { - FT_ERROR(( "FT_Stream_Open:" )); - FT_ERROR(( " could not open `%s'\n", filepathname )); - return FT_THROW( Cannot_Open_Resource ); - } - - if ( fstat( file, &stat_buf ) < 0 ) - { - FT_ERROR(( "FT_Stream_Open:" )); - FT_ERROR(( " could not `fstat' file `%s'\n", filepathname )); - goto Fail_Map; - } - - stream->size = stat_buf.st_size; - if ( !stream->size ) - { - FT_ERROR(( "FT_Stream_Open:" )); - FT_ERROR(( " opened `%s' but zero-sized\n", filepathname )); - goto Fail_Map; - } - - stream->pos = 0; - stream->base = (unsigned char *)mmap( NULL, - stream->size, - PROT_READ, - MAP_FILE | MAP_PRIVATE, - file, - 0 ); - - if ( stream->base == MAP_FAILED ) - { - FT_ERROR(( "FT_Stream_Open:" )); - FT_ERROR(( " could not `mmap' file `%s'\n", filepathname )); - goto Fail_Map; - } - - close( file ); - - stream->descriptor.pointer = stream->base; - stream->pathname.pointer = (char*)filepathname; - - stream->close = ft_close_stream; - stream->read = NULL; - - FT_TRACE1(( "FT_Stream_Open:" )); - FT_TRACE1(( " opened `%s' (%d bytes) successfully\n", - filepathname, stream->size )); - - return FT_Err_Ok; - - Fail_Map: - close( file ); - - stream->base = NULL; - stream->size = 0; - stream->pos = 0; - - return FT_THROW( Cannot_Open_Stream ); - } - - -#ifdef FT_DEBUG_MEMORY - - extern FT_Int - ft_mem_debug_init( FT_Memory memory ); - - extern void - ft_mem_debug_done( FT_Memory memory ); - -#endif - - - /* documentation is in ftobjs.h */ - - FT_BASE_DEF( FT_Memory ) - FT_New_Memory( void ) - { - FT_Memory memory; - - - memory = (FT_Memory)malloc( sizeof ( *memory ) ); - if ( memory ) - { - memory->user = NULL; - memory->alloc = ft_alloc; - memory->realloc = ft_realloc; - memory->free = ft_free; -#ifdef FT_DEBUG_MEMORY - ft_mem_debug_init( memory ); -#endif - } - - return memory; - } - - - /* documentation is in ftobjs.h */ - - FT_BASE_DEF( void ) - FT_Done_Memory( FT_Memory memory ) - { -#ifdef FT_DEBUG_MEMORY - ft_mem_debug_done( memory ); -#endif - memory->free( memory, memory ); - } - - -/* END */ diff --git a/vendor/freetype/builds/wince/ftdebug.c b/vendor/freetype/builds/wince/ftdebug.c deleted file mode 100644 index 28b8dcd86e0..00000000000 --- a/vendor/freetype/builds/wince/ftdebug.c +++ /dev/null @@ -1,353 +0,0 @@ -/**************************************************************************** - * - * ftdebug.c - * - * Debugging and logging component for WinCE (body). - * - * Copyright (C) 1996-2025 by - * David Turner, Robert Wilhelm, and Werner Lemberg. - * - * This file is part of the FreeType project, and may only be used, - * modified, and distributed under the terms of the FreeType project - * license, LICENSE.TXT. By continuing to use, modify, or distribute - * this file you indicate that you have read the license and - * understand and accept it fully. - * - */ - - - /************************************************************************** - * - * This component contains various macros and functions used to ease the - * debugging of the FreeType engine. Its main purpose is in assertion - * checking, tracing, and error detection. - * - * There are now three debugging modes: - * - * - trace mode - * - * Error and trace messages are sent to the log file (which can be the - * standard error output). - * - * - error mode - * - * Only error messages are generated. - * - * - release mode: - * - * No error message is sent or generated. The code is free from any - * debugging parts. - * - */ - - -#include -#include - - -#ifdef FT_DEBUG_LEVEL_ERROR - -#include -#include -#include - -#include - - - static void - OutputDebugStringEx( const char* str ) - { - static WCHAR buf[8192]; - - int sz = MultiByteToWideChar( CP_ACP, 0, str, -1, buf, - sizeof ( buf ) / sizeof ( *buf ) ); - - - if ( !sz ) - lstrcpyW( buf, L"OutputDebugStringEx: MultiByteToWideChar failed" ); - - OutputDebugStringW( buf ); - } - - - /* documentation is in ftdebug.h */ - - FT_BASE_DEF( void ) - FT_Message( const char* fmt, - ... ) - { - static char buf[8192]; - va_list ap; - - - va_start( ap, fmt ); - vfprintf( stderr, fmt, ap ); - /* send the string to the debugger as well */ - vsprintf( buf, fmt, ap ); - OutputDebugStringEx( buf ); - va_end( ap ); - } - - - /* documentation is in ftdebug.h */ - - FT_BASE_DEF( void ) - FT_Panic( const char* fmt, - ... ) - { - static char buf[8192]; - va_list ap; - - - va_start( ap, fmt ); - vsprintf( buf, fmt, ap ); - OutputDebugStringEx( buf ); - va_end( ap ); - - exit( EXIT_FAILURE ); - } - - - /* documentation is in ftdebug.h */ - - FT_BASE_DEF( int ) - FT_Throw( FT_Error error, - int line, - const char* file ) - { -#if 0 - /* activating the code in this block makes FreeType very chatty */ - fprintf( stderr, - "%s:%d: error 0x%02x: %s\n", - file, - line, - error, - FT_Error_String( error ) ); -#else - FT_UNUSED( error ); - FT_UNUSED( line ); - FT_UNUSED( file ); -#endif - - return 0; - } - -#endif /* FT_DEBUG_LEVEL_ERROR */ - - -#ifdef FT_DEBUG_LEVEL_TRACE - - /* array of trace levels, initialized to 0; */ - /* this gets adjusted at run-time */ - static int ft_trace_levels_enabled[trace_count]; - - /* array of trace levels, always initialized to 0 */ - static int ft_trace_levels_disabled[trace_count]; - - /* a pointer to either `ft_trace_levels_enabled' */ - /* or `ft_trace_levels_disabled' */ - int* ft_trace_levels; - - /* define array of trace toggle names */ -#define FT_TRACE_DEF( x ) #x , - - static const char* ft_trace_toggles[trace_count + 1] = - { -#include - NULL - }; - -#undef FT_TRACE_DEF - - - /* documentation is in ftdebug.h */ - - FT_BASE_DEF( FT_Int ) - FT_Trace_Get_Count( void ) - { - return trace_count; - } - - - /* documentation is in ftdebug.h */ - - FT_BASE_DEF( const char * ) - FT_Trace_Get_Name( FT_Int idx ) - { - int max = FT_Trace_Get_Count(); - - - if ( idx < max ) - return ft_trace_toggles[idx]; - else - return NULL; - } - - - /* documentation is in ftdebug.h */ - - FT_BASE_DEF( void ) - FT_Trace_Disable( void ) - { - ft_trace_levels = ft_trace_levels_disabled; - } - - - /* documentation is in ftdebug.h */ - - FT_BASE_DEF( void ) - FT_Trace_Enable( void ) - { - ft_trace_levels = ft_trace_levels_enabled; - } - - - /************************************************************************** - * - * Initialize the tracing sub-system. This is done by retrieving the - * value of the `FT2_DEBUG' environment variable. It must be a list of - * toggles, separated by spaces, `;', or `,'. Example: - * - * export FT2_DEBUG="any:3 memory:7 stream:5" - * - * This requests that all levels be set to 3, except the trace level for - * the memory and stream components which are set to 7 and 5, - * respectively. - * - * See the file `include/freetype/internal/fttrace.h' for details of - * the available toggle names. - * - * The level must be between 0 and 7; 0 means quiet (except for serious - * runtime errors), and 7 means _very_ verbose. - */ - FT_BASE_DEF( void ) - ft_debug_init( void ) - { - /* Windows Mobile doesn't have environment API: */ - /* GetEnvironmentStrings, GetEnvironmentVariable, getenv. */ - /* */ - /* FIXME!!! How to set debug mode? */ - - /* const char* ft2_debug = getenv( "FT2_DEBUG" ); */ - - const char* ft2_debug = NULL; - - - if ( ft2_debug ) - { - const char* p = ft2_debug; - const char* q; - - - for ( ; *p; p++ ) - { - /* skip leading whitespace and separators */ - if ( *p == ' ' || *p == '\t' || *p == ',' || *p == ';' || *p == '=' ) - continue; - - /* read toggle name, followed by ':' */ - q = p; - while ( *p && *p != ':' ) - p++; - - if ( !*p ) - break; - - if ( *p == ':' && p > q ) - { - FT_Int n, i, len = (FT_Int)( p - q ); - FT_Int level = -1, found = -1; - - - for ( n = 0; n < trace_count; n++ ) - { - const char* toggle = ft_trace_toggles[n]; - - - for ( i = 0; i < len; i++ ) - { - if ( toggle[i] != q[i] ) - break; - } - - if ( i == len && toggle[i] == 0 ) - { - found = n; - break; - } - } - - /* read level */ - p++; - if ( *p ) - { - level = *p - '0'; - if ( level < 0 || level > 7 ) - level = -1; - } - - if ( found >= 0 && level >= 0 ) - { - if ( found == trace_any ) - { - /* special case for `any' */ - for ( n = 0; n < trace_count; n++ ) - ft_trace_levels_enabled[n] = level; - } - else - ft_trace_levels_enabled[found] = level; - } - } - } - } - - ft_trace_levels = ft_trace_levels_enabled; - } - - -#else /* !FT_DEBUG_LEVEL_TRACE */ - - - FT_BASE_DEF( void ) - ft_debug_init( void ) - { - /* nothing */ - } - - - FT_BASE_DEF( FT_Int ) - FT_Trace_Get_Count( void ) - { - return 0; - } - - - FT_BASE_DEF( const char * ) - FT_Trace_Get_Name( FT_Int idx ) - { - FT_UNUSED( idx ); - - return NULL; - } - - - FT_BASE_DEF( void ) - FT_Trace_Disable( void ) - { - /* nothing */ - } - - - /* documentation is in ftdebug.h */ - - FT_BASE_DEF( void ) - FT_Trace_Enable( void ) - { - /* nothing */ - } - - -#endif /* !FT_DEBUG_LEVEL_TRACE */ - - -/* END */ diff --git a/vendor/freetype/builds/wince/vc2005-ce/freetype.sln b/vendor/freetype/builds/wince/vc2005-ce/freetype.sln deleted file mode 100644 index 32241846183..00000000000 --- a/vendor/freetype/builds/wince/vc2005-ce/freetype.sln +++ /dev/null @@ -1,157 +0,0 @@ -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}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - LIB Debug Multithreaded|Pocket PC 2003 (ARMV4) = LIB Debug Multithreaded|Pocket PC 2003 (ARMV4) - LIB Debug Multithreaded|Smartphone 2003 (ARMV4) = LIB Debug Multithreaded|Smartphone 2003 (ARMV4) - LIB Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) = LIB Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) - LIB Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) = LIB Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) - LIB Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I) = LIB Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I) - LIB Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I) = LIB Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I) - LIB Debug Singlethreaded|Pocket PC 2003 (ARMV4) = LIB Debug Singlethreaded|Pocket PC 2003 (ARMV4) - LIB Debug Singlethreaded|Smartphone 2003 (ARMV4) = LIB Debug Singlethreaded|Smartphone 2003 (ARMV4) - LIB Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) = LIB Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) - LIB Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) = LIB Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) - LIB Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I) = LIB Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I) - LIB Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I) = LIB Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I) - LIB Debug|Pocket PC 2003 (ARMV4) = LIB Debug|Pocket PC 2003 (ARMV4) - LIB Debug|Smartphone 2003 (ARMV4) = LIB Debug|Smartphone 2003 (ARMV4) - LIB Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) = LIB Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) - LIB Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I) = LIB Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I) - LIB Debug|Windows Mobile 6 Professional SDK (ARMV4I) = LIB Debug|Windows Mobile 6 Professional SDK (ARMV4I) - LIB Debug|Windows Mobile 6 Standard SDK (ARMV4I) = LIB Debug|Windows Mobile 6 Standard SDK (ARMV4I) - LIB Release Multithreaded|Pocket PC 2003 (ARMV4) = LIB Release Multithreaded|Pocket PC 2003 (ARMV4) - LIB Release Multithreaded|Smartphone 2003 (ARMV4) = LIB Release Multithreaded|Smartphone 2003 (ARMV4) - LIB Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) = LIB Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) - LIB Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) = LIB Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) - LIB Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I) = LIB Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I) - LIB Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I) = LIB Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I) - LIB Release Singlethreaded|Pocket PC 2003 (ARMV4) = LIB Release Singlethreaded|Pocket PC 2003 (ARMV4) - LIB Release Singlethreaded|Smartphone 2003 (ARMV4) = LIB Release Singlethreaded|Smartphone 2003 (ARMV4) - LIB Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) = LIB Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) - LIB Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) = LIB Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) - LIB Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I) = LIB Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I) - LIB Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I) = LIB Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I) - LIB Release|Pocket PC 2003 (ARMV4) = LIB Release|Pocket PC 2003 (ARMV4) - LIB Release|Smartphone 2003 (ARMV4) = LIB Release|Smartphone 2003 (ARMV4) - LIB Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) = LIB Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) - LIB Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I) = LIB Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I) - LIB Release|Windows Mobile 6 Professional SDK (ARMV4I) = LIB Release|Windows Mobile 6 Professional SDK (ARMV4I) - LIB Release|Windows Mobile 6 Standard SDK (ARMV4I) = LIB Release|Windows Mobile 6 Standard SDK (ARMV4I) - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Pocket PC 2003 (ARMV4).ActiveCfg = Debug Multithreaded|Pocket PC 2003 (ARMV4) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Pocket PC 2003 (ARMV4).Build.0 = Debug Multithreaded|Pocket PC 2003 (ARMV4) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Pocket PC 2003 (ARMV4).Deploy.0 = Debug Multithreaded|Pocket PC 2003 (ARMV4) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Smartphone 2003 (ARMV4).ActiveCfg = Debug Multithreaded|Smartphone 2003 (ARMV4) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Smartphone 2003 (ARMV4).Build.0 = Debug Multithreaded|Smartphone 2003 (ARMV4) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Smartphone 2003 (ARMV4).Deploy.0 = Debug Multithreaded|Smartphone 2003 (ARMV4) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Deploy.0 = Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Build.0 = Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Deploy.0 = Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I).ActiveCfg = Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I).Build.0 = Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I).Deploy.0 = Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Pocket PC 2003 (ARMV4).ActiveCfg = Debug Singlethreaded|Pocket PC 2003 (ARMV4) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Pocket PC 2003 (ARMV4).Build.0 = Debug Singlethreaded|Pocket PC 2003 (ARMV4) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Pocket PC 2003 (ARMV4).Deploy.0 = Debug Singlethreaded|Pocket PC 2003 (ARMV4) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Smartphone 2003 (ARMV4).ActiveCfg = Debug Singlethreaded|Smartphone 2003 (ARMV4) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Smartphone 2003 (ARMV4).Build.0 = Debug Singlethreaded|Smartphone 2003 (ARMV4) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Smartphone 2003 (ARMV4).Deploy.0 = Debug Singlethreaded|Smartphone 2003 (ARMV4) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Deploy.0 = Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Build.0 = Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Deploy.0 = Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I).ActiveCfg = Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I).Build.0 = Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I).Deploy.0 = Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Pocket PC 2003 (ARMV4).ActiveCfg = Debug|Pocket PC 2003 (ARMV4) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Pocket PC 2003 (ARMV4).Build.0 = Debug|Pocket PC 2003 (ARMV4) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Pocket PC 2003 (ARMV4).Deploy.0 = Debug|Pocket PC 2003 (ARMV4) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Smartphone 2003 (ARMV4).ActiveCfg = Debug|Smartphone 2003 (ARMV4) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Smartphone 2003 (ARMV4).Build.0 = Debug|Smartphone 2003 (ARMV4) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Smartphone 2003 (ARMV4).Deploy.0 = Debug|Smartphone 2003 (ARMV4) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Deploy.0 = Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Build.0 = Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Deploy.0 = Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 6 Professional SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Debug|Windows Mobile 6 Professional SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Debug|Windows Mobile 6 Professional SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Windows Mobile 6 Standard SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 6 Standard SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Windows Mobile 6 Standard SDK (ARMV4I).Build.0 = Debug|Windows Mobile 6 Standard SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Windows Mobile 6 Standard SDK (ARMV4I).Deploy.0 = Debug|Windows Mobile 6 Standard SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Pocket PC 2003 (ARMV4).ActiveCfg = Release Multithreaded|Pocket PC 2003 (ARMV4) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Pocket PC 2003 (ARMV4).Build.0 = Release Multithreaded|Pocket PC 2003 (ARMV4) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Pocket PC 2003 (ARMV4).Deploy.0 = Release Multithreaded|Pocket PC 2003 (ARMV4) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Smartphone 2003 (ARMV4).ActiveCfg = Release Multithreaded|Smartphone 2003 (ARMV4) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Smartphone 2003 (ARMV4).Build.0 = Release Multithreaded|Smartphone 2003 (ARMV4) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Smartphone 2003 (ARMV4).Deploy.0 = Release Multithreaded|Smartphone 2003 (ARMV4) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Deploy.0 = Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Build.0 = Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Deploy.0 = Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I).ActiveCfg = Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I).Build.0 = Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I).Deploy.0 = Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Pocket PC 2003 (ARMV4).ActiveCfg = Release Singlethreaded|Pocket PC 2003 (ARMV4) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Pocket PC 2003 (ARMV4).Build.0 = Release Singlethreaded|Pocket PC 2003 (ARMV4) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Pocket PC 2003 (ARMV4).Deploy.0 = Release Singlethreaded|Pocket PC 2003 (ARMV4) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Smartphone 2003 (ARMV4).ActiveCfg = Release Singlethreaded|Smartphone 2003 (ARMV4) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Smartphone 2003 (ARMV4).Build.0 = Release Singlethreaded|Smartphone 2003 (ARMV4) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Smartphone 2003 (ARMV4).Deploy.0 = Release Singlethreaded|Smartphone 2003 (ARMV4) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Deploy.0 = Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Build.0 = Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Deploy.0 = Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I).ActiveCfg = Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I).Build.0 = Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I).Deploy.0 = Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Pocket PC 2003 (ARMV4).ActiveCfg = Release|Pocket PC 2003 (ARMV4) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Pocket PC 2003 (ARMV4).Build.0 = Release|Pocket PC 2003 (ARMV4) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Pocket PC 2003 (ARMV4).Deploy.0 = Release|Pocket PC 2003 (ARMV4) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Smartphone 2003 (ARMV4).ActiveCfg = Release|Smartphone 2003 (ARMV4) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Smartphone 2003 (ARMV4).Build.0 = Release|Smartphone 2003 (ARMV4) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Smartphone 2003 (ARMV4).Deploy.0 = Release|Smartphone 2003 (ARMV4) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Deploy.0 = Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Build.0 = Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Deploy.0 = Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 6 Professional SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Release|Windows Mobile 6 Professional SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Release|Windows Mobile 6 Professional SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Windows Mobile 6 Standard SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 6 Standard SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Windows Mobile 6 Standard SDK (ARMV4I).Build.0 = Release|Windows Mobile 6 Standard SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Windows Mobile 6 Standard SDK (ARMV4I).Deploy.0 = Release|Windows Mobile 6 Standard SDK (ARMV4I) - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/vendor/freetype/builds/wince/vc2005-ce/freetype.vcproj b/vendor/freetype/builds/wince/vc2005-ce/freetype.vcproj deleted file mode 100644 index 238ffc6acbd..00000000000 --- a/vendor/freetype/builds/wince/vc2005-ce/freetype.vcproj +++ /dev/null @@ -1,878 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/vendor/freetype/builds/wince/vc2005-ce/index.html b/vendor/freetype/builds/wince/vc2005-ce/index.html deleted file mode 100644 index d497322eec5..00000000000 --- a/vendor/freetype/builds/wince/vc2005-ce/index.html +++ /dev/null @@ -1,47 +0,0 @@ - -
- - FreeType 2 Project Files for VS.NET 2005 - (Pocket PC) - - - -

- FreeType 2 Project Files for VS.NET 2005 - (Pocket PC) -

- -

This directory contains project files for Visual C++, named -freetype.vcproj, and Visual Studio, called freetype.sln for -the following targets: - -

    -
  • PPC/SP 2003 (Pocket PC 2003)
  • -
  • PPC/SP WM5 (Windows Mobile 5)
  • -
  • PPC/SP WM6 (Windows Mobile 6)
  • -
- -It compiles the following libraries from the FreeType 2.14.1 sources:

- -
    -
    -    freetype.lib     - release build; single threaded
    -    freetype_D.lib   - debug build;   single threaded
    -    freetypeMT.lib   - release build; multi-threaded
    -    freetypeMT_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 -using the unix2dos or u2d utilities that are floating -around, which specifically deal with this particular problem. - -

Build directories are placed in the top-level objs -directory.

- - - diff --git a/vendor/freetype/builds/wince/vc2008-ce/freetype.sln b/vendor/freetype/builds/wince/vc2008-ce/freetype.sln deleted file mode 100644 index a8010f0903c..00000000000 --- a/vendor/freetype/builds/wince/vc2008-ce/freetype.sln +++ /dev/null @@ -1,157 +0,0 @@ -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}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - LIB Debug Multithreaded|Pocket PC 2003 (ARMV4) = LIB Debug Multithreaded|Pocket PC 2003 (ARMV4) - LIB Debug Multithreaded|Smartphone 2003 (ARMV4) = LIB Debug Multithreaded|Smartphone 2003 (ARMV4) - LIB Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) = LIB Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) - LIB Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) = LIB Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) - LIB Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I) = LIB Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I) - LIB Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I) = LIB Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I) - LIB Debug Singlethreaded|Pocket PC 2003 (ARMV4) = LIB Debug Singlethreaded|Pocket PC 2003 (ARMV4) - LIB Debug Singlethreaded|Smartphone 2003 (ARMV4) = LIB Debug Singlethreaded|Smartphone 2003 (ARMV4) - LIB Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) = LIB Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) - LIB Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) = LIB Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) - LIB Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I) = LIB Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I) - LIB Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I) = LIB Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I) - LIB Debug|Pocket PC 2003 (ARMV4) = LIB Debug|Pocket PC 2003 (ARMV4) - LIB Debug|Smartphone 2003 (ARMV4) = LIB Debug|Smartphone 2003 (ARMV4) - LIB Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) = LIB Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) - LIB Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I) = LIB Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I) - LIB Debug|Windows Mobile 6 Professional SDK (ARMV4I) = LIB Debug|Windows Mobile 6 Professional SDK (ARMV4I) - LIB Debug|Windows Mobile 6 Standard SDK (ARMV4I) = LIB Debug|Windows Mobile 6 Standard SDK (ARMV4I) - LIB Release Multithreaded|Pocket PC 2003 (ARMV4) = LIB Release Multithreaded|Pocket PC 2003 (ARMV4) - LIB Release Multithreaded|Smartphone 2003 (ARMV4) = LIB Release Multithreaded|Smartphone 2003 (ARMV4) - LIB Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) = LIB Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) - LIB Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) = LIB Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) - LIB Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I) = LIB Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I) - LIB Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I) = LIB Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I) - LIB Release Singlethreaded|Pocket PC 2003 (ARMV4) = LIB Release Singlethreaded|Pocket PC 2003 (ARMV4) - LIB Release Singlethreaded|Smartphone 2003 (ARMV4) = LIB Release Singlethreaded|Smartphone 2003 (ARMV4) - LIB Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) = LIB Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) - LIB Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) = LIB Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) - LIB Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I) = LIB Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I) - LIB Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I) = LIB Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I) - LIB Release|Pocket PC 2003 (ARMV4) = LIB Release|Pocket PC 2003 (ARMV4) - LIB Release|Smartphone 2003 (ARMV4) = LIB Release|Smartphone 2003 (ARMV4) - LIB Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) = LIB Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) - LIB Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I) = LIB Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I) - LIB Release|Windows Mobile 6 Professional SDK (ARMV4I) = LIB Release|Windows Mobile 6 Professional SDK (ARMV4I) - LIB Release|Windows Mobile 6 Standard SDK (ARMV4I) = LIB Release|Windows Mobile 6 Standard SDK (ARMV4I) - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Pocket PC 2003 (ARMV4).ActiveCfg = Debug Multithreaded|Pocket PC 2003 (ARMV4) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Pocket PC 2003 (ARMV4).Build.0 = Debug Multithreaded|Pocket PC 2003 (ARMV4) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Pocket PC 2003 (ARMV4).Deploy.0 = Debug Multithreaded|Pocket PC 2003 (ARMV4) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Smartphone 2003 (ARMV4).ActiveCfg = Debug Multithreaded|Smartphone 2003 (ARMV4) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Smartphone 2003 (ARMV4).Build.0 = Debug Multithreaded|Smartphone 2003 (ARMV4) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Smartphone 2003 (ARMV4).Deploy.0 = Debug Multithreaded|Smartphone 2003 (ARMV4) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Deploy.0 = Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Build.0 = Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Deploy.0 = Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I).ActiveCfg = Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I).Build.0 = Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I).Deploy.0 = Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Pocket PC 2003 (ARMV4).ActiveCfg = Debug Singlethreaded|Pocket PC 2003 (ARMV4) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Pocket PC 2003 (ARMV4).Build.0 = Debug Singlethreaded|Pocket PC 2003 (ARMV4) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Pocket PC 2003 (ARMV4).Deploy.0 = Debug Singlethreaded|Pocket PC 2003 (ARMV4) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Smartphone 2003 (ARMV4).ActiveCfg = Debug Singlethreaded|Smartphone 2003 (ARMV4) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Smartphone 2003 (ARMV4).Build.0 = Debug Singlethreaded|Smartphone 2003 (ARMV4) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Smartphone 2003 (ARMV4).Deploy.0 = Debug Singlethreaded|Smartphone 2003 (ARMV4) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Deploy.0 = Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Build.0 = Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Deploy.0 = Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I).ActiveCfg = Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I).Build.0 = Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I).Deploy.0 = Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Pocket PC 2003 (ARMV4).ActiveCfg = Debug|Pocket PC 2003 (ARMV4) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Pocket PC 2003 (ARMV4).Build.0 = Debug|Pocket PC 2003 (ARMV4) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Pocket PC 2003 (ARMV4).Deploy.0 = Debug|Pocket PC 2003 (ARMV4) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Smartphone 2003 (ARMV4).ActiveCfg = Debug|Smartphone 2003 (ARMV4) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Smartphone 2003 (ARMV4).Build.0 = Debug|Smartphone 2003 (ARMV4) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Smartphone 2003 (ARMV4).Deploy.0 = Debug|Smartphone 2003 (ARMV4) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Deploy.0 = Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Build.0 = Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Deploy.0 = Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 6 Professional SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Debug|Windows Mobile 6 Professional SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Debug|Windows Mobile 6 Professional SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Windows Mobile 6 Standard SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 6 Standard SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Windows Mobile 6 Standard SDK (ARMV4I).Build.0 = Debug|Windows Mobile 6 Standard SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Windows Mobile 6 Standard SDK (ARMV4I).Deploy.0 = Debug|Windows Mobile 6 Standard SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Pocket PC 2003 (ARMV4).ActiveCfg = Release Multithreaded|Pocket PC 2003 (ARMV4) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Pocket PC 2003 (ARMV4).Build.0 = Release Multithreaded|Pocket PC 2003 (ARMV4) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Pocket PC 2003 (ARMV4).Deploy.0 = Release Multithreaded|Pocket PC 2003 (ARMV4) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Smartphone 2003 (ARMV4).ActiveCfg = Release Multithreaded|Smartphone 2003 (ARMV4) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Smartphone 2003 (ARMV4).Build.0 = Release Multithreaded|Smartphone 2003 (ARMV4) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Smartphone 2003 (ARMV4).Deploy.0 = Release Multithreaded|Smartphone 2003 (ARMV4) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Deploy.0 = Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Build.0 = Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Deploy.0 = Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I).ActiveCfg = Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I).Build.0 = Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I).Deploy.0 = Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Pocket PC 2003 (ARMV4).ActiveCfg = Release Singlethreaded|Pocket PC 2003 (ARMV4) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Pocket PC 2003 (ARMV4).Build.0 = Release Singlethreaded|Pocket PC 2003 (ARMV4) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Pocket PC 2003 (ARMV4).Deploy.0 = Release Singlethreaded|Pocket PC 2003 (ARMV4) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Smartphone 2003 (ARMV4).ActiveCfg = Release Singlethreaded|Smartphone 2003 (ARMV4) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Smartphone 2003 (ARMV4).Build.0 = Release Singlethreaded|Smartphone 2003 (ARMV4) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Smartphone 2003 (ARMV4).Deploy.0 = Release Singlethreaded|Smartphone 2003 (ARMV4) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Deploy.0 = Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Build.0 = Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Deploy.0 = Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I).ActiveCfg = Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I).Build.0 = Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I).Deploy.0 = Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Pocket PC 2003 (ARMV4).ActiveCfg = Release|Pocket PC 2003 (ARMV4) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Pocket PC 2003 (ARMV4).Build.0 = Release|Pocket PC 2003 (ARMV4) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Pocket PC 2003 (ARMV4).Deploy.0 = Release|Pocket PC 2003 (ARMV4) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Smartphone 2003 (ARMV4).ActiveCfg = Release|Smartphone 2003 (ARMV4) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Smartphone 2003 (ARMV4).Build.0 = Release|Smartphone 2003 (ARMV4) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Smartphone 2003 (ARMV4).Deploy.0 = Release|Smartphone 2003 (ARMV4) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Deploy.0 = Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Build.0 = Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Deploy.0 = Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 6 Professional SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Release|Windows Mobile 6 Professional SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Release|Windows Mobile 6 Professional SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Windows Mobile 6 Standard SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 6 Standard SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Windows Mobile 6 Standard SDK (ARMV4I).Build.0 = Release|Windows Mobile 6 Standard SDK (ARMV4I) - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Windows Mobile 6 Standard SDK (ARMV4I).Deploy.0 = Release|Windows Mobile 6 Standard SDK (ARMV4I) - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/vendor/freetype/builds/wince/vc2008-ce/freetype.vcproj b/vendor/freetype/builds/wince/vc2008-ce/freetype.vcproj deleted file mode 100644 index 8404684af45..00000000000 --- a/vendor/freetype/builds/wince/vc2008-ce/freetype.vcproj +++ /dev/null @@ -1,3517 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/vendor/freetype/builds/wince/vc2008-ce/index.html b/vendor/freetype/builds/wince/vc2008-ce/index.html deleted file mode 100644 index c12094b35e6..00000000000 --- a/vendor/freetype/builds/wince/vc2008-ce/index.html +++ /dev/null @@ -1,47 +0,0 @@ - -
- - FreeType 2 Project Files for VS.NET 2008 - (Pocket PC) - - - -

- FreeType 2 Project Files for VS.NET 2008 - (Pocket PC) -

- -

This directory contains project files for Visual C++, named -freetype.dsp, and Visual Studio, called freetype.sln for -the following targets: - -

    -
  • PPC/SP 2003 (Pocket PC 2003)
  • -
  • PPC/SP WM5 (Windows Mobile 5)
  • -
  • PPC/SP WM6 (Windows Mobile 6)
  • -
- -It compiles the following libraries from the FreeType 2.14.1 sources:

- -
    -
    -    freetype.lib     - release build; single threaded
    -    freetype_D.lib   - debug build;   single threaded
    -    freetypeMT.lib   - release build; multi-threaded
    -    freetypeMT_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 -using the unix2dos or u2d utilities that are floating -around, which specifically deal with this particular problem. - -

Build directories are placed in the top-level objs -directory.

- - - diff --git a/vendor/freetype/builds/windows/detect.mk b/vendor/freetype/builds/windows/detect.mk deleted file mode 100644 index 8c3e5349946..00000000000 --- a/vendor/freetype/builds/windows/detect.mk +++ /dev/null @@ -1,202 +0,0 @@ -# -# FreeType 2 configuration file to detect a Win32 host platform. -# - - -# Copyright (C) 1996-2025 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -.PHONY: setup - - -ifeq ($(PLATFORM),ansi) - - # Detecting Windows NT is easy, as the OS variable must be defined and - # contains `Windows_NT'. This also works with Windows 2000 and XP. - # - ifeq ($(OS),Windows_NT) - - PLATFORM := windows - - else - - # Detecting Windows 9X - - # We used to run the `ver' command to see if its output contains the - # word `Windows'. If this is true, we are running Windows 95 or later: - # - # ifdef COMSPEC - # # First, check if we have the COMSPEC environment variable, which - # # indicates we can use COMMAND.COM's internal commands - # is_windows := $(findstring Windows,$(strip $(shell ver))) - # endif - # - # Unfortunately, this also detects the case when one is running - # DOS 7.x (the MS-DOS version that lies below Windows) without actually - # launching the GUI. - # - # A better test is to check whether there are both the environment - # variables `winbootdir' and `windir'. The first indicates an - # underlying DOS 7.x, while the second is set only if windows is - # available. - # - # Note that on Windows NT, such an environment variable will not be seen - # from DOS-based tools like DJGPP's make; this is not actually a problem - # since NT is detected independently above. But do not try to be clever! - # - ifdef winbootdir - ifdef windir - - PLATFORM := windows - - endif - endif - - endif # test NT - -endif # test PLATFORM ansi - -ifeq ($(PLATFORM),windows) - - DELETE := del - CAT := type - SEP := $(BACKSLASH) - - # Setting COPY is a bit trickier. Plain COPY on NT will not work - # correctly, because it will uppercase 8.3 filenames, creating a - # `CONFIG.MK' file which isn't found later on by `make'. - # Since we do not want that, we need to force execution of CMD.EXE. - # Unfortunately, CMD.EXE is not available on Windows 9X. - # So we need to hack. - # - # Kudos to Eli Zaretskii (DJGPP guru) that helped debug it. - # Details are available in threads of the FreeType mailing list - # (2004-11-11), and then in the devel mailing list (2004-11-20 to -23). - # - ifeq ($(OS),Windows_NT) - COPY := >nul cmd.exe /c copy - else - COPY := >nul copy - endif # test NT - - - # gcc Makefile by default - CONFIG_FILE := w32-gcc.mk - ifeq ($(firstword $(CC)),cc) - CC := gcc - endif - - ifneq ($(findstring list,$(MAKECMDGOALS)),) # test for the "list" target - dump_target_list: - $(info ) - $(info $(PROJECT_TITLE) build system -- supported compilers) - $(info ) - $(info Several command-line compilers are supported on Win32:) - $(info ) - $(info $(empty) make setup gcc (with Mingw)) - $(info $(empty) make setup visualc Microsoft Visual C++) - $(info $(empty) make setup bcc32 Borland C/C++) - $(info $(empty) make setup lcc Win32-LCC) - $(info $(empty) make setup intelc Intel C/C++) - $(info ) - - setup: dump_target_list - .PHONY: dump_target_list list - else - setup: std_setup - endif - - # additionally, we provide hooks for various other compilers - # - ifneq ($(findstring visualc,$(MAKECMDGOALS)),) # Visual C/C++ - CONFIG_FILE := w32-vcc.mk - CC := cl - - .PHONY: visualc - visualc: setup - @cd . - endif - - ifneq ($(findstring intelc,$(MAKECMDGOALS)),) # Intel C/C++ - CONFIG_FILE := w32-intl.mk - CC := cl - - .PHONY: intelc - visualc: setup - @cd . - endif - - ifneq ($(findstring watcom,$(MAKECMDGOALS)),) # Watcom C/C++ - CONFIG_FILE := w32-wat.mk - CC := wcc386 - - .PHONY: watcom - watcom: setup - @cd . - endif - - ifneq ($(findstring visualage,$(MAKECMDGOALS)),) # Visual Age C++ - CONFIG_FILE := w32-icc.mk - CC := icc - - .PHONY: visualage - visualage: setup - @cd . - endif - - ifneq ($(findstring lcc,$(MAKECMDGOALS)),) # LCC-Win32 - CONFIG_FILE := w32-lcc.mk - CC := lcc - - .PHONY: lcc - lcc: setup - @cd . - endif - - ifneq ($(findstring mingw32,$(MAKECMDGOALS)),) # mingw32 - CONFIG_FILE := w32-mingw32.mk - CC := gcc - - .PHONY: mingw32 - mingw32: setup - @cd . - endif - - ifneq ($(findstring bcc32,$(MAKECMDGOALS)),) # Borland C++ - CONFIG_FILE := w32-bcc.mk - CC := bcc32 - - .PHONY: bcc32 - bcc32: setup - @cd . - endif - - ifneq ($(findstring devel-bcc,$(MAKECMDGOALS)),) # development target - CONFIG_FILE := w32-bccd.mk - CC := bcc32 - - .PHONY: devel-bcc - devel-bcc: setup - @cd . - endif - - ifneq ($(findstring devel-gcc,$(MAKECMDGOALS)),) # development target - CONFIG_FILE := w32-dev.mk - CC := gcc - - .PHONY: devel-gcc - devel-gcc: setup - @cd . - endif - -endif # test PLATFORM windows - - -# EOF diff --git a/vendor/freetype/builds/windows/vc2010/freetype.user.props b/vendor/freetype/builds/windows/vc2010/freetype.user.props deleted file mode 100644 index 78310d46316..00000000000 --- a/vendor/freetype/builds/windows/vc2010/freetype.user.props +++ /dev/null @@ -1,68 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/vendor/freetype/builds/windows/vc2010/freetype.vcxproj b/vendor/freetype/builds/windows/vc2010/freetype.vcxproj deleted file mode 100644 index 4cddc916fb6..00000000000 --- a/vendor/freetype/builds/windows/vc2010/freetype.vcxproj +++ /dev/null @@ -1,525 +0,0 @@ - - - - - - Debug - Win32 - - - Debug - ARM64 - - - Debug - x64 - - - Debug Static - Win32 - - - Debug Static - ARM64 - - - Debug Static - x64 - - - Release - Win32 - - - Release - ARM64 - - - Release - x64 - - - Release Static - Win32 - - - Release Static - ARM64 - - - Release Static - x64 - - - - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B} - FreeType - - - - $(DefaultPlatformToolset) - - - DynamicLibrary - NotSet - - - DynamicLibrary - NotSet - - - DynamicLibrary - NotSet - - - StaticLibrary - NotSet - - - StaticLibrary - NotSet - - - StaticLibrary - NotSet - - - DynamicLibrary - NotSet - - - DynamicLibrary - NotSet - - - DynamicLibrary - NotSet - - - StaticLibrary - NotSet - - - StaticLibrary - NotSet - - - StaticLibrary - NotSet - - - - - - ..\..\..\objs\$(Platform)\$(Configuration)\ - ..\..\..\objs\$(Platform)\$(Configuration)\ - AllRules.ruleset - - - freetype - - - - - Disabled - $(UserOptionDirectory);..\..\..\include;$(UserIncludeDirectories);%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY;DLL_EXPORT;$(UserDefines);%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - false - Level4 - ProgramDatabase - Default - 4001 - true - $(OutDir)$(TargetName).pdb - Disabled - - - _DEBUG;DLL_EXPORT;$(UserDefines);%(PreprocessorDefinitions) - 0x0409 - - - true - MachineX86 - $(UserLibraryDirectories);%(AdditionalLibraryDirectories) - $(UserDependencies);%(AdditionalDependencies) - - - - - Disabled - $(UserOptionDirectory);..\..\..\include;$(UserIncludeDirectories);%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY;DLL_EXPORT;$(UserDefines);%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - false - Level4 - ProgramDatabase - Default - 4001;4267 - true - $(OutDir)$(TargetName).pdb - Disabled - - - _DEBUG;DLL_EXPORT;$(UserDefines);%(PreprocessorDefinitions) - 0x0409 - - - true - MachineARM64 - $(UserLibraryDirectories);%(AdditionalLibraryDirectories) - $(UserDependencies);%(AdditionalDependencies) - - - - - Disabled - $(UserOptionDirectory);..\..\..\include;$(UserIncludeDirectories);%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY;DLL_EXPORT;$(UserDefines);%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - false - Level4 - ProgramDatabase - Default - 4001;4267 - true - $(OutDir)$(TargetName).pdb - Disabled - - - _DEBUG;DLL_EXPORT;$(UserDefines);%(PreprocessorDefinitions) - 0x0409 - - - true - MachineX64 - $(UserLibraryDirectories);%(AdditionalLibraryDirectories) - $(UserDependencies);%(AdditionalDependencies) - - - - - Disabled - $(UserOptionDirectory);..\..\..\include;$(UserIncludeDirectories);%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY;$(UserDefines);%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebug - false - Level4 - ProgramDatabase - Default - 4001 - true - $(OutDir)$(TargetName).pdb - Disabled - - - _DEBUG;$(UserDefines);%(PreprocessorDefinitions) - 0x0409 - - - MachineX86 - $(UserLibraryDirectories);%(AdditionalLibraryDirectories) - $(UserDependencies);%(AdditionalDependencies) - - - - - Disabled - $(UserOptionDirectory);..\..\..\include;$(UserIncludeDirectories);%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY;$(UserDefines);%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebug - false - Level4 - ProgramDatabase - Default - 4001;4267 - true - $(OutDir)$(TargetName).pdb - Disabled - - - _DEBUG;$(UserDefines);%(PreprocessorDefinitions) - 0x0409 - - - MachineARM64 - $(UserLibraryDirectories);%(AdditionalLibraryDirectories) - $(UserDependencies);%(AdditionalDependencies) - - - - - Disabled - $(UserOptionDirectory);..\..\..\include;$(UserIncludeDirectories);%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY;$(UserDefines);%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebug - false - Level4 - ProgramDatabase - Default - 4001;4267 - true - $(OutDir)$(TargetName).pdb - Disabled - - - _DEBUG;$(UserDefines);%(PreprocessorDefinitions) - 0x0409 - - - MachineX64 - $(UserLibraryDirectories);%(AdditionalLibraryDirectories) - $(UserDependencies);%(AdditionalDependencies) - - - - - MaxSpeed - AnySuitable - $(UserOptionDirectory);..\..\..\include;$(UserIncludeDirectories);%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;FT2_BUILD_LIBRARY;DLL_EXPORT;$(UserDefines);%(PreprocessorDefinitions) - MultiThreadedDLL - true - true - Level4 - Default - 4001 - true - StreamingSIMDExtensions2 - true - - - NDEBUG;DLL_EXPORT;$(UserDefines);%(PreprocessorDefinitions) - 0x0409 - - - true - true - MachineX86 - $(UserLibraryDirectories);%(AdditionalLibraryDirectories) - $(UserDependencies);%(AdditionalDependencies) - - - - - MaxSpeed - AnySuitable - $(UserOptionDirectory);..\..\..\include;$(UserIncludeDirectories);%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;FT2_BUILD_LIBRARY;DLL_EXPORT;$(UserDefines);%(PreprocessorDefinitions) - MultiThreadedDLL - true - true - Level4 - Default - 4001;4267 - true - NotSet - true - - - NDEBUG;DLL_EXPORT;$(UserDefines);%(PreprocessorDefinitions) - 0x0409 - - - true - true - MachineARM64 - $(UserLibraryDirectories);%(AdditionalLibraryDirectories) - $(UserDependencies);%(AdditionalDependencies) - - - - - MaxSpeed - AnySuitable - $(UserOptionDirectory);..\..\..\include;$(UserIncludeDirectories);%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;FT2_BUILD_LIBRARY;DLL_EXPORT;$(UserDefines);%(PreprocessorDefinitions) - MultiThreadedDLL - true - true - Level4 - Default - 4001;4267 - true - true - - - NDEBUG;DLL_EXPORT;$(UserDefines);%(PreprocessorDefinitions) - 0x0409 - - - true - true - MachineX64 - $(UserLibraryDirectories);%(AdditionalLibraryDirectories) - $(UserDependencies);%(AdditionalDependencies) - - - - - MaxSpeed - AnySuitable - $(UserOptionDirectory);..\..\..\include;$(UserIncludeDirectories);%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;FT2_BUILD_LIBRARY;$(UserDefines);%(PreprocessorDefinitions) - MultiThreaded - true - true - Level4 - Default - 4001 - true - StreamingSIMDExtensions2 - true - - - NDEBUG;$(UserDefines);%(PreprocessorDefinitions) - 0x0409 - - - MachineX86 - $(UserLibraryDirectories);%(AdditionalLibraryDirectories) - $(UserDependencies);%(AdditionalDependencies) - - - - - MaxSpeed - AnySuitable - $(UserOptionDirectory);..\..\..\include;$(UserIncludeDirectories);%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;FT2_BUILD_LIBRARY;$(UserDefines);%(PreprocessorDefinitions) - MultiThreaded - true - true - Level4 - Default - 4001;4267 - true - NotSet - true - - - NDEBUG;$(UserDefines);%(PreprocessorDefinitions) - 0x0409 - - - MachineARM64 - $(UserLibraryDirectories);%(AdditionalLibraryDirectories) - $(UserDependencies);%(AdditionalDependencies) - - - - - MaxSpeed - AnySuitable - $(UserOptionDirectory);..\..\..\include;$(UserIncludeDirectories);%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;FT2_BUILD_LIBRARY;$(UserDefines);%(PreprocessorDefinitions) - MultiThreaded - true - true - Level4 - Default - 4001;4267 - true - true - - - NDEBUG;$(UserDefines);%(PreprocessorDefinitions) - 0x0409 - - - MachineX64 - $(UserLibraryDirectories);%(AdditionalLibraryDirectories) - $(UserDependencies);%(AdditionalDependencies) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - false - - - false - - - - - - - - - ..\..\..\include\dlg\output.h - - - ..\..\..\include\dlg\dlg.h - - - ..\..\..\src\dlg\dlg.c - - - - - - - - - - - - - diff --git a/vendor/freetype/builds/windows/vc2010/freetype.vcxproj.filters b/vendor/freetype/builds/windows/vc2010/freetype.vcxproj.filters deleted file mode 100644 index 08e4cdeb8d2..00000000000 --- a/vendor/freetype/builds/windows/vc2010/freetype.vcxproj.filters +++ /dev/null @@ -1,149 +0,0 @@ - - - - - {b4c15893-ec11-491d-9507-0ac184f9cc78} - cpp;c;cxx;rc;def;r;odl;idl;hpj;bat - - - {4d3e4eff-3fbc-4b20-b413-2743b23b7109} - - - {e6cf6a0f-0404-4024-8bf8-ff5b29f35657} - h;hpp;hxx;hm;inl - - - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files\FT_MODULES - - - Source Files\FT_MODULES - - - Source Files\FT_MODULES - - - Source Files\FT_MODULES - - - Source Files\FT_MODULES - - - Source Files\FT_MODULES - - - Source Files\FT_MODULES - - - Source Files\FT_MODULES - - - Source Files\FT_MODULES - - - Source Files\FT_MODULES - - - Source Files\FT_MODULES - - - Source Files\FT_MODULES - - - Source Files\FT_MODULES - - - Source Files\FT_MODULES - - - Source Files\FT_MODULES - - - Source Files\FT_MODULES - - - Source Files - - - Source Files - - - - - Source Files - - - diff --git a/vendor/freetype/builds/windows/vc2010/index.html b/vendor/freetype/builds/windows/vc2010/index.html deleted file mode 100644 index abaa3fd7ae8..00000000000 --- a/vendor/freetype/builds/windows/vc2010/index.html +++ /dev/null @@ -1,40 +0,0 @@ - -
- - FreeType 2 Project Files for Visual C++ 2010 or newer - - - -

- FreeType 2 Project Files for Visual C++ 2010 or newer -

- -

This directory contains solution and project files for -Visual C++ 2010 or newer, named freetype.sln, -and freetype.vcxproj. It compiles the following libraries -from the FreeType 2.14.1 sources:

- -
    -
  • freetype.dll using 'Release' or 'Debug' configurations
  • -
  • freetype.lib using 'Release Static' or 'Debug Static' configurations
  • -
- -

Both Win32 and x64 builds are supported. Build directories and target -files are placed in the top-level objs directory.

- -

Customization of the FreeType library is done by editing the -ftoption.h header file in the top-level devel path. -Alternatively, you may copy the file to another directory and change the -include directory in freetype.users.props.

- -

To configure library dependencies like zlib and libpng, -edit the freetype.users.props file in this directory. It also -simplifies automated (command-line) builds using msbuild.

- -

To link your executable with FreeType DLL, you may want to define -DLL_IMPORT so that the imported functions are appropriately -attributed with dllimport.

- - - diff --git a/vendor/freetype/builds/windows/visualc/freetype.dsp b/vendor/freetype/builds/windows/visualc/freetype.dsp deleted file mode 100644 index 451fab28b7e..00000000000 --- a/vendor/freetype/builds/windows/visualc/freetype.dsp +++ /dev/null @@ -1,354 +0,0 @@ -# Microsoft Developer Studio Project File - Name="freetype" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 -# TARGTYPE "Win32 (x86) Static Library" 0x0104 - -CFG=freetype - Win32 Release -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "freetype.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "freetype.mak" CFG="freetype - Win32 Release" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "freetype - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE "freetype - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE "freetype - Win32 Release Static" (based on "Win32 (x86) Static Library") -!MESSAGE "freetype - Win32 Debug Static" (based on "Win32 (x86) Static Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" - -!IF "$(CFG)" == "freetype - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "..\..\..\objs\Win32\Release" -# PROP Intermediate_Dir "..\..\..\objs\Win32\Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -CPP=cl.exe -# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c -# SUBTRACT BASE CPP /YX /Yc /Yu -# ADD CPP /nologo /Za /MD /W3 /O2 /Oi /D "WIN32" /I "..\..\..\include" /D "_CRT_SECURE_NO_WARNINGS" /D "NDEBUG" /D "FT2_BUILD_LIBRARY" /D "DLL_EXPORT" /FD /c -# SUBTRACT CPP /YX /Yc /Yu -MTL=midl.exe -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -RSC=rc.exe -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" /d "DLL_EXPORT" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 -# ADD LINK32 /nologo /dll /machine:I386 /opt:REF,ICF /out:"$(OutDir)\freetype.dll" - -!ELSEIF "$(CFG)" == "freetype - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "..\..\..\objs\Win32\Debug" -# PROP Intermediate_Dir "..\..\..\objs\Win32\Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -CPP=cl.exe -# ADD BASE CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c -# SUBTRACT BASE CPP /YX /Yc /Yu -# ADD CPP /nologo /Za /MDd /W3 /Gm /ZI /Od /I "..\..\..\include" /D "WIN32" /D "_CRT_SECURE_NO_WARNINGS" /D "_DEBUG" /D "FT_DEBUG_LEVEL_ERROR" /D "FT_DEBUG_LEVEL_TRACE" /D "FT2_BUILD_LIBRARY" /D "DLL_EXPORT" /FR /FD /GZ /c -# SUBTRACT CPP /YX /Yc /Yu -MTL=midl.exe -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -RSC=rc.exe -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" /d "DLL_EXPORT" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept -# ADD LINK32 /nologo /dll /debug /machine:I386 /out:"$(OutDir)\freetype.dll" /pdbtype:sept - -!ELSEIF "$(CFG)" == "freetype - Win32 Release Static" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release Static" -# PROP BASE Intermediate_Dir "Release Static" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "..\..\..\objs\Win32\Release Static" -# PROP Intermediate_Dir "..\..\..\objs\Win32\Release Static" -# PROP Target_Dir "" -CPP=cl.exe -# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c -# SUBTRACT BASE CPP /YX /Yc /Yu -# ADD CPP /nologo /Za /MD /W3 /O2 /Oi /D "WIN32" /I "..\..\..\include" /D "_CRT_SECURE_NO_WARNINGS" /D "NDEBUG" /D "FT2_BUILD_LIBRARY" /FD /c -# SUBTRACT CPP /YX /Yc /Yu -RSC=rc.exe -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"$(OutDir)\freetype.lib" - -!ELSEIF "$(CFG)" == "freetype - Win32 Debug Static" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug Static" -# PROP BASE Intermediate_Dir "Debug Static" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "..\..\..\objs\Win32\Debug Static" -# PROP Intermediate_Dir "..\..\..\objs\Win32\Debug Static" -# PROP Target_Dir "" -CPP=cl.exe -# ADD BASE CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c -# SUBTRACT BASE CPP /YX /Yc /Yu -# ADD CPP /nologo /Za /MDd /W3 /Gm /ZI /Od /I "..\..\..\include" /D "WIN32" /D "_CRT_SECURE_NO_WARNINGS" /D "_DEBUG" /D "FT_DEBUG_LEVEL_ERROR" /D "FT_DEBUG_LEVEL_TRACE" /D "FT2_BUILD_LIBRARY" /FR /FD /GZ /c -# SUBTRACT CPP /YX /Yc /Yu -RSC=rc.exe -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"$(OutDir)\freetype.lib" - -!ENDIF - -# Begin Target - -# Name "freetype - Win32 Release" -# Name "freetype - Win32 Debug" -# Name "freetype - Win32 Release Static" -# Name "freetype - Win32 Debug Static" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=..\..\..\src\autofit\autofit.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\bdf\bdf.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\cff\cff.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\base\ftbase.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\base\ftbbox.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\base\ftbdf.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\base\ftbitmap.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\base\ftcid.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\base\ftpatent.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\base\ftfstype.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\base\ftgasp.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\cache\ftcache.c -# End Source File -# Begin Source File - -SOURCE=..\ftdebug.c -# ADD CPP /Ze -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\base\ftglyph.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\base\ftgxval.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\gzip\ftgzip.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\base\ftinit.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\lzw\ftlzw.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\base\ftmm.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\base\ftotval.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\base\ftpfr.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\base\ftstroke.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\base\ftsynth.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\base\ftsystem.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\base\fttype1.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\base\ftwinfnt.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\pcf\pcf.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\pfr\pfr.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\psaux\psaux.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\pshinter\pshinter.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\psnames\psmodule.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\raster\raster.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\sfnt\sfnt.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\smooth\smooth.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\truetype\truetype.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\type1\type1.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\cid\type1cid.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\type42\type42.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\winfonts\winfnt.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# Begin Source File - -SOURCE=..\..\..\include\ft2build.h -# End Source File -# Begin Source File - -SOURCE=..\..\..\include\freetype\config\ftconfig.h -# End Source File -# Begin Source File - -SOURCE=..\..\..\include\freetype\config\ftheader.h -# End Source File -# Begin Source File - -SOURCE=..\..\..\include\freetype\config\ftmodule.h -# End Source File -# Begin Source File - -SOURCE=..\..\..\include\freetype\config\ftoption.h -# End Source File -# Begin Source File - -SOURCE=..\..\..\include\freetype\config\ftstdlib.h -# End Source File -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx" -# Begin Source File - -SOURCE=..\..\..\src\base\ftver.rc -# End Source File -# End Group -# End Target -# End Project diff --git a/vendor/freetype/builds/windows/visualc/freetype.dsw b/vendor/freetype/builds/windows/visualc/freetype.dsw deleted file mode 100644 index b1b375dbbc9..00000000000 --- a/vendor/freetype/builds/windows/visualc/freetype.dsw +++ /dev/null @@ -1,29 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 6.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "freetype"=.\freetype.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### - diff --git a/vendor/freetype/builds/windows/visualc/freetype.sln b/vendor/freetype/builds/windows/visualc/freetype.sln deleted file mode 100644 index d96607216b9..00000000000 --- a/vendor/freetype/builds/windows/visualc/freetype.sln +++ /dev/null @@ -1,25 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 7.00 -# Visual C++ 2002-2008 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "freetype", "freetype.vcproj", "{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug Static|Win32 = Debug Static|Win32 - Debug|Win32 = Debug|Win32 - Release Static|Win32 = Release Static|Win32 - Release|Win32 = Release|Win32 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug Static|Win32.ActiveCfg = Debug Static|Win32 - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug Static|Win32.Build.0 = Debug Static|Win32 - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug|Win32.ActiveCfg = Debug|Win32 - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug|Win32.Build.0 = Debug|Win32 - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release Static|Win32.ActiveCfg = Release Static|Win32 - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release Static|Win32.Build.0 = Release Static|Win32 - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release|Win32.ActiveCfg = Release|Win32 - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release|Win32.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/vendor/freetype/builds/windows/visualc/freetype.vcproj b/vendor/freetype/builds/windows/visualc/freetype.vcproj deleted file mode 100644 index 85c5f1ca70d..00000000000 --- a/vendor/freetype/builds/windows/visualc/freetype.vcproj +++ /dev/null @@ -1,587 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/vendor/freetype/builds/windows/visualc/index.html b/vendor/freetype/builds/windows/visualc/index.html deleted file mode 100644 index e6580b2b318..00000000000 --- a/vendor/freetype/builds/windows/visualc/index.html +++ /dev/null @@ -1,38 +0,0 @@ - -
- - FreeType 2 Project Files for Visual C++ 6.0 and 2002-2008 - - - -

- FreeType 2 Project Files for Visual C++ 6.0 and 2002-2008 -

- -

This directory contains project files freetype.dsp for -Visual C++ 6.0, and freetype.vcproj for Visual C++ 2002 -through 2008, which you might need to upgrade automatically. -It compiles the following libraries from the FreeType 2.14.1 sources:

- -
    -
  • freetype.dll using 'Release' or 'Debug' configurations
  • -
  • freetype.lib using 'Release Static' or 'Debug Static' configurations
  • -
- -

Build directories and target files are placed in the top-level -objs directory.

- -

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 -using the unix2dos or u2d utilities that are floating -around, which specifically deal with this particular problem. - -

Build directories are placed in the top-level objs -directory.

- - - diff --git a/vendor/freetype/builds/windows/visualce/freetype.dsp b/vendor/freetype/builds/windows/visualce/freetype.dsp deleted file mode 100644 index 11d59f9c371..00000000000 --- a/vendor/freetype/builds/windows/visualce/freetype.dsp +++ /dev/null @@ -1,391 +0,0 @@ -# Microsoft Developer Studio Project File - Name="freetype" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Static Library" 0x0104 - -CFG=freetype - Win32 Debug Singlethreaded -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "freetype.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "freetype.mak" CFG="freetype - Win32 Debug Singlethreaded" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "freetype - Win32 Release" (based on "Win32 (x86) Static Library") -!MESSAGE "freetype - Win32 Debug" (based on "Win32 (x86) Static Library") -!MESSAGE "freetype - Win32 Debug Multithreaded" (based on "Win32 (x86) Static Library") -!MESSAGE "freetype - Win32 Release Multithreaded" (based on "Win32 (x86) Static Library") -!MESSAGE "freetype - Win32 Release Singlethreaded" (based on "Win32 (x86) Static Library") -!MESSAGE "freetype - Win32 Debug Singlethreaded" (based on "Win32 (x86) Static Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "freetype - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "..\..\..\objs\release" -# PROP Intermediate_Dir "..\..\..\objs\release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c -# ADD CPP /MD /Za /W4 /GX /O2 /I "..\..\..\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "FT2_BUILD_LIBRARY" /FD /c -# SUBTRACT CPP /nologo /Z /YX -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"..\..\..\objs\freetype.lib" - -!ELSEIF "$(CFG)" == "freetype - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "..\..\..\objs\debug" -# PROP Intermediate_Dir "..\..\..\objs\debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c -# ADD CPP /MDd /Za /W4 /GX /Z7 /Od /I "..\..\..\include" /D "_DEBUG" /D "FT_DEBUG_LEVEL_ERROR" /D "FT_DEBUG_LEVEL_TRACE" /D "WIN32" /D "_MBCS" /D "_LIB" /D "FT2_BUILD_LIBRARY" /FD /GZ /c -# SUBTRACT CPP /nologo /X /YX -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"..\..\..\objs\freetype_D.lib" - -!ELSEIF "$(CFG)" == "freetype - Win32 Debug Multithreaded" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "freetype___Win32_Debug_Multithreaded" -# PROP BASE Intermediate_Dir "freetype___Win32_Debug_Multithreaded" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "..\..\..\objs\debug_mt" -# PROP Intermediate_Dir "..\..\..\objs\debug_mt" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /Za /W3 /Gm /GX /ZI /Od /I "..\include\\" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "FT_FLAT_COMPILE" /YX /FD /GZ /c -# SUBTRACT BASE CPP /X -# ADD CPP /MTd /Za /W4 /GX /Z7 /Od /I "..\..\..\include" /D "_DEBUG" /D "FT_DEBUG_LEVEL_ERROR" /D "FT_DEBUG_LEVEL_TRACE" /D "WIN32" /D "_MBCS" /D "_LIB" /D "FT2_BUILD_LIBRARY" /FD /GZ /c -# SUBTRACT CPP /nologo /X /YX -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo /out:"lib\freetype_D.lib" -# ADD LIB32 /nologo /out:"..\..\..\objs\freetypeMT_D.lib" - -!ELSEIF "$(CFG)" == "freetype - Win32 Release Multithreaded" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "freetype___Win32_Release_Multithreaded" -# PROP BASE Intermediate_Dir "freetype___Win32_Release_Multithreaded" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "..\..\..\objs\release_mt" -# PROP Intermediate_Dir "..\..\..\objs\release_mt" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /Za /W3 /GX /O2 /I "..\include\\" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "FT_FLAT_COMPILE" /YX /FD /c -# ADD CPP /MT /Za /W4 /GX /O2 /I "..\..\..\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "FT2_BUILD_LIBRARY" /FD /c -# SUBTRACT CPP /nologo /Z /YX -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo /out:"lib\freetype.lib" -# ADD LIB32 /nologo /out:"..\..\..\objs\freetypeMT.lib" - -!ELSEIF "$(CFG)" == "freetype - Win32 Release Singlethreaded" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "freetype___Win32_Release_Singlethreaded" -# PROP BASE Intermediate_Dir "freetype___Win32_Release_Singlethreaded" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "..\..\..\objs\release_st" -# PROP Intermediate_Dir "..\..\..\objs\release_st" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MD /Za /W4 /GX /Zi /O2 /I "..\..\..\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /FD /c -# SUBTRACT BASE CPP /YX -# ADD CPP /Za /W4 /GX /O2 /I "..\..\..\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "FT2_BUILD_LIBRARY" /FD /c -# SUBTRACT CPP /nologo /Z /YX -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo /out:"..\..\..\objs\freetype.lib" -# ADD LIB32 /out:"..\..\..\objs\freetypeST.lib" -# SUBTRACT LIB32 /nologo - -!ELSEIF "$(CFG)" == "freetype - Win32 Debug Singlethreaded" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "freetype___Win32_Debug_Singlethreaded" -# PROP BASE Intermediate_Dir "freetype___Win32_Debug_Singlethreaded" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "..\..\..\objs\debug_st" -# PROP Intermediate_Dir "..\..\..\objs\debug_st" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MDd /Za /W4 /Gm /GX /Zi /Od /I "..\..\..\include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "FT_DEBUG_LEVEL_ERROR" /D "FT_DEBUG_LEVEL_TRACE" /FD /GZ /c -# SUBTRACT BASE CPP /X /YX -# ADD CPP /Za /W4 /GX /Z7 /Od /I "..\..\..\include" /D "_DEBUG" /D "FT_DEBUG_LEVEL_ERROR" /D "FT_DEBUG_LEVEL_TRACE" /D "WIN32" /D "_MBCS" /D "_LIB" /D "FT2_BUILD_LIBRARY" /FD /GZ /c -# SUBTRACT CPP /nologo /X /YX -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo /out:"..\..\..\objs\freetype_D.lib" -# ADD LIB32 /nologo /out:"..\..\..\objs\freetypeST_D.lib" - -!ENDIF - -# Begin Target - -# Name "freetype - Win32 Release" -# Name "freetype - Win32 Debug" -# Name "freetype - Win32 Debug Multithreaded" -# Name "freetype - Win32 Release Multithreaded" -# Name "freetype - Win32 Release Singlethreaded" -# Name "freetype - Win32 Debug Singlethreaded" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=..\..\..\src\autofit\autofit.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\bdf\bdf.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\cff\cff.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\base\ftbase.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\base\ftbbox.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\base\ftbdf.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\base\ftbitmap.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\base\ftcid.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\base\ftfstype.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\base\ftgasp.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\cache\ftcache.c -# End Source File -# Begin Source File - -SOURCE=..\ftdebug.c -# ADD CPP /Ze -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\base\ftglyph.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\base\ftgxval.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\gzip\ftgzip.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\base\ftinit.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\lzw\ftlzw.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\base\ftmm.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\base\ftotval.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\base\ftpatent.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\base\ftpfr.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\base\ftstroke.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\base\ftsynth.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\base\ftsystem.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\base\fttype1.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\base\ftwinfnt.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\pcf\pcf.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\pfr\pfr.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\psaux\psaux.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\pshinter\pshinter.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\psnames\psmodule.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\raster\raster.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\sfnt\sfnt.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\smooth\smooth.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\truetype\truetype.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\type1\type1.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\cid\type1cid.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\type42\type42.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\winfonts\winfnt.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# Begin Source File - -SOURCE=..\..\..\include\ft2build.h -# End Source File -# Begin Source File - -SOURCE=..\..\..\include\freetype\config\ftconfig.h -# End Source File -# Begin Source File - -SOURCE=..\..\..\include\freetype\config\ftheader.h -# End Source File -# Begin Source File - -SOURCE=..\..\..\include\freetype\config\ftmodule.h -# End Source File -# Begin Source File - -SOURCE=..\..\..\include\freetype\config\ftoption.h -# End Source File -# Begin Source File - -SOURCE=..\..\..\include\freetype\config\ftstdlib.h -# End Source File -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx" -# Begin Source File - -SOURCE=..\..\..\src\base\ftver.rc -# End Source File -# End Group -# End Target -# End Project diff --git a/vendor/freetype/builds/windows/visualce/freetype.dsw b/vendor/freetype/builds/windows/visualce/freetype.dsw deleted file mode 100644 index b1b375dbbc9..00000000000 --- a/vendor/freetype/builds/windows/visualce/freetype.dsw +++ /dev/null @@ -1,29 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 6.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "freetype"=.\freetype.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### - diff --git a/vendor/freetype/builds/windows/visualce/freetype.vcproj b/vendor/freetype/builds/windows/visualce/freetype.vcproj deleted file mode 100644 index f0f74c77ffa..00000000000 --- a/vendor/freetype/builds/windows/visualce/freetype.vcproj +++ /dev/null @@ -1,3706 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/vendor/freetype/builds/windows/visualce/index.html b/vendor/freetype/builds/windows/visualce/index.html deleted file mode 100644 index 2076420d883..00000000000 --- a/vendor/freetype/builds/windows/visualce/index.html +++ /dev/null @@ -1,47 +0,0 @@ - -
- - FreeType 2 Project Files for Visual C++ and VS.NET 2005 - (Pocket PC) - - - -

- FreeType 2 Project Files for Visual C++ and VS.NET 2005 - (Pocket PC) -

- -

This directory contains project files for Visual C++, named -freetype.dsp, and Visual Studio, called freetype.sln for -the following targets: - -

    -
  • PPC/SP 2003 (Pocket PC 2003)
  • -
  • PPC/SP WM5 (Windows Mobile 5)
  • -
  • PPC/SP WM6 (Windows Mobile 6)
  • -
- -It compiles the following libraries from the FreeType 2.14.1 sources:

- -
    -
    -    freetype.lib     - release build; single threaded
    -    freetype_D.lib   - debug build;   single threaded
    -    freetypeMT.lib   - release build; multi-threaded
    -    freetypeMT_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 -using the unix2dos or u2d utilities that are floating -around, which specifically deal with this particular problem. - -

Build directories are placed in the top-level objs -directory.

- - - diff --git a/vendor/freetype/builds/windows/w32-bcc.mk b/vendor/freetype/builds/windows/w32-bcc.mk deleted file mode 100644 index a435702a951..00000000000 --- a/vendor/freetype/builds/windows/w32-bcc.mk +++ /dev/null @@ -1,28 +0,0 @@ -# -# FreeType 2 Borland C++ on Win32 -# - - -# Copyright (C) 1996-2025 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - -# default definitions of the export list -# -EXPORTS_LIST = $(OBJ_DIR)/freetype.def -EXPORTS_OPTIONS = /DEF:$(EXPORTS_LIST) -APINAMES_OPTIONS := -dfreetype.dll -wB - -include $(TOP_DIR)/builds/windows/win32-def.mk -include $(TOP_DIR)/builds/compiler/bcc.mk - -# include linking instructions -include $(TOP_DIR)/builds/link_dos.mk - - -# EOF diff --git a/vendor/freetype/builds/windows/w32-bccd.mk b/vendor/freetype/builds/windows/w32-bccd.mk deleted file mode 100644 index 39472726da7..00000000000 --- a/vendor/freetype/builds/windows/w32-bccd.mk +++ /dev/null @@ -1,26 +0,0 @@ -# -# FreeType 2 Borland C++ on Win32 + debugging -# - - -# Copyright (C) 1996-2025 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -DEVEL_DIR := $(TOP_DIR)/devel - -include $(TOP_DIR)/builds/windows/win32-def.mk - -include $(TOP_DIR)/builds/compiler/bcc-dev.mk - -# include linking instructions -include $(TOP_DIR)/builds/link_dos.mk - - -# EOF diff --git a/vendor/freetype/builds/windows/w32-dev.mk b/vendor/freetype/builds/windows/w32-dev.mk deleted file mode 100644 index c4030f5e5f7..00000000000 --- a/vendor/freetype/builds/windows/w32-dev.mk +++ /dev/null @@ -1,32 +0,0 @@ -# -# FreeType 2 configuration rules for Win32 + GCC -# -# Development version without optimizations. -# - - -# Copyright (C) 1996-2025 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -# NOTE: This version requires that GNU Make is invoked from the Windows -# Shell (_not_ Cygwin BASH)! -# - -DEVEL_DIR := $(TOP_DIR)/devel - -include $(TOP_DIR)/builds/windows/win32-def.mk - -include $(TOP_DIR)/builds/compiler/gcc-dev.mk - -# include linking instructions -include $(TOP_DIR)/builds/link_dos.mk - - -# EOF diff --git a/vendor/freetype/builds/windows/w32-gcc.mk b/vendor/freetype/builds/windows/w32-gcc.mk deleted file mode 100644 index dd3e8296444..00000000000 --- a/vendor/freetype/builds/windows/w32-gcc.mk +++ /dev/null @@ -1,31 +0,0 @@ -# -# FreeType 2 configuration rules for Win32 + GCC -# - - -# Copyright (C) 1996-2025 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - -# default definitions of the export list -# -EXPORTS_LIST = $(OBJ_DIR)/freetype.def -EXPORTS_OPTIONS = $(EXPORTS_LIST) -APINAMES_OPTIONS := -dfreetype.dll -w - -# include Win32-specific definitions -include $(TOP_DIR)/builds/windows/win32-def.mk - -# include gcc-specific definitions -include $(TOP_DIR)/builds/compiler/gcc.mk - -# include linking instructions -include $(TOP_DIR)/builds/link_dos.mk - - -# EOF diff --git a/vendor/freetype/builds/windows/w32-icc.mk b/vendor/freetype/builds/windows/w32-icc.mk deleted file mode 100644 index 5db9f7d24dd..00000000000 --- a/vendor/freetype/builds/windows/w32-icc.mk +++ /dev/null @@ -1,28 +0,0 @@ -# -# FreeType 2 configuration rules for Win32 + IBM Visual Age C++ -# - - -# Copyright (C) 1996-2025 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - -# default definitions of the export list -# -EXPORTS_LIST = $(OBJ_DIR)/freetype.def -EXPORTS_OPTIONS = /DEF:$(EXPORTS_LIST) -APINAMES_OPTIONS := -dfreetype.dll -w - -include $(TOP_DIR)/builds/windows/win32-def.mk -include $(TOP_DIR)/builds/compiler/visualage.mk - -# include linking instructions -include $(TOP_DIR)/builds/link_dos.mk - - -# EOF diff --git a/vendor/freetype/builds/windows/w32-intl.mk b/vendor/freetype/builds/windows/w32-intl.mk deleted file mode 100644 index 6156f9231bb..00000000000 --- a/vendor/freetype/builds/windows/w32-intl.mk +++ /dev/null @@ -1,28 +0,0 @@ -# -# FreeType 2 configuration rules for Intel C/C++ on Win32 -# - - -# Copyright (C) 1996-2025 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - -# default definitions of the export list -# -EXPORTS_LIST = $(OBJ_DIR)/freetype.def -EXPORTS_OPTIONS = /DEF:$(EXPORTS_LIST) -APINAMES_OPTIONS := -dfreetype.dll -w - -include $(TOP_DIR)/builds/windows/win32-def.mk -include $(TOP_DIR)/builds/compiler/intelc.mk - -# include linking instructions -include $(TOP_DIR)/builds/link_dos.mk - - -# EOF diff --git a/vendor/freetype/builds/windows/w32-lcc.mk b/vendor/freetype/builds/windows/w32-lcc.mk deleted file mode 100644 index 43a6e4b10d6..00000000000 --- a/vendor/freetype/builds/windows/w32-lcc.mk +++ /dev/null @@ -1,24 +0,0 @@ -# -# FreeType 2 configuration rules for Win32 + LCC -# - - -# Copyright (C) 1996-2025 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -SEP := / -include $(TOP_DIR)/builds/windows/win32-def.mk -include $(TOP_DIR)/builds/compiler/win-lcc.mk - -# include linking instructions -include $(TOP_DIR)/builds/link_dos.mk - -# EOF - diff --git a/vendor/freetype/builds/windows/w32-mingw32.mk b/vendor/freetype/builds/windows/w32-mingw32.mk deleted file mode 100644 index c54a1723c10..00000000000 --- a/vendor/freetype/builds/windows/w32-mingw32.mk +++ /dev/null @@ -1,33 +0,0 @@ -# -# FreeType 2 configuration rules for mingw32 -# - - -# Copyright (C) 1996-2025 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - -# default definitions of the export list -# -EXPORTS_LIST = $(OBJ_DIR)/freetype.def -EXPORTS_OPTIONS = $(EXPORTS_LIST) -APINAMES_OPTIONS := -dfreetype.dll -w - -# include Win32-specific definitions -include $(TOP_DIR)/builds/windows/win32-def.mk - -LIBRARY := lib$(PROJECT) - -# include gcc-specific definitions -include $(TOP_DIR)/builds/compiler/gcc.mk - -# include linking instructions -include $(TOP_DIR)/builds/link_dos.mk - - -# EOF diff --git a/vendor/freetype/builds/windows/w32-vcc.mk b/vendor/freetype/builds/windows/w32-vcc.mk deleted file mode 100644 index a60afc76fac..00000000000 --- a/vendor/freetype/builds/windows/w32-vcc.mk +++ /dev/null @@ -1,28 +0,0 @@ -# -# FreeType 2 Visual C++ on Win32 -# - - -# Copyright (C) 1996-2025 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - -# definitions of the export list -# -EXPORTS_LIST = $(OBJ_DIR)/freetype.def -EXPORTS_OPTIONS = /DEF:$(EXPORTS_LIST) -APINAMES_OPTIONS := -dfreetype.dll -w - -include $(TOP_DIR)/builds/windows/win32-def.mk -include $(TOP_DIR)/builds/compiler/visualc.mk - -# include linking instructions -include $(TOP_DIR)/builds/link_dos.mk - - -# EOF diff --git a/vendor/freetype/builds/windows/w32-wat.mk b/vendor/freetype/builds/windows/w32-wat.mk deleted file mode 100644 index 28039a16583..00000000000 --- a/vendor/freetype/builds/windows/w32-wat.mk +++ /dev/null @@ -1,28 +0,0 @@ -# -# FreeType 2 configuration rules for Watcom C/C++ -# - - -# Copyright (C) 1996-2025 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - -# redefine export symbol definitions -# -EXPORTS_LIST = $(OBJ_DIR)/watcom-ftexports.lbc -EXPORTS_OPTIONS = -\"export @$(EXPORTS_LIST)\"- -APINAMES_OPTIONS := -wW - -include $(TOP_DIR)/builds/windows/win32-def.mk -include $(TOP_DIR)/builds/compiler/watcom.mk - -# include linking instructions -include $(TOP_DIR)/builds/link_dos.mk - - -# EOF diff --git a/vendor/freetype/builds/windows/win32-def.mk b/vendor/freetype/builds/windows/win32-def.mk deleted file mode 100644 index fc072e70948..00000000000 --- a/vendor/freetype/builds/windows/win32-def.mk +++ /dev/null @@ -1,51 +0,0 @@ -# -# FreeType 2 Win32 specific definitions -# - - -# Copyright (C) 1996-2025 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -DELETE := del -CAT := type -SEP := $(strip \ ) -PLATFORM_DIR := $(TOP_DIR)/builds/windows -PLATFORM := windows - -# This is used for `make refdoc' and `make refdoc-venv' -# -BIN := Scripts - -# The executable file extension (for tools). NOTE: WE INCLUDE THE DOT HERE !! -# -E := .exe -E_BUILD := .exe - - -# The directory where all library files are placed. -# -# By default, this is the same as $(OBJ_DIR); however, this can be changed -# to suit particular needs. -# -LIB_DIR := $(OBJ_DIR) - - -# The name of the final library file. Note that the DOS-specific Makefile -# uses a shorter (8.3) name. -# -LIBRARY := $(PROJECT) - - -# The NO_OUTPUT macro is used to ignore the output of commands. -# -NO_OUTPUT = 2> nul - - -# EOF diff --git a/vendor/freetype/include/freetype/config/ftconfig.h b/vendor/freetype/include/freetype/config/ftconfig.h index d66c5df9976..9800e99adf9 100644 --- a/vendor/freetype/include/freetype/config/ftconfig.h +++ b/vendor/freetype/include/freetype/config/ftconfig.h @@ -4,7 +4,7 @@ * * ANSI-specific configuration file (specification only). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/include/freetype/config/ftheader.h b/vendor/freetype/include/freetype/config/ftheader.h index 16eab9048fc..24a9161e2f1 100644 --- a/vendor/freetype/include/freetype/config/ftheader.h +++ b/vendor/freetype/include/freetype/config/ftheader.h @@ -4,7 +4,7 @@ * * Build macros of the FreeType 2 library. * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/include/freetype/config/ftmodule.h b/vendor/freetype/include/freetype/config/ftmodule.h index b315baba8ae..028e52cc33c 100644 --- a/vendor/freetype/include/freetype/config/ftmodule.h +++ b/vendor/freetype/include/freetype/config/ftmodule.h @@ -15,6 +15,7 @@ FT_USE_MODULE( FT_Driver_ClassRec, tt_driver_class ) FT_USE_MODULE( FT_Driver_ClassRec, t1_driver_class ) FT_USE_MODULE( FT_Driver_ClassRec, cff_driver_class ) FT_USE_MODULE( FT_Driver_ClassRec, t1cid_driver_class ) +FT_USE_MODULE( FT_Driver_ClassRec, hvf_driver_class ) FT_USE_MODULE( FT_Driver_ClassRec, pfr_driver_class ) FT_USE_MODULE( FT_Driver_ClassRec, t42_driver_class ) FT_USE_MODULE( FT_Driver_ClassRec, winfnt_driver_class ) diff --git a/vendor/freetype/include/freetype/config/ftoption.h b/vendor/freetype/include/freetype/config/ftoption.h index 49341868933..aa604b9a540 100644 --- a/vendor/freetype/include/freetype/config/ftoption.h +++ b/vendor/freetype/include/freetype/config/ftoption.h @@ -4,7 +4,7 @@ * * User-selectable configuration macros (specification only). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -334,6 +334,22 @@ FT_BEGIN_HEADER /* #define FT_CONFIG_OPTION_USE_BROTLI */ + /************************************************************************** + * + * HVF support. + * + * FreeType can use Apple's HVF (Hierarchical Variable Font) library + * to render glyphs from fonts containing 'hvgl' tables. + * + * Define this macro if you want to enable this 'feature'. + * + * If you use a build system like cmake or the `configure` script, + * options set by those programs have precedence, overwriting the value + * here with the configured one. + */ +/* #define FT_CONFIG_OPTION_HVF */ + + /************************************************************************** * * Glyph Postscript Names handling @@ -423,8 +439,10 @@ FT_BEGIN_HEADER /************************************************************************** * - * The size in bytes of the render pool used by the scan-line converter to - * do all of its work. + * The size in bytes of the stack render pool used by the scan-line + * converters. Use this option to limit the stack usage. The memory + * requirements are proportional to size and complexity of a given glyph. + * FreeType's rasterizers switch to dynamic allocations when necessary. */ #define FT_RENDER_POOL_SIZE 16384L @@ -759,7 +777,13 @@ FT_BEGIN_HEADER /************************************************************************** * * Define `TT_CONFIG_OPTION_BDF` if you want to include support for an - * embedded 'BDF~' table within SFNT-based bitmap formats. + * embedded 'BDF~' table within an SFNT-based `.otb` font file. This table + * is an extension used by X11 to preserve BDF properties after conversion + * to SFNT containers. See + * + * https://fontforge.org/docs/techref/non-standard.html#non-standard-bdf + * + * for more details. */ #define TT_CONFIG_OPTION_BDF diff --git a/vendor/freetype/include/freetype/config/ftstdlib.h b/vendor/freetype/include/freetype/config/ftstdlib.h index f846b4456c1..1c63e8d654c 100644 --- a/vendor/freetype/include/freetype/config/ftstdlib.h +++ b/vendor/freetype/include/freetype/config/ftstdlib.h @@ -5,7 +5,7 @@ * ANSI-specific library and header configuration file (specification * only). * - * Copyright (C) 2002-2025 by + * Copyright (C) 2002-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/include/freetype/config/integer-types.h b/vendor/freetype/include/freetype/config/integer-types.h index a0b892ece4b..4ab4c0c78bd 100644 --- a/vendor/freetype/include/freetype/config/integer-types.h +++ b/vendor/freetype/include/freetype/config/integer-types.h @@ -4,7 +4,7 @@ * * FreeType integer types definitions. * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/include/freetype/config/mac-support.h b/vendor/freetype/include/freetype/config/mac-support.h index d1b6a9898fd..ac48995320f 100644 --- a/vendor/freetype/include/freetype/config/mac-support.h +++ b/vendor/freetype/include/freetype/config/mac-support.h @@ -4,7 +4,7 @@ * * Mac/OS X support configuration header. * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -24,6 +24,7 @@ * This is the only necessary change, so it is defined here instead * providing a new configuration file. */ +#ifdef FT_MACINTOSH #if defined( __APPLE__ ) || ( defined( __MWERKS__ ) && defined( macintosh ) ) /* No Carbon frameworks for 64bit 10.4.x. */ /* `AvailabilityMacros.h` is available since Mac OS X 10.2, */ @@ -36,6 +37,7 @@ ( MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 ) #undef FT_MACINTOSH #endif +#endif /* __APPLE__ ... */ #elif defined( __SC__ ) || defined( __MRC__ ) /* Classic MacOS compilers */ diff --git a/vendor/freetype/include/freetype/config/public-macros.h b/vendor/freetype/include/freetype/config/public-macros.h index 9f28b394737..c76509a99f7 100644 --- a/vendor/freetype/include/freetype/config/public-macros.h +++ b/vendor/freetype/include/freetype/config/public-macros.h @@ -4,7 +4,7 @@ * * Define a set of compiler macros used in public FreeType headers. * - * Copyright (C) 2020-2025 by + * Copyright (C) 2020-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/include/freetype/freetype.h b/vendor/freetype/include/freetype/freetype.h index 1e249235882..68a9e0c6bd2 100644 --- a/vendor/freetype/include/freetype/freetype.h +++ b/vendor/freetype/include/freetype/freetype.h @@ -4,7 +4,7 @@ * * FreeType high-level API and common types (specification only). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -4318,14 +4318,13 @@ FT_BEGIN_HEADER * property `no-stem-darkening` provided by the 'autofit', 'cff', * 'type1', and 't1cid' modules; see @no-stem-darkening). * - * * @FT_PARAM_TAG_LCD_FILTER_WEIGHTS (LCD filter weights, corresponding - * to function @FT_Library_SetLcdFilterWeights). - * * * @FT_PARAM_TAG_RANDOM_SEED (seed value for the CFF, Type~1, and CID * 'random' operator, corresponding to the `random-seed` property * provided by the 'cff', 'type1', and 't1cid' modules; see * @random-seed). * + * * @FT_PARAM_TAG_LCD_FILTER_WEIGHTS (no longer supported). + * * Pass `NULL` as `data` in @FT_Parameter for a given tag to reset the * option and use the library or module default again. * @@ -4352,25 +4351,17 @@ FT_BEGIN_HEADER * FT_Bool darken_stems = 1; * * FT_Parameter property2; - * FT_LcdFiveTapFilter custom_weight = - * { 0x11, 0x44, 0x56, 0x44, 0x11 }; - * - * FT_Parameter property3; * FT_Int32 random_seed = 314159265; * - * FT_Parameter properties[3] = { property1, - * property2, - * property3 }; + * FT_Parameter properties[2] = { property1, + * property2 }; * * * property1.tag = FT_PARAM_TAG_STEM_DARKENING; * property1.data = &darken_stems; * - * property2.tag = FT_PARAM_TAG_LCD_FILTER_WEIGHTS; - * property2.data = custom_weight; - * - * property3.tag = FT_PARAM_TAG_RANDOM_SEED; - * property3.data = &random_seed; + * property2.tag = FT_PARAM_TAG_RANDOM_SEED; + * property2.data = &random_seed; * * FT_Face_Properties( face, 3, properties ); * ``` @@ -4381,7 +4372,7 @@ FT_BEGIN_HEADER * FT_Parameter property; * * - * property.tag = FT_PARAM_TAG_LCD_FILTER_WEIGHTS; + * property.tag = FT_PARAM_TAG_STEM_DARKENING; * property.data = NULL; * * FT_Face_Properties( face, 1, &property ); @@ -5178,7 +5169,7 @@ FT_BEGIN_HEADER */ #define FREETYPE_MAJOR 2 #define FREETYPE_MINOR 14 -#define FREETYPE_PATCH 1 +#define FREETYPE_PATCH 3 /************************************************************************** diff --git a/vendor/freetype/include/freetype/ftadvanc.h b/vendor/freetype/include/freetype/ftadvanc.h index 62a856ccbd7..876a8a55cb9 100644 --- a/vendor/freetype/include/freetype/ftadvanc.h +++ b/vendor/freetype/include/freetype/ftadvanc.h @@ -4,7 +4,7 @@ * * Quick computation of advance widths (specification only). * - * Copyright (C) 2008-2025 by + * Copyright (C) 2008-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/include/freetype/ftbbox.h b/vendor/freetype/include/freetype/ftbbox.h index 348b4b3a268..0107d94986b 100644 --- a/vendor/freetype/include/freetype/ftbbox.h +++ b/vendor/freetype/include/freetype/ftbbox.h @@ -4,7 +4,7 @@ * * FreeType exact bbox computation (specification). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/include/freetype/ftbdf.h b/vendor/freetype/include/freetype/ftbdf.h index faad25689c9..fb1f3186486 100644 --- a/vendor/freetype/include/freetype/ftbdf.h +++ b/vendor/freetype/include/freetype/ftbdf.h @@ -4,7 +4,7 @@ * * FreeType API for accessing BDF-specific strings (specification). * - * Copyright (C) 2002-2025 by + * Copyright (C) 2002-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -44,7 +44,8 @@ FT_BEGIN_HEADER * * @description: * This section contains the declaration of functions specific to BDF and - * PCF fonts. + * PCF fonts. They also work for SFNT bitmap fonts that contain a 'BDF~' + * table like X11's `.otb` fonts. * */ @@ -151,7 +152,9 @@ FT_BEGIN_HEADER * FreeType error code. 0~means success. * * @note: - * This function only works with BDF faces, returning an error otherwise. + * This function only works with BDF faces and SFNT fonts that have a + * 'BDF~' table, returning an error otherwise. For the latter, a bitmap + * strike size must be selected first. */ FT_EXPORT( FT_Error ) FT_Get_BDF_Charset_ID( FT_Face face, @@ -165,7 +168,7 @@ FT_BEGIN_HEADER * FT_Get_BDF_Property * * @description: - * Retrieve a BDF property from a BDF or PCF font file. + * Retrieve a BDF property from a BDF or PCF font. * * @input: * face :: @@ -196,6 +199,9 @@ FT_BEGIN_HEADER * * In case of error, `aproperty->type` is always set to * @BDF_PROPERTY_TYPE_NONE. + * + * This also works with SFNT fonts that have a 'BDF~' table, after a + * bitmap strike size has been selected. */ FT_EXPORT( FT_Error ) FT_Get_BDF_Property( FT_Face face, diff --git a/vendor/freetype/include/freetype/ftbitmap.h b/vendor/freetype/include/freetype/ftbitmap.h index a22d43adf14..1df5f29aca1 100644 --- a/vendor/freetype/include/freetype/ftbitmap.h +++ b/vendor/freetype/include/freetype/ftbitmap.h @@ -4,7 +4,7 @@ * * FreeType utility functions for bitmaps (specification). * - * Copyright (C) 2004-2025 by + * Copyright (C) 2004-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/include/freetype/ftbzip2.h b/vendor/freetype/include/freetype/ftbzip2.h index 38b5245826c..732931d2271 100644 --- a/vendor/freetype/include/freetype/ftbzip2.h +++ b/vendor/freetype/include/freetype/ftbzip2.h @@ -4,7 +4,7 @@ * * Bzip2-compressed stream support. * - * Copyright (C) 2010-2025 by + * Copyright (C) 2010-2026 by * Joel Klinghed. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/include/freetype/ftcache.h b/vendor/freetype/include/freetype/ftcache.h index 865b743a60b..97223e36ec6 100644 --- a/vendor/freetype/include/freetype/ftcache.h +++ b/vendor/freetype/include/freetype/ftcache.h @@ -4,7 +4,7 @@ * * FreeType Cache subsystem (specification). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/include/freetype/ftcid.h b/vendor/freetype/include/freetype/ftcid.h index 7cda8ff3f39..f9744716d98 100644 --- a/vendor/freetype/include/freetype/ftcid.h +++ b/vendor/freetype/include/freetype/ftcid.h @@ -4,7 +4,7 @@ * * FreeType API for accessing CID font information (specification). * - * Copyright (C) 2007-2025 by + * Copyright (C) 2007-2026 by * Dereg Clegg and Michael Toftdal. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/include/freetype/ftcolor.h b/vendor/freetype/include/freetype/ftcolor.h index 129b1a23fb0..1cce7471157 100644 --- a/vendor/freetype/include/freetype/ftcolor.h +++ b/vendor/freetype/include/freetype/ftcolor.h @@ -4,7 +4,7 @@ * * FreeType's glyph color management (specification). * - * Copyright (C) 2018-2025 by + * Copyright (C) 2018-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/include/freetype/ftdriver.h b/vendor/freetype/include/freetype/ftdriver.h index b65a06ab69b..39635f86c3e 100644 --- a/vendor/freetype/include/freetype/ftdriver.h +++ b/vendor/freetype/include/freetype/ftdriver.h @@ -4,7 +4,7 @@ * * FreeType API for controlling driver modules (specification only). * - * Copyright (C) 2017-2025 by + * Copyright (C) 2017-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/include/freetype/fterrdef.h b/vendor/freetype/include/freetype/fterrdef.h index 3e591bede8d..ce3817e55df 100644 --- a/vendor/freetype/include/freetype/fterrdef.h +++ b/vendor/freetype/include/freetype/fterrdef.h @@ -4,7 +4,7 @@ * * FreeType error codes (specification). * - * Copyright (C) 2002-2025 by + * Copyright (C) 2002-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/include/freetype/fterrors.h b/vendor/freetype/include/freetype/fterrors.h index eca494f90c0..218c4610e21 100644 --- a/vendor/freetype/include/freetype/fterrors.h +++ b/vendor/freetype/include/freetype/fterrors.h @@ -4,7 +4,7 @@ * * FreeType error code handling (specification). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/include/freetype/ftfntfmt.h b/vendor/freetype/include/freetype/ftfntfmt.h index 5df82447d0e..2ea0c5f4d70 100644 --- a/vendor/freetype/include/freetype/ftfntfmt.h +++ b/vendor/freetype/include/freetype/ftfntfmt.h @@ -4,7 +4,7 @@ * * Support functions for font formats. * - * Copyright (C) 2002-2025 by + * Copyright (C) 2002-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/include/freetype/ftgasp.h b/vendor/freetype/include/freetype/ftgasp.h index 77e5a7e7bfd..632b536b471 100644 --- a/vendor/freetype/include/freetype/ftgasp.h +++ b/vendor/freetype/include/freetype/ftgasp.h @@ -4,7 +4,7 @@ * * Access of TrueType's 'gasp' table (specification). * - * Copyright (C) 2007-2025 by + * Copyright (C) 2007-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/include/freetype/ftglyph.h b/vendor/freetype/include/freetype/ftglyph.h index 3691781cf52..e967110e81e 100644 --- a/vendor/freetype/include/freetype/ftglyph.h +++ b/vendor/freetype/include/freetype/ftglyph.h @@ -4,7 +4,7 @@ * * FreeType convenience functions to handle glyphs (specification). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/include/freetype/ftgxval.h b/vendor/freetype/include/freetype/ftgxval.h index 843e0bc917c..546a4818b6c 100644 --- a/vendor/freetype/include/freetype/ftgxval.h +++ b/vendor/freetype/include/freetype/ftgxval.h @@ -4,7 +4,7 @@ * * FreeType API for validating TrueTypeGX/AAT tables (specification). * - * Copyright (C) 2004-2025 by + * Copyright (C) 2004-2026 by * Masatake YAMATO, Redhat K.K, * David Turner, Robert Wilhelm, and Werner Lemberg. * diff --git a/vendor/freetype/include/freetype/ftgzip.h b/vendor/freetype/include/freetype/ftgzip.h index e26c334c11a..f0c1550f61d 100644 --- a/vendor/freetype/include/freetype/ftgzip.h +++ b/vendor/freetype/include/freetype/ftgzip.h @@ -4,7 +4,7 @@ * * Gzip-compressed stream support. * - * Copyright (C) 2002-2025 by + * Copyright (C) 2002-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/include/freetype/ftimage.h b/vendor/freetype/include/freetype/ftimage.h index b0a0172ef4f..7c419121ca0 100644 --- a/vendor/freetype/include/freetype/ftimage.h +++ b/vendor/freetype/include/freetype/ftimage.h @@ -5,7 +5,7 @@ * FreeType glyph image formats and default raster interface * (specification). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/include/freetype/ftincrem.h b/vendor/freetype/include/freetype/ftincrem.h index 2233044754e..32637fe5af0 100644 --- a/vendor/freetype/include/freetype/ftincrem.h +++ b/vendor/freetype/include/freetype/ftincrem.h @@ -4,7 +4,7 @@ * * FreeType incremental loading (specification). * - * Copyright (C) 2002-2025 by + * Copyright (C) 2002-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/include/freetype/ftlcdfil.h b/vendor/freetype/include/freetype/ftlcdfil.h index a0a8e9da929..72dbe2acccb 100644 --- a/vendor/freetype/include/freetype/ftlcdfil.h +++ b/vendor/freetype/include/freetype/ftlcdfil.h @@ -5,7 +5,7 @@ * FreeType API for color filtering of subpixel bitmap glyphs * (specification). * - * Copyright (C) 2006-2025 by + * Copyright (C) 2006-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -145,16 +145,10 @@ FT_BEGIN_HEADER * * FT_LCD_FILTER_LEGACY :: * FT_LCD_FILTER_LEGACY1 :: - * This filter corresponds to the original libXft color filter. It - * provides high contrast output but can exhibit really bad color - * fringes if glyphs are not extremely well hinted to the pixel grid. - * This filter is only provided for comparison purposes, and might be - * disabled or stay unsupported in the future. The second value is - * provided for compatibility with FontConfig, which historically used - * different enumeration, sometimes incorrectly forwarded to FreeType. + * The legacy libXft color filter is no longer supported and ignored. * * @since: - * 2.3.0 (`FT_LCD_FILTER_LEGACY1` since 2.6.2) + * 2.3.0 */ typedef enum FT_LcdFilter_ { diff --git a/vendor/freetype/include/freetype/ftlist.h b/vendor/freetype/include/freetype/ftlist.h index 14958b0ff37..74b3ffaee9f 100644 --- a/vendor/freetype/include/freetype/ftlist.h +++ b/vendor/freetype/include/freetype/ftlist.h @@ -4,7 +4,7 @@ * * Generic list support for FreeType (specification). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/include/freetype/ftlogging.h b/vendor/freetype/include/freetype/ftlogging.h index d155171136c..1670b12caf5 100644 --- a/vendor/freetype/include/freetype/ftlogging.h +++ b/vendor/freetype/include/freetype/ftlogging.h @@ -4,7 +4,7 @@ * * Additional debugging APIs. * - * Copyright (C) 2020-2025 by + * Copyright (C) 2020-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/include/freetype/ftlzw.h b/vendor/freetype/include/freetype/ftlzw.h index de14bcc6741..ab2a9b7d5a8 100644 --- a/vendor/freetype/include/freetype/ftlzw.h +++ b/vendor/freetype/include/freetype/ftlzw.h @@ -4,7 +4,7 @@ * * LZW-compressed stream support. * - * Copyright (C) 2004-2025 by + * Copyright (C) 2004-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/include/freetype/ftmac.h b/vendor/freetype/include/freetype/ftmac.h index c5ac49101a4..a3ed7fba6f7 100644 --- a/vendor/freetype/include/freetype/ftmac.h +++ b/vendor/freetype/include/freetype/ftmac.h @@ -4,7 +4,7 @@ * * Additional Mac-specific API. * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 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/vendor/freetype/include/freetype/ftmm.h b/vendor/freetype/include/freetype/ftmm.h index ff0bbab59f9..fb239bda122 100644 --- a/vendor/freetype/include/freetype/ftmm.h +++ b/vendor/freetype/include/freetype/ftmm.h @@ -4,7 +4,7 @@ * * FreeType variation font interface (specification). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/include/freetype/ftmodapi.h b/vendor/freetype/include/freetype/ftmodapi.h index 2669e4a03b3..7af33e33afe 100644 --- a/vendor/freetype/include/freetype/ftmodapi.h +++ b/vendor/freetype/include/freetype/ftmodapi.h @@ -4,7 +4,7 @@ * * FreeType modules public interface (specification). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/include/freetype/ftmoderr.h b/vendor/freetype/include/freetype/ftmoderr.h index 8e2ef2f01f8..9010c9fc489 100644 --- a/vendor/freetype/include/freetype/ftmoderr.h +++ b/vendor/freetype/include/freetype/ftmoderr.h @@ -4,7 +4,7 @@ * * FreeType module error offsets (specification). * - * Copyright (C) 2001-2025 by + * Copyright (C) 2001-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -172,6 +172,7 @@ FT_MODERRDEF( Winfonts, 0x1500, "Windows FON/FNT module" ) FT_MODERRDEF( GXvalid, 0x1600, "GX validation module" ) FT_MODERRDEF( Sdf, 0x1700, "Signed distance field raster module" ) + FT_MODERRDEF( HVF, 0x1800, "HVF module" ) #ifdef FT_MODERR_END_LIST diff --git a/vendor/freetype/include/freetype/ftotval.h b/vendor/freetype/include/freetype/ftotval.h index f1cd22acc0d..66ac5871dcc 100644 --- a/vendor/freetype/include/freetype/ftotval.h +++ b/vendor/freetype/include/freetype/ftotval.h @@ -4,7 +4,7 @@ * * FreeType API for validating OpenType tables (specification). * - * Copyright (C) 2004-2025 by + * Copyright (C) 2004-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/include/freetype/ftoutln.h b/vendor/freetype/include/freetype/ftoutln.h index 2545ca8486b..68cf65bae15 100644 --- a/vendor/freetype/include/freetype/ftoutln.h +++ b/vendor/freetype/include/freetype/ftoutln.h @@ -5,7 +5,7 @@ * Support for the FT_Outline type used to store glyph shapes of * most scalable font formats (specification). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/include/freetype/ftparams.h b/vendor/freetype/include/freetype/ftparams.h index 2c09db1683e..3f6af8681f3 100644 --- a/vendor/freetype/include/freetype/ftparams.h +++ b/vendor/freetype/include/freetype/ftparams.h @@ -4,7 +4,7 @@ * * FreeType API for possible FT_Parameter tags (specification only). * - * Copyright (C) 2017-2025 by + * Copyright (C) 2017-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -133,11 +133,8 @@ FT_BEGIN_HEADER * FT_PARAM_TAG_LCD_FILTER_WEIGHTS * * @description: - * An @FT_Parameter tag to be used with @FT_Face_Properties. The - * corresponding argument specifies the five LCD filter weights for a - * given face (if using @FT_LOAD_TARGET_LCD, for example), overriding the - * global default values or the values set up with - * @FT_Library_SetLcdFilterWeights. + * Overriding global LCD filter weights with custom values for a given + * face is no longer supported and ignored. * * @since: * 2.8 diff --git a/vendor/freetype/include/freetype/ftpfr.h b/vendor/freetype/include/freetype/ftpfr.h index 399b5ca3c26..abcd3880087 100644 --- a/vendor/freetype/include/freetype/ftpfr.h +++ b/vendor/freetype/include/freetype/ftpfr.h @@ -4,7 +4,7 @@ * * FreeType API for accessing PFR-specific data (specification only). * - * Copyright (C) 2002-2025 by + * Copyright (C) 2002-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/include/freetype/ftrender.h b/vendor/freetype/include/freetype/ftrender.h index cc3102073b1..292c797cce5 100644 --- a/vendor/freetype/include/freetype/ftrender.h +++ b/vendor/freetype/include/freetype/ftrender.h @@ -4,7 +4,7 @@ * * FreeType renderer modules public interface (specification). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/include/freetype/ftsizes.h b/vendor/freetype/include/freetype/ftsizes.h index fdb89f24ccc..f609eb2d76a 100644 --- a/vendor/freetype/include/freetype/ftsizes.h +++ b/vendor/freetype/include/freetype/ftsizes.h @@ -4,7 +4,7 @@ * * FreeType size objects management (specification). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/include/freetype/ftsnames.h b/vendor/freetype/include/freetype/ftsnames.h index 99728574db6..f5511495f04 100644 --- a/vendor/freetype/include/freetype/ftsnames.h +++ b/vendor/freetype/include/freetype/ftsnames.h @@ -7,7 +7,7 @@ * * This is _not_ used to retrieve glyph names! * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/include/freetype/ftstroke.h b/vendor/freetype/include/freetype/ftstroke.h index 2c4761c768d..c7f1d4643f0 100644 --- a/vendor/freetype/include/freetype/ftstroke.h +++ b/vendor/freetype/include/freetype/ftstroke.h @@ -4,7 +4,7 @@ * * FreeType path stroker (specification). * - * Copyright (C) 2002-2025 by + * Copyright (C) 2002-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/include/freetype/ftsynth.h b/vendor/freetype/include/freetype/ftsynth.h index 93499a4b4f1..90b4b19c25f 100644 --- a/vendor/freetype/include/freetype/ftsynth.h +++ b/vendor/freetype/include/freetype/ftsynth.h @@ -5,7 +5,7 @@ * FreeType synthesizing code for emboldening and slanting * (specification). * - * Copyright (C) 2000-2025 by + * Copyright (C) 2000-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/include/freetype/ftsystem.h b/vendor/freetype/include/freetype/ftsystem.h index 1de9f8e603d..2ad3d7286dc 100644 --- a/vendor/freetype/include/freetype/ftsystem.h +++ b/vendor/freetype/include/freetype/ftsystem.h @@ -4,7 +4,7 @@ * * FreeType low-level system interface definition (specification). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/include/freetype/fttrigon.h b/vendor/freetype/include/freetype/fttrigon.h index ed7bd06a78f..ebedc3a8d1e 100644 --- a/vendor/freetype/include/freetype/fttrigon.h +++ b/vendor/freetype/include/freetype/fttrigon.h @@ -4,7 +4,7 @@ * * FreeType trigonometric functions (specification). * - * Copyright (C) 2001-2025 by + * Copyright (C) 2001-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/include/freetype/fttypes.h b/vendor/freetype/include/freetype/fttypes.h index e207c5ebe09..2f3ca05955a 100644 --- a/vendor/freetype/include/freetype/fttypes.h +++ b/vendor/freetype/include/freetype/fttypes.h @@ -4,7 +4,7 @@ * * FreeType simple types definitions (specification only). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -25,8 +25,6 @@ #include #include -#include - FT_BEGIN_HEADER diff --git a/vendor/freetype/include/freetype/ftwinfnt.h b/vendor/freetype/include/freetype/ftwinfnt.h index 78609d578a6..b95cad0a422 100644 --- a/vendor/freetype/include/freetype/ftwinfnt.h +++ b/vendor/freetype/include/freetype/ftwinfnt.h @@ -4,7 +4,7 @@ * * FreeType API for accessing Windows fnt-specific data. * - * Copyright (C) 2003-2025 by + * Copyright (C) 2003-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/include/freetype/internal/autohint.h b/vendor/freetype/include/freetype/internal/autohint.h index 987e704e9b0..a22d8af7cd9 100644 --- a/vendor/freetype/include/freetype/internal/autohint.h +++ b/vendor/freetype/include/freetype/internal/autohint.h @@ -4,7 +4,7 @@ * * High-level 'autohint' module-specific interface (specification). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/include/freetype/internal/cffotypes.h b/vendor/freetype/include/freetype/internal/cffotypes.h index 26ee43bb9a9..8d6acbce7ac 100644 --- a/vendor/freetype/include/freetype/internal/cffotypes.h +++ b/vendor/freetype/include/freetype/internal/cffotypes.h @@ -4,7 +4,7 @@ * * Basic OpenType/CFF object type definitions (specification). * - * Copyright (C) 2017-2025 by + * Copyright (C) 2017-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/include/freetype/internal/cfftypes.h b/vendor/freetype/include/freetype/internal/cfftypes.h index 62335db4834..d474dcf40ea 100644 --- a/vendor/freetype/include/freetype/internal/cfftypes.h +++ b/vendor/freetype/include/freetype/internal/cfftypes.h @@ -5,7 +5,7 @@ * Basic OpenType/CFF type definitions and interface (specification * only). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -191,8 +191,8 @@ FT_BEGIN_HEADER FT_UInt weight; FT_Bool is_fixed_pitch; FT_Fixed italic_angle; - FT_Fixed underline_position; - FT_Fixed underline_thickness; + FT_Short underline_position; + FT_UShort underline_thickness; FT_Int paint_type; FT_Int charstring_type; FT_Matrix font_matrix; diff --git a/vendor/freetype/include/freetype/internal/compiler-macros.h b/vendor/freetype/include/freetype/internal/compiler-macros.h index e6d0166d888..4863d6de75e 100644 --- a/vendor/freetype/include/freetype/internal/compiler-macros.h +++ b/vendor/freetype/include/freetype/internal/compiler-macros.h @@ -4,7 +4,7 @@ * * Compiler-specific macro definitions used internally by FreeType. * - * Copyright (C) 2020-2025 by + * Copyright (C) 2020-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/include/freetype/internal/ftcalc.h b/vendor/freetype/include/freetype/internal/ftcalc.h index 16a732224ef..4c4943164a3 100644 --- a/vendor/freetype/include/freetype/internal/ftcalc.h +++ b/vendor/freetype/include/freetype/internal/ftcalc.h @@ -4,7 +4,7 @@ * * Arithmetic computations (specification). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/include/freetype/internal/ftdebug.h b/vendor/freetype/include/freetype/internal/ftdebug.h index d7facf40d12..62b9ec2f79c 100644 --- a/vendor/freetype/include/freetype/internal/ftdebug.h +++ b/vendor/freetype/include/freetype/internal/ftdebug.h @@ -4,7 +4,7 @@ * * Debugging and logging component (specification). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/include/freetype/internal/ftdrv.h b/vendor/freetype/include/freetype/internal/ftdrv.h index 24be4dad36b..d52fc84f0fd 100644 --- a/vendor/freetype/include/freetype/internal/ftdrv.h +++ b/vendor/freetype/include/freetype/internal/ftdrv.h @@ -4,7 +4,7 @@ * * FreeType internal font driver interface (specification). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/include/freetype/internal/ftgloadr.h b/vendor/freetype/include/freetype/internal/ftgloadr.h index 8f2a54c015b..902135e460c 100644 --- a/vendor/freetype/include/freetype/internal/ftgloadr.h +++ b/vendor/freetype/include/freetype/internal/ftgloadr.h @@ -4,7 +4,7 @@ * * The FreeType glyph loader (specification). * - * Copyright (C) 2002-2025 by + * Copyright (C) 2002-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/include/freetype/internal/ftmemory.h b/vendor/freetype/include/freetype/internal/ftmemory.h index c75c33f2895..ca840cb510b 100644 --- a/vendor/freetype/include/freetype/internal/ftmemory.h +++ b/vendor/freetype/include/freetype/internal/ftmemory.h @@ -4,7 +4,7 @@ * * The FreeType memory management macros (specification). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/include/freetype/internal/ftmmtypes.h b/vendor/freetype/include/freetype/internal/ftmmtypes.h index be3747bbf94..a4db9c487b7 100644 --- a/vendor/freetype/include/freetype/internal/ftmmtypes.h +++ b/vendor/freetype/include/freetype/internal/ftmmtypes.h @@ -5,7 +5,7 @@ * OpenType Variations type definitions for internal use * with the multi-masters service (specification). * - * Copyright (C) 2022-2025 by + * Copyright (C) 2022-2026 by * David Turner, Robert Wilhelm, Werner Lemberg, George Williams, and * Dominik Röttsches. * diff --git a/vendor/freetype/include/freetype/internal/ftobjs.h b/vendor/freetype/include/freetype/internal/ftobjs.h index 3db2fe28ffd..4fa4991dd88 100644 --- a/vendor/freetype/include/freetype/internal/ftobjs.h +++ b/vendor/freetype/include/freetype/internal/ftobjs.h @@ -4,7 +4,7 @@ * * The FreeType private base classes (specification). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -365,11 +365,6 @@ FT_BEGIN_HEADER * Value~0 means to use the font's value. Value~-1 means to use the * CFF driver's default. * - * lcd_weights :: - * lcd_filter_func :: - * These fields specify the LCD filtering weights and callback function - * for ClearType-style subpixel rendering. - * * refcount :: * A counter initialized to~1 at the time an @FT_Face structure is * created. @FT_Reference_Face increments this counter, and @@ -391,11 +386,6 @@ FT_BEGIN_HEADER FT_Char no_stem_darkening; FT_Int32 random_seed; -#ifdef FT_CONFIG_OPTION_SUBPIXEL_RENDERING - FT_LcdFiveTapFilter lcd_weights; /* filter weights, if any */ - FT_Bitmap_LcdFilterFunc lcd_filter_func; /* filtering callback */ -#endif - FT_Int refcount; } FT_Face_InternalRec; @@ -724,9 +714,9 @@ FT_BEGIN_HEADER const FT_Vector* origin ); /* Allocate a new bitmap buffer in a glyph slot. */ + /* Dimensions must be preset in advance. */ FT_BASE( FT_Error ) - ft_glyphslot_alloc_bitmap( FT_GlyphSlot slot, - FT_ULong size ); + ft_glyphslot_alloc_bitmap( FT_GlyphSlot slot ); /* Set the bitmap buffer in a glyph slot to a given pointer. The buffer */ @@ -889,10 +879,6 @@ FT_BEGIN_HEADER * lcd_weights :: * The LCD filter weights for ClearType-style subpixel rendering. * - * lcd_filter_func :: - * The LCD filtering callback function for for ClearType-style subpixel - * rendering. - * * lcd_geometry :: * This array specifies LCD subpixel geometry and controls Harmony LCD * rendering technique, alternative to ClearType. @@ -926,7 +912,6 @@ FT_BEGIN_HEADER #ifdef FT_CONFIG_OPTION_SUBPIXEL_RENDERING FT_LcdFiveTapFilter lcd_weights; /* filter weights, if any */ - FT_Bitmap_LcdFilterFunc lcd_filter_func; /* filtering callback */ #else FT_Vector lcd_geometry[3]; /* RGB subpixel positions */ #endif @@ -995,17 +980,6 @@ FT_BEGIN_HEADER #endif /* !FT_CONFIG_OPTION_NO_DEFAULT_SYSTEM */ - /* Define default raster's interface. The default raster is located in */ - /* `src/base/ftraster.c'. */ - /* */ - /* Client applications can register new rasters through the */ - /* FT_Set_Raster() API. */ - -#ifndef FT_NO_DEFAULT_RASTER - FT_EXPORT_VAR( FT_Raster_Funcs ) ft_default_raster; -#endif - - /************************************************************************** * * @macro: diff --git a/vendor/freetype/include/freetype/internal/ftpsprop.h b/vendor/freetype/include/freetype/internal/ftpsprop.h index 18a954d22f5..5967199a3bc 100644 --- a/vendor/freetype/include/freetype/internal/ftpsprop.h +++ b/vendor/freetype/include/freetype/internal/ftpsprop.h @@ -4,7 +4,7 @@ * * Get and set properties of PostScript drivers (specification). * - * Copyright (C) 2017-2025 by + * Copyright (C) 2017-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/include/freetype/internal/ftrfork.h b/vendor/freetype/include/freetype/internal/ftrfork.h index e077f98bfb9..d0bb6b5bb00 100644 --- a/vendor/freetype/include/freetype/internal/ftrfork.h +++ b/vendor/freetype/include/freetype/internal/ftrfork.h @@ -4,7 +4,7 @@ * * Embedded resource forks accessor (specification). * - * Copyright (C) 2004-2025 by + * Copyright (C) 2004-2026 by * Masatake YAMATO and Redhat K.K. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/include/freetype/internal/ftserv.h b/vendor/freetype/include/freetype/internal/ftserv.h index ce11bba19b2..9c6406c82d8 100644 --- a/vendor/freetype/include/freetype/internal/ftserv.h +++ b/vendor/freetype/include/freetype/internal/ftserv.h @@ -4,7 +4,7 @@ * * The FreeType services (specification only). * - * Copyright (C) 2003-2025 by + * Copyright (C) 2003-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/include/freetype/internal/ftstream.h b/vendor/freetype/include/freetype/internal/ftstream.h index 20c1dd7c4b0..d60cd481c89 100644 --- a/vendor/freetype/include/freetype/internal/ftstream.h +++ b/vendor/freetype/include/freetype/internal/ftstream.h @@ -4,7 +4,7 @@ * * Stream handling (specification). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/include/freetype/internal/fttrace.h b/vendor/freetype/include/freetype/internal/fttrace.h index 3fd592800e2..94a19f16618 100644 --- a/vendor/freetype/include/freetype/internal/fttrace.h +++ b/vendor/freetype/include/freetype/internal/fttrace.h @@ -4,7 +4,7 @@ * * Tracing handling (specification only). * - * Copyright (C) 2002-2025 by + * Copyright (C) 2002-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -120,6 +120,11 @@ FT_TRACE_DEF( cidload ) FT_TRACE_DEF( cidobjs ) FT_TRACE_DEF( cidparse ) + /* HVF driver component */ +FT_TRACE_DEF( hvfdrv ) +FT_TRACE_DEF( hvfobjs ) +FT_TRACE_DEF( hvfload ) + /* Windows font component */ FT_TRACE_DEF( winfnt ) diff --git a/vendor/freetype/include/freetype/internal/ftvalid.h b/vendor/freetype/include/freetype/internal/ftvalid.h index 03a726c82cb..fbcf2c63efa 100644 --- a/vendor/freetype/include/freetype/internal/ftvalid.h +++ b/vendor/freetype/include/freetype/internal/ftvalid.h @@ -4,7 +4,7 @@ * * FreeType validation support (specification). * - * Copyright (C) 2004-2025 by + * Copyright (C) 2004-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/include/freetype/internal/psaux.h b/vendor/freetype/include/freetype/internal/psaux.h index 344be0f19a7..ee574fef11b 100644 --- a/vendor/freetype/include/freetype/internal/psaux.h +++ b/vendor/freetype/include/freetype/internal/psaux.h @@ -5,7 +5,7 @@ * Auxiliary functions and data structures related to PostScript fonts * (specification). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/include/freetype/internal/pshints.h b/vendor/freetype/include/freetype/internal/pshints.h index 96c5d84f058..e7adcd38058 100644 --- a/vendor/freetype/include/freetype/internal/pshints.h +++ b/vendor/freetype/include/freetype/internal/pshints.h @@ -6,7 +6,7 @@ * recorders (specification only). These are used to support native * T1/T2 hints in the 'type1', 'cid', and 'cff' font drivers. * - * Copyright (C) 2001-2025 by + * Copyright (C) 2001-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/include/freetype/internal/services/svbdf.h b/vendor/freetype/include/freetype/internal/services/svbdf.h index 5bd51da23f4..52212cc7a2b 100644 --- a/vendor/freetype/include/freetype/internal/services/svbdf.h +++ b/vendor/freetype/include/freetype/internal/services/svbdf.h @@ -4,7 +4,7 @@ * * The FreeType BDF services (specification). * - * Copyright (C) 2003-2025 by + * Copyright (C) 2003-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/include/freetype/internal/services/svcfftl.h b/vendor/freetype/include/freetype/internal/services/svcfftl.h index c97bf84fb2e..ab29dede537 100644 --- a/vendor/freetype/include/freetype/internal/services/svcfftl.h +++ b/vendor/freetype/include/freetype/internal/services/svcfftl.h @@ -4,7 +4,7 @@ * * The FreeType CFF tables loader service (specification). * - * Copyright (C) 2017-2025 by + * Copyright (C) 2017-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/include/freetype/internal/services/svcid.h b/vendor/freetype/include/freetype/internal/services/svcid.h index 748a8caf887..9063211ee01 100644 --- a/vendor/freetype/include/freetype/internal/services/svcid.h +++ b/vendor/freetype/include/freetype/internal/services/svcid.h @@ -4,7 +4,7 @@ * * The FreeType CID font services (specification). * - * Copyright (C) 2007-2025 by + * Copyright (C) 2007-2026 by * Derek Clegg and Michael Toftdal. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/include/freetype/internal/services/svfntfmt.h b/vendor/freetype/include/freetype/internal/services/svfntfmt.h index 690fdc2a24f..91a6f007aa5 100644 --- a/vendor/freetype/include/freetype/internal/services/svfntfmt.h +++ b/vendor/freetype/include/freetype/internal/services/svfntfmt.h @@ -4,7 +4,7 @@ * * The FreeType font format service (specification only). * - * Copyright (C) 2003-2025 by + * Copyright (C) 2003-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -40,6 +40,7 @@ FT_BEGIN_HEADER #define FT_FONT_FORMAT_TYPE_42 "Type 42" #define FT_FONT_FORMAT_CID "CID Type 1" #define FT_FONT_FORMAT_CFF "CFF" +#define FT_FONT_FORMAT_HVF "HVF" #define FT_FONT_FORMAT_PFR "PFR" #define FT_FONT_FORMAT_WINFNT "Windows FNT" diff --git a/vendor/freetype/include/freetype/internal/services/svgldict.h b/vendor/freetype/include/freetype/internal/services/svgldict.h index 7128d6f3d7a..6020f9f78a6 100644 --- a/vendor/freetype/include/freetype/internal/services/svgldict.h +++ b/vendor/freetype/include/freetype/internal/services/svgldict.h @@ -4,7 +4,7 @@ * * The FreeType glyph dictionary services (specification). * - * Copyright (C) 2003-2025 by + * Copyright (C) 2003-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/include/freetype/internal/services/svgxval.h b/vendor/freetype/include/freetype/internal/services/svgxval.h index 1ca3e0a031b..056114e6f8c 100644 --- a/vendor/freetype/include/freetype/internal/services/svgxval.h +++ b/vendor/freetype/include/freetype/internal/services/svgxval.h @@ -4,7 +4,7 @@ * * FreeType API for validating TrueTypeGX/AAT tables (specification). * - * Copyright (C) 2004-2025 by + * Copyright (C) 2004-2026 by * Masatake YAMATO, Red Hat K.K., * David Turner, Robert Wilhelm, and Werner Lemberg. * diff --git a/vendor/freetype/include/freetype/internal/services/svkern.h b/vendor/freetype/include/freetype/internal/services/svkern.h index 8a3d59bec6d..7a06a01e8f0 100644 --- a/vendor/freetype/include/freetype/internal/services/svkern.h +++ b/vendor/freetype/include/freetype/internal/services/svkern.h @@ -4,7 +4,7 @@ * * The FreeType Kerning service (specification). * - * Copyright (C) 2006-2025 by + * Copyright (C) 2006-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/include/freetype/internal/services/svmetric.h b/vendor/freetype/include/freetype/internal/services/svmetric.h index 4dde3a8151a..b6559d2b1ad 100644 --- a/vendor/freetype/include/freetype/internal/services/svmetric.h +++ b/vendor/freetype/include/freetype/internal/services/svmetric.h @@ -4,7 +4,7 @@ * * The FreeType services for metrics variations (specification). * - * Copyright (C) 2016-2025 by + * Copyright (C) 2016-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/include/freetype/internal/services/svmm.h b/vendor/freetype/include/freetype/internal/services/svmm.h index 9be133e2db0..fd851dba120 100644 --- a/vendor/freetype/include/freetype/internal/services/svmm.h +++ b/vendor/freetype/include/freetype/internal/services/svmm.h @@ -4,7 +4,7 @@ * * The FreeType Multiple Masters and GX var services (specification). * - * Copyright (C) 2003-2025 by + * Copyright (C) 2003-2026 by * David Turner, Robert Wilhelm, Werner Lemberg, and Dominik Röttsches. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/include/freetype/internal/services/svotval.h b/vendor/freetype/include/freetype/internal/services/svotval.h index 933e5de98da..487dca3f043 100644 --- a/vendor/freetype/include/freetype/internal/services/svotval.h +++ b/vendor/freetype/include/freetype/internal/services/svotval.h @@ -4,7 +4,7 @@ * * The FreeType OpenType validation service (specification). * - * Copyright (C) 2004-2025 by + * Copyright (C) 2004-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/include/freetype/internal/services/svpfr.h b/vendor/freetype/include/freetype/internal/services/svpfr.h index c81b6a68a8b..94cd695eb00 100644 --- a/vendor/freetype/include/freetype/internal/services/svpfr.h +++ b/vendor/freetype/include/freetype/internal/services/svpfr.h @@ -4,7 +4,7 @@ * * Internal PFR service functions (specification). * - * Copyright (C) 2003-2025 by + * Copyright (C) 2003-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/include/freetype/internal/services/svpostnm.h b/vendor/freetype/include/freetype/internal/services/svpostnm.h index 33864ebc344..d99f4f681ef 100644 --- a/vendor/freetype/include/freetype/internal/services/svpostnm.h +++ b/vendor/freetype/include/freetype/internal/services/svpostnm.h @@ -4,7 +4,7 @@ * * The FreeType PostScript name services (specification). * - * Copyright (C) 2003-2025 by + * Copyright (C) 2003-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/include/freetype/internal/services/svprop.h b/vendor/freetype/include/freetype/internal/services/svprop.h index 0eb79c885d8..b6cba4c7f42 100644 --- a/vendor/freetype/include/freetype/internal/services/svprop.h +++ b/vendor/freetype/include/freetype/internal/services/svprop.h @@ -4,7 +4,7 @@ * * The FreeType property service (specification). * - * Copyright (C) 2012-2025 by + * Copyright (C) 2012-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/include/freetype/internal/services/svpscmap.h b/vendor/freetype/include/freetype/internal/services/svpscmap.h index 8f85d12157c..310eb53f333 100644 --- a/vendor/freetype/include/freetype/internal/services/svpscmap.h +++ b/vendor/freetype/include/freetype/internal/services/svpscmap.h @@ -4,7 +4,7 @@ * * The FreeType PostScript charmap service (specification). * - * Copyright (C) 2003-2025 by + * Copyright (C) 2003-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/include/freetype/internal/services/svpsinfo.h b/vendor/freetype/include/freetype/internal/services/svpsinfo.h index 83de04478df..78725a48fa5 100644 --- a/vendor/freetype/include/freetype/internal/services/svpsinfo.h +++ b/vendor/freetype/include/freetype/internal/services/svpsinfo.h @@ -4,7 +4,7 @@ * * The FreeType PostScript info service (specification). * - * Copyright (C) 2003-2025 by + * Copyright (C) 2003-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/include/freetype/internal/services/svsfnt.h b/vendor/freetype/include/freetype/internal/services/svsfnt.h index 9bf5e3473c4..0ce5aca1376 100644 --- a/vendor/freetype/include/freetype/internal/services/svsfnt.h +++ b/vendor/freetype/include/freetype/internal/services/svsfnt.h @@ -4,7 +4,7 @@ * * The FreeType SFNT table loading service (specification). * - * Copyright (C) 2003-2025 by + * Copyright (C) 2003-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/include/freetype/internal/services/svttcmap.h b/vendor/freetype/include/freetype/internal/services/svttcmap.h index fc9b0aeb8e3..14921304ebf 100644 --- a/vendor/freetype/include/freetype/internal/services/svttcmap.h +++ b/vendor/freetype/include/freetype/internal/services/svttcmap.h @@ -4,7 +4,7 @@ * * The FreeType TrueType/sfnt cmap extra information service. * - * Copyright (C) 2003-2025 by + * Copyright (C) 2003-2026 by * Masatake YAMATO, Redhat K.K., * David Turner, Robert Wilhelm, and Werner Lemberg. * diff --git a/vendor/freetype/include/freetype/internal/services/svtteng.h b/vendor/freetype/include/freetype/internal/services/svtteng.h index 979e9ea102e..d4a9bab6ded 100644 --- a/vendor/freetype/include/freetype/internal/services/svtteng.h +++ b/vendor/freetype/include/freetype/internal/services/svtteng.h @@ -4,7 +4,7 @@ * * The FreeType TrueType engine query service (specification). * - * Copyright (C) 2006-2025 by + * Copyright (C) 2006-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/include/freetype/internal/services/svttglyf.h b/vendor/freetype/include/freetype/internal/services/svttglyf.h index e4f54c10037..528238024ba 100644 --- a/vendor/freetype/include/freetype/internal/services/svttglyf.h +++ b/vendor/freetype/include/freetype/internal/services/svttglyf.h @@ -4,7 +4,7 @@ * * The FreeType TrueType glyph service. * - * Copyright (C) 2007-2025 by + * Copyright (C) 2007-2026 by * David Turner. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/include/freetype/internal/services/svwinfnt.h b/vendor/freetype/include/freetype/internal/services/svwinfnt.h index ff887ffdc03..e5a3a6649b6 100644 --- a/vendor/freetype/include/freetype/internal/services/svwinfnt.h +++ b/vendor/freetype/include/freetype/internal/services/svwinfnt.h @@ -4,7 +4,7 @@ * * The FreeType Windows FNT/FONT service (specification). * - * Copyright (C) 2003-2025 by + * Copyright (C) 2003-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/include/freetype/internal/sfnt.h b/vendor/freetype/include/freetype/internal/sfnt.h index adba2178877..cc1ac7a6e4c 100644 --- a/vendor/freetype/include/freetype/internal/sfnt.h +++ b/vendor/freetype/include/freetype/internal/sfnt.h @@ -4,7 +4,7 @@ * * High-level 'sfnt' driver interface (specification). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/include/freetype/internal/svginterface.h b/vendor/freetype/include/freetype/internal/svginterface.h index 20c73b2fbd2..3a4ca314ddb 100644 --- a/vendor/freetype/include/freetype/internal/svginterface.h +++ b/vendor/freetype/include/freetype/internal/svginterface.h @@ -4,7 +4,7 @@ * * Interface of ot-svg module (specification only). * - * Copyright (C) 2022-2025 by + * Copyright (C) 2022-2026 by * David Turner, Robert Wilhelm, Werner Lemberg, and Moazin Khatti. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/include/freetype/internal/t1types.h b/vendor/freetype/include/freetype/internal/t1types.h index 5b26e4620d0..e39076f1956 100644 --- a/vendor/freetype/include/freetype/internal/t1types.h +++ b/vendor/freetype/include/freetype/internal/t1types.h @@ -5,7 +5,7 @@ * Basic Type1/Type2 type definitions and interface (specification * only). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/include/freetype/internal/tttypes.h b/vendor/freetype/include/freetype/internal/tttypes.h index d0e5eee89bc..65341a3a259 100644 --- a/vendor/freetype/include/freetype/internal/tttypes.h +++ b/vendor/freetype/include/freetype/internal/tttypes.h @@ -5,7 +5,7 @@ * Basic SFNT/TrueType type definitions and interface (specification * only). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/include/freetype/internal/wofftypes.h b/vendor/freetype/include/freetype/internal/wofftypes.h index 7d5b7df0fa1..b8ef95e27aa 100644 --- a/vendor/freetype/include/freetype/internal/wofftypes.h +++ b/vendor/freetype/include/freetype/internal/wofftypes.h @@ -5,7 +5,7 @@ * Basic WOFF/WOFF2 type definitions and interface (specification * only). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/include/freetype/otsvg.h b/vendor/freetype/include/freetype/otsvg.h index 326bbcd0153..42330a703b0 100644 --- a/vendor/freetype/include/freetype/otsvg.h +++ b/vendor/freetype/include/freetype/otsvg.h @@ -4,7 +4,7 @@ * * Interface for OT-SVG support related things (specification). * - * Copyright (C) 2022-2025 by + * Copyright (C) 2022-2026 by * David Turner, Robert Wilhelm, Werner Lemberg, and Moazin Khatti. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/include/freetype/t1tables.h b/vendor/freetype/include/freetype/t1tables.h index fc3c1706de5..badfdf40762 100644 --- a/vendor/freetype/include/freetype/t1tables.h +++ b/vendor/freetype/include/freetype/t1tables.h @@ -5,7 +5,7 @@ * Basic Type 1/Type 2 tables definitions and interface (specification * only). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -92,7 +92,7 @@ FT_BEGIN_HEADER FT_String* full_name; FT_String* family_name; FT_String* weight; - FT_Long italic_angle; + FT_Fixed italic_angle; FT_Bool is_fixed_pitch; FT_Short underline_position; FT_UShort underline_thickness; @@ -645,7 +645,7 @@ FT_BEGIN_HEADER PS_DICT_UNDERLINE_POSITION, /* FT_Short */ PS_DICT_UNDERLINE_THICKNESS, /* FT_UShort */ PS_DICT_FS_TYPE, /* FT_UShort */ - PS_DICT_ITALIC_ANGLE, /* FT_Long */ + PS_DICT_ITALIC_ANGLE, /* FT_Fixed */ PS_DICT_MAX = PS_DICT_ITALIC_ANGLE diff --git a/vendor/freetype/include/freetype/ttnameid.h b/vendor/freetype/include/freetype/ttnameid.h index 3ef61091cc9..76ddb6f0a51 100644 --- a/vendor/freetype/include/freetype/ttnameid.h +++ b/vendor/freetype/include/freetype/ttnameid.h @@ -4,7 +4,7 @@ * * TrueType name ID definitions (specification only). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -169,7 +169,7 @@ FT_BEGIN_HEADER #define TT_MAC_ID_LAOTIAN 22 #define TT_MAC_ID_GEORGIAN 23 #define TT_MAC_ID_ARMENIAN 24 -#define TT_MAC_ID_MALDIVIAN 25 +#define TT_MAC_ID_MALDIVIAN 25 /* TrueType version 1.66 */ #define TT_MAC_ID_SIMPLIFIED_CHINESE 25 #define TT_MAC_ID_TIBETAN 26 #define TT_MAC_ID_MONGOLIAN 27 diff --git a/vendor/freetype/include/freetype/tttables.h b/vendor/freetype/include/freetype/tttables.h index aa4336435d9..a2ec304483a 100644 --- a/vendor/freetype/include/freetype/tttables.h +++ b/vendor/freetype/include/freetype/tttables.h @@ -5,7 +5,7 @@ * Basic SFNT/TrueType tables definitions and interface * (specification only). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/include/freetype/tttags.h b/vendor/freetype/include/freetype/tttags.h index 56bb0a3ee5e..3f00902eeed 100644 --- a/vendor/freetype/include/freetype/tttags.h +++ b/vendor/freetype/include/freetype/tttags.h @@ -4,7 +4,7 @@ * * Tags for TrueType and OpenType tables (specification only). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -68,6 +68,8 @@ FT_BEGIN_HEADER #define TTAG_head FT_MAKE_TAG( 'h', 'e', 'a', 'd' ) #define TTAG_hhea FT_MAKE_TAG( 'h', 'h', 'e', 'a' ) #define TTAG_hmtx FT_MAKE_TAG( 'h', 'm', 't', 'x' ) +#define TTAG_hvgl FT_MAKE_TAG( 'h', 'v', 'g', 'l' ) +#define TTAG_hvpm FT_MAKE_TAG( 'h', 'v', 'p', 'm' ) #define TTAG_JSTF FT_MAKE_TAG( 'J', 'S', 'T', 'F' ) #define TTAG_just FT_MAKE_TAG( 'j', 'u', 's', 't' ) #define TTAG_kern FT_MAKE_TAG( 'k', 'e', 'r', 'n' ) diff --git a/vendor/freetype/include/ft2build.h b/vendor/freetype/include/ft2build.h index 3008aea7cf5..ffbf4a1e6ad 100644 --- a/vendor/freetype/include/ft2build.h +++ b/vendor/freetype/include/ft2build.h @@ -4,7 +4,7 @@ * * FreeType 2 build and setup macros. * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/autofit/afadjust.c b/vendor/freetype/src/autofit/afadjust.c index 6637cacfccf..6940baf68cc 100644 --- a/vendor/freetype/src/autofit/afadjust.c +++ b/vendor/freetype/src/autofit/afadjust.c @@ -4,7 +4,7 @@ * * Auto-fitter routines to adjust components based on charcode (body). * - * Copyright (C) 2023-2025 by + * Copyright (C) 2023-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * Written by Craig White . @@ -1405,7 +1405,8 @@ FT_TRACE4(( " " )); idx = HB_SET_VALUE_INVALID; while ( hb( set_next )( gsub_lookups, &idx ) ) - if ( globals->gsub_lookups_single_alternate[idx] ) + if ( idx < globals->gsub_lookup_count && + globals->gsub_lookups_single_alternate[idx] ) { have_idx = TRUE; FT_TRACE4(( " %u", idx )); @@ -1428,9 +1429,17 @@ idx = HB_SET_VALUE_INVALID; while ( hb( set_next )( gsub_lookups, &idx ) ) { - FT_UInt32 offset = globals->gsub_lookups_single_alternate[idx]; + FT_UInt32 offset; + /* HarfBuzz only validates lookup indices while */ + /* processing lookups, not while collecting them, */ + /* so we have to do that by ourselves. */ + if ( idx < globals->gsub_lookup_count ) + offset = globals->gsub_lookups_single_alternate[idx]; + else + offset = 0; + /* Put all substitutions into a single hash table. Note that */ /* the hash values usually contain more than a single character */ /* code; this can happen if different 'SingleSubst' subtables */ diff --git a/vendor/freetype/src/autofit/afadjust.h b/vendor/freetype/src/autofit/afadjust.h index 4837451ae4c..85dbfaad29e 100644 --- a/vendor/freetype/src/autofit/afadjust.h +++ b/vendor/freetype/src/autofit/afadjust.h @@ -4,7 +4,7 @@ * * Auto-fitter routines to adjust components based on charcode (header). * - * Copyright (C) 2023-2025 by + * Copyright (C) 2023-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * Written by Craig White . diff --git a/vendor/freetype/src/autofit/afblue.c b/vendor/freetype/src/autofit/afblue.c index a6219bdfe41..77c8389ec7f 100644 --- a/vendor/freetype/src/autofit/afblue.c +++ b/vendor/freetype/src/autofit/afblue.c @@ -7,7 +7,7 @@ * * Auto-fitter data for blue strings (body). * - * Copyright (C) 2013-2025 by + * Copyright (C) 2013-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/autofit/afblue.cin b/vendor/freetype/src/autofit/afblue.cin index 786c6b3b9e6..70b7e025214 100644 --- a/vendor/freetype/src/autofit/afblue.cin +++ b/vendor/freetype/src/autofit/afblue.cin @@ -4,7 +4,7 @@ * * Auto-fitter data for blue strings (body). * - * Copyright (C) 2013-2025 by + * Copyright (C) 2013-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/autofit/afblue.dat b/vendor/freetype/src/autofit/afblue.dat index f6e96ff8189..e62754fc7e0 100644 --- a/vendor/freetype/src/autofit/afblue.dat +++ b/vendor/freetype/src/autofit/afblue.dat @@ -2,7 +2,7 @@ // // Auto-fitter data for blue strings. // -// Copyright (C) 2013-2025 by +// Copyright (C) 2013-2026 by // David Turner, Robert Wilhelm, and Werner Lemberg. // // This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/autofit/afblue.h b/vendor/freetype/src/autofit/afblue.h index 5bb8406dc2b..f124eedee4d 100644 --- a/vendor/freetype/src/autofit/afblue.h +++ b/vendor/freetype/src/autofit/afblue.h @@ -7,7 +7,7 @@ * * Auto-fitter data for blue strings (specification). * - * Copyright (C) 2013-2025 by + * Copyright (C) 2013-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/autofit/afblue.hin b/vendor/freetype/src/autofit/afblue.hin index dbac14548d5..931c5010606 100644 --- a/vendor/freetype/src/autofit/afblue.hin +++ b/vendor/freetype/src/autofit/afblue.hin @@ -4,7 +4,7 @@ * * Auto-fitter data for blue strings (specification). * - * Copyright (C) 2013-2025 by + * Copyright (C) 2013-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/autofit/afcjk.c b/vendor/freetype/src/autofit/afcjk.c index 7086601838c..7a1cc32c9d4 100644 --- a/vendor/freetype/src/autofit/afcjk.c +++ b/vendor/freetype/src/autofit/afcjk.c @@ -4,7 +4,7 @@ * * Auto-fitter hinting routines for CJK writing system (body). * - * Copyright (C) 2006-2025 by + * Copyright (C) 2006-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/autofit/afcjk.h b/vendor/freetype/src/autofit/afcjk.h index bd1b39358e0..98681868a85 100644 --- a/vendor/freetype/src/autofit/afcjk.h +++ b/vendor/freetype/src/autofit/afcjk.h @@ -4,7 +4,7 @@ * * Auto-fitter hinting routines for CJK writing system (specification). * - * Copyright (C) 2006-2025 by + * Copyright (C) 2006-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/autofit/afcover.h b/vendor/freetype/src/autofit/afcover.h index b93bcd1a2c5..d60e0050bec 100644 --- a/vendor/freetype/src/autofit/afcover.h +++ b/vendor/freetype/src/autofit/afcover.h @@ -4,7 +4,7 @@ * * Auto-fitter coverages (specification only). * - * Copyright (C) 2013-2025 by + * Copyright (C) 2013-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/autofit/afdummy.c b/vendor/freetype/src/autofit/afdummy.c index 8613544f913..f9d1dd38dba 100644 --- a/vendor/freetype/src/autofit/afdummy.c +++ b/vendor/freetype/src/autofit/afdummy.c @@ -5,7 +5,7 @@ * Auto-fitter dummy routines to be used if no hinting should be * performed (body). * - * Copyright (C) 2003-2025 by + * Copyright (C) 2003-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/autofit/afdummy.h b/vendor/freetype/src/autofit/afdummy.h index 78a79439d95..14546b1e50e 100644 --- a/vendor/freetype/src/autofit/afdummy.h +++ b/vendor/freetype/src/autofit/afdummy.h @@ -5,7 +5,7 @@ * Auto-fitter dummy routines to be used if no hinting should be * performed (specification). * - * Copyright (C) 2003-2025 by + * Copyright (C) 2003-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/autofit/aferrors.h b/vendor/freetype/src/autofit/aferrors.h index f3093fc90df..3d7538ba2d8 100644 --- a/vendor/freetype/src/autofit/aferrors.h +++ b/vendor/freetype/src/autofit/aferrors.h @@ -4,7 +4,7 @@ * * Autofitter error codes (specification only). * - * Copyright (C) 2005-2025 by + * Copyright (C) 2005-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/autofit/afglobal.c b/vendor/freetype/src/autofit/afglobal.c index e74d8141161..ff6903cc174 100644 --- a/vendor/freetype/src/autofit/afglobal.c +++ b/vendor/freetype/src/autofit/afglobal.c @@ -4,7 +4,7 @@ * * Auto-fitter routines to compute global hinting values (body). * - * Copyright (C) 2003-2025 by + * Copyright (C) 2003-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/autofit/afglobal.h b/vendor/freetype/src/autofit/afglobal.h index 362f56e290b..c4dd9335839 100644 --- a/vendor/freetype/src/autofit/afglobal.h +++ b/vendor/freetype/src/autofit/afglobal.h @@ -5,7 +5,7 @@ * Auto-fitter routines to compute global hinting values * (specification). * - * Copyright (C) 2003-2025 by + * Copyright (C) 2003-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -116,7 +116,9 @@ FT_BEGIN_HEADER /* The GSUB table. */ FT_Byte* gsub; - /* Lookup offsets, with only SingleSubst and AlternateSubst non-NULL. */ + /* An array of lookup offsets (of `gsub_lookup_count` elements), */ + /* with only SingleSubst and AlternateSubst lookups non-NULL. */ + FT_UShort gsub_lookup_count; FT_UInt32* gsub_lookups_single_alternate; #endif diff --git a/vendor/freetype/src/autofit/afgsub.c b/vendor/freetype/src/autofit/afgsub.c index 386999d5c52..3d6b231aa37 100644 --- a/vendor/freetype/src/autofit/afgsub.c +++ b/vendor/freetype/src/autofit/afgsub.c @@ -4,7 +4,7 @@ * * Auto-fitter routines to parse the GSUB table (body). * - * Copyright (C) 2025 by + * Copyright (C) 2025-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -15,8 +15,6 @@ * */ -#ifdef FT_CONFIG_OPTION_USE_HARFBUZZ - #include #include @@ -24,6 +22,9 @@ #include + +#ifdef FT_CONFIG_OPTION_USE_HARFBUZZ + #include "afglobal.h" #include "afgsub.h" #include "aftypes.h" @@ -66,6 +67,8 @@ { FT_UInt rangeCount = FT_NEXT_USHORT( p ); FT_Byte* limit = p + rangeCount * 6; + FT_UInt startGlyphID; + FT_UInt endGlyphID = 0; if ( table_limit < limit ) @@ -73,14 +76,15 @@ while ( p < limit ) { - FT_UInt startGlyphID = FT_NEXT_USHORT( p ); - FT_UInt endGlyphID = FT_NEXT_USHORT( p ); - + startGlyphID = FT_NEXT_USHORT( p ); + if ( startGlyphID < endGlyphID ) + return FALSE; - if ( startGlyphID > endGlyphID ) + endGlyphID = FT_NEXT_USHORT( p ); + if ( endGlyphID < startGlyphID ) return FALSE; - count += endGlyphID - startGlyphID + 1; + count += ++endGlyphID - startGlyphID; /* We don't validate coverage indices. */ p += 2; @@ -363,11 +367,13 @@ } globals->gsub = gsub; + globals->gsub_lookup_count = lookupCount; globals->gsub_lookups_single_alternate = gsub_lookups_single_alternate; return; Fail: + globals->gsub_lookup_count = 0; FT_FREE( gsub ); FT_FREE( gsub_lookups_single_alternate ); } diff --git a/vendor/freetype/src/autofit/afgsub.h b/vendor/freetype/src/autofit/afgsub.h index d57d61475bd..10884f9236e 100644 --- a/vendor/freetype/src/autofit/afgsub.h +++ b/vendor/freetype/src/autofit/afgsub.h @@ -4,7 +4,7 @@ * * Auto-fitter routines to parse the GSUB table (header). * - * Copyright (C) 2025 by + * Copyright (C) 2025-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/autofit/afhints.c b/vendor/freetype/src/autofit/afhints.c index 11faa655f62..376912a5d12 100644 --- a/vendor/freetype/src/autofit/afhints.c +++ b/vendor/freetype/src/autofit/afhints.c @@ -4,7 +4,7 @@ * * Auto-fitter hinting routines (body). * - * Copyright (C) 2003-2025 by + * Copyright (C) 2003-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/autofit/afhints.h b/vendor/freetype/src/autofit/afhints.h index 46b3ed3366f..84244d6f5c7 100644 --- a/vendor/freetype/src/autofit/afhints.h +++ b/vendor/freetype/src/autofit/afhints.h @@ -4,7 +4,7 @@ * * Auto-fitter hinting routines (specification). * - * Copyright (C) 2003-2025 by + * Copyright (C) 2003-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/autofit/afindic.c b/vendor/freetype/src/autofit/afindic.c index a2cd14f8817..29b6d22ed65 100644 --- a/vendor/freetype/src/autofit/afindic.c +++ b/vendor/freetype/src/autofit/afindic.c @@ -4,7 +4,7 @@ * * Auto-fitter hinting routines for Indic writing system (body). * - * Copyright (C) 2007-2025 by + * Copyright (C) 2007-2026 by * Rahul Bhalerao , . * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/autofit/afindic.h b/vendor/freetype/src/autofit/afindic.h index a2e825e9f86..df4892a9f1c 100644 --- a/vendor/freetype/src/autofit/afindic.h +++ b/vendor/freetype/src/autofit/afindic.h @@ -5,7 +5,7 @@ * Auto-fitter hinting routines for Indic writing system * (specification). * - * Copyright (C) 2007-2025 by + * Copyright (C) 2007-2026 by * Rahul Bhalerao , . * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/autofit/aflatin.c b/vendor/freetype/src/autofit/aflatin.c index cb5667ff793..3c97f91dd93 100644 --- a/vendor/freetype/src/autofit/aflatin.c +++ b/vendor/freetype/src/autofit/aflatin.c @@ -4,7 +4,7 @@ * * Auto-fitter hinting routines for latin writing system (body). * - * Copyright (C) 2003-2025 by + * Copyright (C) 2003-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -2783,8 +2783,8 @@ { do { - point->y += movement; - point = point->next; + point->y = ADD_LONG( point->y, movement ); + point = point->next; } while ( point != first_point ); } @@ -3269,9 +3269,9 @@ next_on = next_on->next; if ( next_on->y > p->y && prev_on->y > p->y ) - measurement = p->y - min_y; + measurement = SUB_LONG( p->y, min_y ); else if ( next_on->y < p->y && prev_on->y < p->y ) - measurement = max_y - p->y; + measurement = SUB_LONG( max_y, p->y ); else continue; @@ -3309,11 +3309,14 @@ p = first_point; do { - p = p->next; - /* We adjust the height of the diacritic only, which means */ - /* we are never dealing with large numbers and can thus avoid */ - /* `FT_MulFix`. */ - p->y = ( ( p->y - min_y ) * target_height / height ) + min_y; + p = p->next; + /* We adjust the height of the diacritic only, which means */ + /* we are never dealing with (valid) large numbers and can */ + /* thus avoid `FT_MulFix`. */ + p->y = ADD_LONG( MUL_LONG( SUB_LONG( p->y, + min_y ), + target_height ) / height, + min_y ); } while ( p != first_point ); @@ -3370,9 +3373,9 @@ next_on = next_on->next; if ( next_on->y > p->y && prev_on->y > p->y ) - measurement = p->y - min_y; + measurement = SUB_LONG( p->y, min_y ); else if ( next_on->y < p->y && prev_on->y < p->y ) - measurement = max_y - p->y; + measurement = SUB_LONG( max_y, p->y ); else continue; @@ -3403,8 +3406,11 @@ p = first_point; do { - p = p->next; - p->y = ( ( p->y - max_y ) * target_height / height ) + max_y; + p = p->next; + p->y = ADD_LONG( MUL_LONG( SUB_LONG( p->y, + max_y ), + target_height ) / height, + max_y ); } while ( p != first_point ); @@ -3462,9 +3468,9 @@ } while ( p != first_point ); /* Align bottom of the tilde to the grid. */ - min_y_rounded = FT_PIX_ROUND( min_y ); - delta = min_y_rounded - min_y; - height = max_y - min_y; + min_y_rounded = FT_PIX_ROUND_LONG( min_y ); + delta = SUB_LONG( min_y_rounded, min_y ); + height = SUB_LONG( max_y, min_y ); /* If the tilde is less than 3 pixels tall, snap the center of it */ /* to the grid instead of the bottom to improve readability. */ @@ -3502,9 +3508,9 @@ } while ( p != first_point ); - max_y_rounded = FT_PIX_ROUND( max_y ); - delta = max_y_rounded - max_y; - height = max_y - min_y; + max_y_rounded = FT_PIX_ROUND_LONG( max_y ); + delta = SUB_LONG( max_y_rounded, max_y ); + height = SUB_LONG( max_y, min_y ); if ( height < 64 * 3 ) delta -= ( FT_PIX_ROUND( height ) - height ) / 2; @@ -3673,7 +3679,7 @@ high_min_y = hints->contour_y_minima[high_contour]; high_max_y = hints->contour_y_maxima[high_contour]; - high_height = high_max_y - high_min_y; + high_height = SUB_LONG( high_max_y, high_min_y ); if ( high_height > accent_height_limit ) { @@ -3705,7 +3711,7 @@ /* We also check that the y minimum of the 'other' contour */ /* is below the high contour to avoid potential false hits */ /* with contours enclosed in the high one. */ - distance = high_min_y - max_y; + distance = SUB_LONG( high_min_y, max_y ); if ( distance < 64 && distance < min_distance && min_y < high_min_y ) @@ -3724,16 +3730,16 @@ tilde_min_y = hints->contour_y_minima[tilde_contour]; tilde_max_y = hints->contour_y_maxima[tilde_contour]; - tilde_height = tilde_max_y - tilde_min_y; + tilde_height = SUB_LONG( tilde_max_y, tilde_min_y); /* The vertical separation adjustment potentially undoes a */ /* tilde center alignment. If it would grid-align a tilde */ /* less than 3 pixels in height, shift additionally to */ /* re-center the tilde. */ - pos = high_min_y + adjustment_amount; + pos = ADD_LONG( high_min_y, adjustment_amount ); if ( adjust_below_top && is_top_tilde ) - pos += high_height; + pos = ADD_LONG( pos, high_height ); if ( pos % 64 == 0 && tilde_height < 3 * 64 ) { @@ -3764,7 +3770,7 @@ { /* Value 8 is heuristic. */ FT_Pos height_delta = high_height / 8; - FT_Pos min_y_limit = high_min_y - height_delta; + FT_Pos min_y_limit = SUB_LONG( high_min_y, height_delta ); FT_TRACE4(( " Pushing high contour %ld units up\n", @@ -3784,7 +3790,7 @@ centering_adjustment )); af_move_contours_up( hints, - min_y_limit + high_height, + ADD_LONG( min_y_limit, high_height ), centering_adjustment ); } } @@ -3838,7 +3844,7 @@ low_min_y = hints->contour_y_minima[low_contour]; low_max_y = hints->contour_y_maxima[low_contour]; - low_height = low_max_y - low_min_y; + low_height = SUB_LONG( low_max_y, low_min_y ); if ( low_height > accent_height_limit ) { @@ -3863,7 +3869,7 @@ min_y = hints->contour_y_minima[contour]; max_y = hints->contour_y_maxima[contour]; - distance = min_y - low_max_y; + distance = SUB_LONG( min_y, low_max_y ); if ( distance < 64 && distance < min_distance && max_y > low_max_y ) @@ -3882,11 +3888,11 @@ tilde_min_y = hints->contour_y_minima[tilde_contour]; tilde_max_y = hints->contour_y_maxima[tilde_contour]; - tilde_height = tilde_max_y - tilde_min_y; + tilde_height = SUB_LONG( tilde_max_y, tilde_min_y ); - pos = low_max_y - adjustment_amount; + pos = SUB_LONG( low_max_y, adjustment_amount ); if ( adjust_above_bottom && is_bottom_tilde ) - pos -= low_height; + pos = SUB_LONG( pos, low_height ); if ( pos % 64 == 0 && tilde_height < 3 * 64 ) { @@ -3915,7 +3921,7 @@ ( calculated_amount <= 66 || adjustment_amount <= 66 ) ) { FT_Pos height_delta = low_height / 8; - FT_Pos max_y_limit = low_max_y + height_delta; + FT_Pos max_y_limit = ADD_LONG( low_max_y, height_delta ); FT_TRACE4(( " Pushing low contour %ld units down\n", @@ -3929,7 +3935,7 @@ centering_adjustment )); af_move_contours_down( hints, - max_y_limit - low_height, + SUB_LONG( max_y_limit, low_height ), centering_adjustment ); } } diff --git a/vendor/freetype/src/autofit/aflatin.h b/vendor/freetype/src/autofit/aflatin.h index 82b4b0d480d..b6bdc5177f7 100644 --- a/vendor/freetype/src/autofit/aflatin.h +++ b/vendor/freetype/src/autofit/aflatin.h @@ -5,7 +5,7 @@ * Auto-fitter hinting routines for latin writing system * (specification). * - * Copyright (C) 2003-2025 by + * Copyright (C) 2003-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/autofit/afloader.c b/vendor/freetype/src/autofit/afloader.c index d84adc09679..8ac7b53856b 100644 --- a/vendor/freetype/src/autofit/afloader.c +++ b/vendor/freetype/src/autofit/afloader.c @@ -4,7 +4,7 @@ * * Auto-fitter glyph loading routines (body). * - * Copyright (C) 2003-2025 by + * Copyright (C) 2003-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -524,16 +524,18 @@ bbox.xMin = FT_PIX_FLOOR( bbox.xMin ); bbox.yMin = FT_PIX_FLOOR( bbox.yMin ); - bbox.xMax = FT_PIX_CEIL( bbox.xMax ); - bbox.yMax = FT_PIX_CEIL( bbox.yMax ); + bbox.xMax = FT_PIX_CEIL_LONG( bbox.xMax ); + bbox.yMax = FT_PIX_CEIL_LONG( bbox.yMax ); - slot->metrics.width = bbox.xMax - bbox.xMin; - slot->metrics.height = bbox.yMax - bbox.yMin; + slot->metrics.width = SUB_LONG( bbox.xMax, bbox.xMin ); + slot->metrics.height = SUB_LONG( bbox.yMax, bbox.yMin ); slot->metrics.horiBearingX = bbox.xMin; slot->metrics.horiBearingY = bbox.yMax; - slot->metrics.vertBearingX = FT_PIX_FLOOR( bbox.xMin + vvector.x ); - slot->metrics.vertBearingY = FT_PIX_FLOOR( bbox.yMax + vvector.y ); + slot->metrics.vertBearingX = FT_PIX_FLOOR( ADD_LONG( bbox.xMin, + vvector.x ) ); + slot->metrics.vertBearingY = FT_PIX_FLOOR( ADD_LONG( bbox.yMax, + vvector.y ) ); /* for mono-width fonts (like Andale, Courier, etc.) we need */ /* to keep the original rounded advance width; ditto for */ diff --git a/vendor/freetype/src/autofit/afloader.h b/vendor/freetype/src/autofit/afloader.h index a04b4df0b3b..8efd0fd57e9 100644 --- a/vendor/freetype/src/autofit/afloader.h +++ b/vendor/freetype/src/autofit/afloader.h @@ -4,7 +4,7 @@ * * Auto-fitter glyph loading routines (specification). * - * Copyright (C) 2003-2025 by + * Copyright (C) 2003-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/autofit/afmodule.c b/vendor/freetype/src/autofit/afmodule.c index 22d85a889e8..57d5d47dfbd 100644 --- a/vendor/freetype/src/autofit/afmodule.c +++ b/vendor/freetype/src/autofit/afmodule.c @@ -4,7 +4,7 @@ * * Auto-fitter module implementation (body). * - * Copyright (C) 2003-2025 by + * Copyright (C) 2003-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/autofit/afmodule.h b/vendor/freetype/src/autofit/afmodule.h index c62421ef696..1f8a68122d3 100644 --- a/vendor/freetype/src/autofit/afmodule.h +++ b/vendor/freetype/src/autofit/afmodule.h @@ -4,7 +4,7 @@ * * Auto-fitter module implementation (specification). * - * Copyright (C) 2003-2025 by + * Copyright (C) 2003-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/autofit/afranges.c b/vendor/freetype/src/autofit/afranges.c index fd54948f3a5..4d0755decb2 100644 --- a/vendor/freetype/src/autofit/afranges.c +++ b/vendor/freetype/src/autofit/afranges.c @@ -4,7 +4,7 @@ * * Auto-fitter Unicode script ranges (body). * - * Copyright (C) 2013-2025 by + * Copyright (C) 2013-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/autofit/afranges.h b/vendor/freetype/src/autofit/afranges.h index fa00eb75046..f2936945128 100644 --- a/vendor/freetype/src/autofit/afranges.h +++ b/vendor/freetype/src/autofit/afranges.h @@ -4,7 +4,7 @@ * * Auto-fitter Unicode script ranges (specification). * - * Copyright (C) 2013-2025 by + * Copyright (C) 2013-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/autofit/afscript.h b/vendor/freetype/src/autofit/afscript.h index 5c4cbbcb922..d071ed68b7e 100644 --- a/vendor/freetype/src/autofit/afscript.h +++ b/vendor/freetype/src/autofit/afscript.h @@ -4,7 +4,7 @@ * * Auto-fitter scripts (specification only). * - * Copyright (C) 2013-2025 by + * Copyright (C) 2013-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/autofit/afshaper.c b/vendor/freetype/src/autofit/afshaper.c index f3c0744fd9d..5c9e5376ad0 100644 --- a/vendor/freetype/src/autofit/afshaper.c +++ b/vendor/freetype/src/autofit/afshaper.c @@ -4,7 +4,7 @@ * * HarfBuzz interface for accessing OpenType features (body). * - * Copyright (C) 2013-2025 by + * Copyright (C) 2013-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/autofit/afshaper.h b/vendor/freetype/src/autofit/afshaper.h index 757368fc9c0..6e73b9fb2eb 100644 --- a/vendor/freetype/src/autofit/afshaper.h +++ b/vendor/freetype/src/autofit/afshaper.h @@ -4,7 +4,7 @@ * * HarfBuzz interface for accessing OpenType features (specification). * - * Copyright (C) 2013-2025 by + * Copyright (C) 2013-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/autofit/afstyles.h b/vendor/freetype/src/autofit/afstyles.h index 206232efe25..e7a7fe531ba 100644 --- a/vendor/freetype/src/autofit/afstyles.h +++ b/vendor/freetype/src/autofit/afstyles.h @@ -4,7 +4,7 @@ * * Auto-fitter styles (specification only). * - * Copyright (C) 2013-2025 by + * Copyright (C) 2013-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/autofit/aftypes.h b/vendor/freetype/src/autofit/aftypes.h index 959640a12ec..a3a881eedeb 100644 --- a/vendor/freetype/src/autofit/aftypes.h +++ b/vendor/freetype/src/autofit/aftypes.h @@ -4,7 +4,7 @@ * * Auto-fitter types (specification only). * - * Copyright (C) 2003-2025 by + * Copyright (C) 2003-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/autofit/afws-decl.h b/vendor/freetype/src/autofit/afws-decl.h index 12fa7a27a2b..ddebdcd1e78 100644 --- a/vendor/freetype/src/autofit/afws-decl.h +++ b/vendor/freetype/src/autofit/afws-decl.h @@ -4,7 +4,7 @@ * * Auto-fitter writing system declarations (specification only). * - * Copyright (C) 2013-2025 by + * Copyright (C) 2013-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/autofit/afws-iter.h b/vendor/freetype/src/autofit/afws-iter.h index 1752697b375..720c2dc50c9 100644 --- a/vendor/freetype/src/autofit/afws-iter.h +++ b/vendor/freetype/src/autofit/afws-iter.h @@ -4,7 +4,7 @@ * * Auto-fitter writing systems iterator (specification only). * - * Copyright (C) 2013-2025 by + * Copyright (C) 2013-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/autofit/autofit.c b/vendor/freetype/src/autofit/autofit.c index f3fb1974d17..8cd973bf147 100644 --- a/vendor/freetype/src/autofit/autofit.c +++ b/vendor/freetype/src/autofit/autofit.c @@ -4,7 +4,7 @@ * * Auto-fitter module (body). * - * Copyright (C) 2003-2025 by + * Copyright (C) 2003-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/autofit/ft-hb-ft.c b/vendor/freetype/src/autofit/ft-hb-ft.c index d82106b5430..05a66ad32f6 100644 --- a/vendor/freetype/src/autofit/ft-hb-ft.c +++ b/vendor/freetype/src/autofit/ft-hb-ft.c @@ -60,7 +60,7 @@ ft_hb_ft_reference_table (hb_face_t *face, hb_tag_t tag, void *user_data) error = FT_Load_Sfnt_Table (ft_face, tag, 0, buffer, &length); if (error) { - free (buffer); + ft_sfree (buffer); return NULL; } diff --git a/vendor/freetype/src/autofit/ft-hb.c b/vendor/freetype/src/autofit/ft-hb.c index 3c145d04640..ed438da6afe 100644 --- a/vendor/freetype/src/autofit/ft-hb.c +++ b/vendor/freetype/src/autofit/ft-hb.c @@ -4,7 +4,7 @@ * * FreeType-HarfBuzz bridge (body). * - * Copyright (C) 2025 by + * Copyright (C) 2025-2026 by * Behdad Esfahbod. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/autofit/ft-hb.h b/vendor/freetype/src/autofit/ft-hb.h index 95914deb8d3..d2cc0482eb6 100644 --- a/vendor/freetype/src/autofit/ft-hb.h +++ b/vendor/freetype/src/autofit/ft-hb.h @@ -4,7 +4,7 @@ * * FreeType-HarfBuzz bridge (specification). * - * Copyright (C) 2025 by + * Copyright (C) 2025-2026 by * Behdad Esfahbod. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/autofit/module.mk b/vendor/freetype/src/autofit/module.mk index c4515c5d48e..a82bedb9f2b 100644 --- a/vendor/freetype/src/autofit/module.mk +++ b/vendor/freetype/src/autofit/module.mk @@ -3,7 +3,7 @@ # -# Copyright (C) 2003-2025 by +# Copyright (C) 2003-2026 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/vendor/freetype/src/autofit/rules.mk b/vendor/freetype/src/autofit/rules.mk index 03fb5a5edff..9e39db33c90 100644 --- a/vendor/freetype/src/autofit/rules.mk +++ b/vendor/freetype/src/autofit/rules.mk @@ -3,7 +3,7 @@ # -# Copyright (C) 2003-2025 by +# Copyright (C) 2003-2026 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/vendor/freetype/src/base/ftadvanc.c b/vendor/freetype/src/base/ftadvanc.c index ff0fc510503..64858346666 100644 --- a/vendor/freetype/src/base/ftadvanc.c +++ b/vendor/freetype/src/base/ftadvanc.c @@ -4,7 +4,7 @@ * * Quick computation of advance widths (body). * - * Copyright (C) 2008-2025 by + * Copyright (C) 2008-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -20,6 +20,7 @@ #include #include +#include static FT_Error @@ -47,11 +48,43 @@ /* (see `FT_Load_Glyph' implementation in src/base/ftobjs.c) */ for ( nn = 0; nn < count; nn++ ) - advances[nn] = FT_MulDiv( advances[nn], scale, 64 ); + advances[nn] = FT_MulFix( 1024 * advances[nn], scale ); return FT_Err_Ok; } + /* loading (and hinting) to calculate the advances is slow */ + /* unless TrueType hdmx table is provided as an accelerator */ + static FT_Error + ft_load_advances( FT_Face face, + FT_UInt gindex, + FT_UInt count, + FT_Int32 flags, + FT_Fixed *padvances ) + { + FT_UInt nn; + FT_Error error = FT_Err_Ok; + FT_Pos factor = flags & FT_LOAD_NO_SCALE ? 1 : 1024; + FT_Pos* advance = flags & FT_LOAD_VERTICAL_LAYOUT + ? &face->glyph->advance.y + : &face->glyph->advance.x; + + + flags |= (FT_UInt32)FT_LOAD_ADVANCE_ONLY; + + for ( nn = 0; nn < count; nn++ ) + { + error = FT_Load_Glyph( face, gindex + nn, flags ); + if ( error ) + break; + + /* scale from 26.6 to 16.16, unless NO_SCALE was requested */ + padvances[nn] = *advance * factor; + } + + return error; + } + /* at the moment, we can perform fast advance retrieval only in */ /* the following cases: */ @@ -102,7 +135,10 @@ return error; } - return FT_Get_Advances( face, gindex, 1, flags, padvance ); + if ( flags & FT_ADVANCE_FLAG_FAST_ONLY ) + return FT_THROW( Unimplemented_Feature ); + + return ft_load_advances( face, gindex, 1, flags, padvance ); } @@ -115,12 +151,9 @@ FT_Int32 flags, FT_Fixed *padvances ) { - FT_Error error = FT_Err_Ok; - FT_Face_GetAdvancesFunc func; - FT_UInt num, end, nn; - FT_Int factor; + FT_UInt num, end; if ( !face ) @@ -140,6 +173,9 @@ func = face->driver->clazz->get_advances; if ( func && LOAD_ADVANCE_FAST_CHECK( face, flags ) ) { + FT_Error error; + + error = func( face, start, count, flags, padvances ); if ( !error ) return ft_face_scale_advances_( face, padvances, count, flags ); @@ -148,26 +184,10 @@ return error; } - error = FT_Err_Ok; - if ( flags & FT_ADVANCE_FLAG_FAST_ONLY ) return FT_THROW( Unimplemented_Feature ); - flags |= (FT_UInt32)FT_LOAD_ADVANCE_ONLY; - factor = ( flags & FT_LOAD_NO_SCALE ) ? 1 : 1024; - for ( nn = 0; nn < count; nn++ ) - { - error = FT_Load_Glyph( face, start + nn, flags ); - if ( error ) - break; - - /* scale from 26.6 to 16.16, unless NO_SCALE was requested */ - padvances[nn] = ( flags & FT_LOAD_VERTICAL_LAYOUT ) - ? face->glyph->advance.y * factor - : face->glyph->advance.x * factor; - } - - return error; + return ft_load_advances( face, start, count, flags, padvances ); } diff --git a/vendor/freetype/src/base/ftbase.c b/vendor/freetype/src/base/ftbase.c index 72bae31fdc6..5a5c8515982 100644 --- a/vendor/freetype/src/base/ftbase.c +++ b/vendor/freetype/src/base/ftbase.c @@ -4,7 +4,7 @@ * * Single object library component (body only). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/base/ftbase.h b/vendor/freetype/src/base/ftbase.h index 66f091165fe..952ac51d503 100644 --- a/vendor/freetype/src/base/ftbase.h +++ b/vendor/freetype/src/base/ftbase.h @@ -4,7 +4,7 @@ * * Private functions used in the `base' module (specification). * - * Copyright (C) 2008-2025 by + * Copyright (C) 2008-2026 by * David Turner, Robert Wilhelm, Werner Lemberg, and suzuki toshiya. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/base/ftbbox.c b/vendor/freetype/src/base/ftbbox.c index feccdee5dd7..4641ce27e82 100644 --- a/vendor/freetype/src/base/ftbbox.c +++ b/vendor/freetype/src/base/ftbbox.c @@ -4,7 +4,7 @@ * * FreeType bbox computation (body). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used diff --git a/vendor/freetype/src/base/ftbdf.c b/vendor/freetype/src/base/ftbdf.c index f15da313d8f..7ce76d3c484 100644 --- a/vendor/freetype/src/base/ftbdf.c +++ b/vendor/freetype/src/base/ftbdf.c @@ -4,7 +4,7 @@ * * FreeType API for accessing BDF-specific strings (body). * - * Copyright (C) 2002-2025 by + * Copyright (C) 2002-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/base/ftbitmap.c b/vendor/freetype/src/base/ftbitmap.c index 2c8e44b905d..1606cbfa090 100644 --- a/vendor/freetype/src/base/ftbitmap.c +++ b/vendor/freetype/src/base/ftbitmap.c @@ -4,7 +4,7 @@ * * FreeType utility functions for bitmaps (body). * - * Copyright (C) 2004-2025 by + * Copyright (C) 2004-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -776,18 +776,12 @@ FT_Bitmap source_bitmap; const FT_Bitmap* source; - FT_Vector source_offset; - FT_Vector target_offset; - FT_Bool free_source_bitmap = 0; FT_Bool free_target_bitmap_on_error = 0; - FT_Pos source_llx, source_lly, source_urx, source_ury; - FT_Pos target_llx, target_lly, target_urx, target_ury; - FT_Pos final_llx, final_lly, final_urx, final_ury; + FT_BBox sbx, tbx, fbx; unsigned int final_rows, final_width; - long x, y; if ( !library || !target || !source_ || !atarget_offset ) @@ -811,110 +805,32 @@ if ( !( source_->width && source_->rows ) ) return FT_Err_Ok; /* nothing to do */ - /* assure integer pixel offsets */ - source_offset.x = FT_PIX_FLOOR( source_offset_.x ); - source_offset.y = FT_PIX_FLOOR( source_offset_.y ); - target_offset.x = FT_PIX_FLOOR( atarget_offset->x ); - target_offset.y = FT_PIX_FLOOR( atarget_offset->y ); + /* get source bitmap dimensions assuming integer offsets */ + sbx.xMin = ( source_offset_.x >> 6 ); + sbx.yMin = ( source_offset_.y >> 6 ) - source_->rows; + sbx.xMax = ( source_offset_.x >> 6 ) + source_->width; + sbx.yMax = ( source_offset_.y >> 6 ); - /* get source bitmap dimensions */ - source_llx = source_offset.x; - if ( FT_LONG_MIN + (FT_Pos)( source_->rows << 6 ) + 64 > source_offset.y ) - { - FT_TRACE5(( - "FT_Bitmap_Blend: y coordinate overflow in source bitmap\n" )); - return FT_THROW( Invalid_Argument ); - } - source_lly = source_offset.y - ( source_->rows << 6 ); + FT_TRACE5(( "FT_Bitmap_Blend:\n" )); + FT_TRACE5(( " source bitmap: (%ld, %ld) -- (%ld, %ld); %u x %u\n", + sbx.xMin, sbx.yMin, sbx.xMax, sbx.yMax, + source_->width, source_->rows )); - if ( FT_LONG_MAX - (FT_Pos)( source_->width << 6 ) - 64 < source_llx ) + /* sanity check */ + if ( sbx.xMin > sbx.xMax || sbx.yMin > sbx.yMax || + source_->width > 0x7FFFU || source_->rows > 0x7FFFU ) { - FT_TRACE5(( - "FT_Bitmap_Blend: x coordinate overflow in source bitmap\n" )); + FT_TRACE5(( "FT_Bitmap_Blend: source dimension overflow\n" )); return FT_THROW( Invalid_Argument ); } - source_urx = source_llx + ( source_->width << 6 ); - source_ury = source_offset.y; - - /* get target bitmap dimensions */ - if ( target->width && target->rows ) - { - target_llx = target_offset.x; - if ( FT_LONG_MIN + (FT_Pos)( target->rows << 6 ) > target_offset.y ) - { - FT_TRACE5(( - "FT_Bitmap_Blend: y coordinate overflow in target bitmap\n" )); - return FT_THROW( Invalid_Argument ); - } - target_lly = target_offset.y - ( target->rows << 6 ); - if ( FT_LONG_MAX - (FT_Pos)( target->width << 6 ) < target_llx ) - { - FT_TRACE5(( - "FT_Bitmap_Blend: x coordinate overflow in target bitmap\n" )); - return FT_THROW( Invalid_Argument ); - } - target_urx = target_llx + ( target->width << 6 ); - target_ury = target_offset.y; - } - else + if ( !target->width || !target->rows ) { - target_llx = FT_LONG_MAX; - target_lly = FT_LONG_MAX; - target_urx = FT_LONG_MIN; - target_ury = FT_LONG_MIN; - } - - /* compute final bitmap dimensions */ - final_llx = FT_MIN( source_llx, target_llx ); - final_lly = FT_MIN( source_lly, target_lly ); - final_urx = FT_MAX( source_urx, target_urx ); - final_ury = FT_MAX( source_ury, target_ury ); - - final_width = ( final_urx - final_llx ) >> 6; - final_rows = ( final_ury - final_lly ) >> 6; - -#ifdef FT_DEBUG_LEVEL_TRACE - FT_TRACE5(( "FT_Bitmap_Blend:\n" )); - FT_TRACE5(( " source bitmap: (%ld, %ld) -- (%ld, %ld); %u x %u\n", - source_llx / 64, source_lly / 64, - source_urx / 64, source_ury / 64, - source_->width, source_->rows )); - - if ( target->width && target->rows ) - FT_TRACE5(( " target bitmap: (%ld, %ld) -- (%ld, %ld); %u x %u\n", - target_llx / 64, target_lly / 64, - target_urx / 64, target_ury / 64, - target->width, target->rows )); - else FT_TRACE5(( " target bitmap: empty\n" )); - if ( final_width && final_rows ) - FT_TRACE5(( " final bitmap: (%ld, %ld) -- (%ld, %ld); %u x %u\n", - final_llx / 64, final_lly / 64, - final_urx / 64, final_ury / 64, - final_width, final_rows )); - else - FT_TRACE5(( " final bitmap: empty\n" )); -#endif /* FT_DEBUG_LEVEL_TRACE */ - - if ( !( final_width && final_rows ) ) - return FT_Err_Ok; /* nothing to do */ - - /* for blending, set offset vector of final bitmap */ - /* temporarily to (0,0) */ - source_llx -= final_llx; - source_lly -= final_lly; + final_width = source_->width; + final_rows = source_->rows; - if ( target->width && target->rows ) - { - target_llx -= final_llx; - target_lly -= final_lly; - } - - /* set up target bitmap */ - if ( target->pixel_mode == FT_PIXEL_MODE_NONE ) - { /* create new empty bitmap */ target->width = final_width; target->rows = final_rows; @@ -922,90 +838,120 @@ target->pitch = (int)final_width * 4; target->num_grays = 256; - if ( FT_LONG_MAX / target->pitch < (int)target->rows ) - { - FT_TRACE5(( "FT_Blend_Bitmap: target bitmap too large (%u x %u)\n", - final_width, final_rows )); - return FT_THROW( Invalid_Argument ); - } - - if ( FT_ALLOC( target->buffer, target->pitch * (int)target->rows ) ) + if ( FT_ALLOC_MULT( target->buffer, target->rows, target->pitch ) ) return error; free_target_bitmap_on_error = 1; + + fbx = sbx; } - else if ( target->width != final_width || - target->rows != final_rows ) + else { - /* adjust old bitmap to enlarged size */ - int pitch, new_pitch; - - unsigned char* buffer = NULL; - - - pitch = target->pitch; + /* get target bitmap dimensions assuming integer offsets */ + tbx.xMin = ( atarget_offset->x >> 6 ); + tbx.yMin = ( atarget_offset->y >> 6 ) - target->rows; + tbx.xMax = ( atarget_offset->x >> 6 ) + target->width; + tbx.yMax = ( atarget_offset->y >> 6 ); - if ( pitch < 0 ) - pitch = -pitch; - - new_pitch = (int)final_width * 4; + FT_TRACE5(( " target bitmap: (%ld, %ld) -- (%ld, %ld); %u x %u\n", + tbx.xMin, tbx.yMin, tbx.xMax, tbx.yMax, + target->width, target->rows )); - if ( FT_LONG_MAX / new_pitch < (int)final_rows ) + /* sanity check */ + if ( tbx.xMin > tbx.xMax || tbx.yMin > tbx.yMax ) { - FT_TRACE5(( "FT_Blend_Bitmap: target bitmap too large (%u x %u)\n", - final_width, final_rows )); + FT_TRACE5(( "FT_Bitmap_Blend: targget dimension overflow\n" )); return FT_THROW( Invalid_Argument ); } - /* TODO: provide an in-buffer solution for large bitmaps */ - /* to avoid allocation of a new buffer */ - if ( FT_ALLOC( buffer, new_pitch * (int)final_rows ) ) - goto Error; - - /* copy data to new buffer */ - x = target_llx >> 6; - y = target_lly >> 6; + /* compute final bitmap dimensions */ + fbx.xMin = FT_MIN( sbx.xMin, tbx.xMin ); + fbx.yMin = FT_MIN( sbx.yMin, tbx.yMin ); + fbx.xMax = FT_MAX( sbx.xMax, tbx.xMax ); + fbx.yMax = FT_MAX( sbx.yMax, tbx.yMax ); - /* the bitmap flow is from top to bottom, */ - /* but y is measured from bottom to top */ - if ( target->pitch < 0 ) + /* sanity check */ + if ( fbx.xMin < -0x10000 || fbx.xMax >= 0x10000 || + fbx.yMin < -0x10000 || fbx.yMax >= 0x10000 ) { - /* XXX */ + FT_TRACE5(( "FT_Bitmap_Blend: final dimension overflow\n" )); + return FT_THROW( Invalid_Argument ); } - else + + final_width = fbx.xMax - fbx.xMin; + final_rows = fbx.yMax - fbx.yMin; + + /* adjust target bitmap to enlarged size */ + if ( target->width < final_width || + target->rows < final_rows ) { - unsigned char* p = - target->buffer; - unsigned char* q = - buffer + - ( final_rows - y - target->rows ) * new_pitch + - x * 4; - unsigned char* limit_p = - p + pitch * (int)target->rows; + int pitch, new_pitch; + unsigned char* buffer = NULL; - while ( p < limit_p ) + + pitch = target->pitch; + + if ( pitch < 0 ) + pitch = -pitch; + + new_pitch = (int)final_width * 4; + + /* TODO: provide an in-buffer solution for large bitmaps */ + /* to avoid allocation of a new buffer */ + if ( FT_ALLOC_MULT( buffer, final_rows, new_pitch ) ) + goto Error; + + /* copy data to new buffer */ + + /* the bitmap flow is from top to bottom, */ + /* but y is measured from bottom to top */ + if ( target->pitch < 0 ) + { + /* XXX */ + } + else { - FT_MEM_COPY( q, p, pitch ); + FT_Pos x = tbx.xMin - fbx.xMin; + FT_Pos y = tbx.yMin - fbx.yMin; + + unsigned char* p = + target->buffer; + unsigned char* q = + buffer + + ( final_rows - y - target->rows ) * new_pitch + + x * 4; + unsigned char* limit_p = + p + pitch * (int)target->rows; - p += pitch; - q += new_pitch; + + while ( p < limit_p ) + { + FT_MEM_COPY( q, p, pitch ); + + p += pitch; + q += new_pitch; + } } - } - FT_FREE( target->buffer ); + FT_FREE( target->buffer ); - target->width = final_width; - target->rows = final_rows; + target->width = final_width; + target->rows = final_rows; - if ( target->pitch < 0 ) - target->pitch = -new_pitch; - else - target->pitch = new_pitch; + if ( target->pitch < 0 ) + target->pitch = -new_pitch; + else + target->pitch = new_pitch; - target->buffer = buffer; + target->buffer = buffer; + } } + FT_TRACE5(( " final bitmap: (%ld, %ld) -- (%ld, %ld); %u x %u\n", + fbx.xMin, fbx.yMin, fbx.xMax, fbx.yMax, + final_width, final_rows )); + /* adjust source bitmap if necessary */ if ( source_->pixel_mode != FT_PIXEL_MODE_GRAY ) { @@ -1022,8 +968,6 @@ /* do blending; the code below returns pre-multiplied channels, */ /* similar to what FreeType gets from `CBDT' tables */ - x = source_llx >> 6; - y = source_lly >> 6; /* the bitmap flow is from top to bottom, */ /* but y is measured from bottom to top */ @@ -1033,6 +977,9 @@ } else { + FT_Pos x = sbx.xMin - fbx.xMin; + FT_Pos y = sbx.yMin - fbx.yMin; + unsigned char* p = source->buffer; unsigned char* q = @@ -1078,8 +1025,8 @@ } } - atarget_offset->x = final_llx; - atarget_offset->y = final_lly + ( final_rows << 6 ); + atarget_offset->x = fbx.xMin * 64; + atarget_offset->y = fbx.yMax * 64; Error: if ( error && free_target_bitmap_on_error ) diff --git a/vendor/freetype/src/base/ftcalc.c b/vendor/freetype/src/base/ftcalc.c index 7d6e12e2543..d233dba3d6b 100644 --- a/vendor/freetype/src/base/ftcalc.c +++ b/vendor/freetype/src/base/ftcalc.c @@ -4,7 +4,7 @@ * * Arithmetic computations (body). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/base/ftcid.c b/vendor/freetype/src/base/ftcid.c index 35cd0fcd2be..878c666e129 100644 --- a/vendor/freetype/src/base/ftcid.c +++ b/vendor/freetype/src/base/ftcid.c @@ -4,7 +4,7 @@ * * FreeType API for accessing CID font information. * - * Copyright (C) 2007-2025 by + * Copyright (C) 2007-2026 by * Derek Clegg and Michael Toftdal. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/base/ftcolor.c b/vendor/freetype/src/base/ftcolor.c index 90b02b7d2de..ed6b5f0599f 100644 --- a/vendor/freetype/src/base/ftcolor.c +++ b/vendor/freetype/src/base/ftcolor.c @@ -4,7 +4,7 @@ * * FreeType's glyph color management (body). * - * Copyright (C) 2018-2025 by + * Copyright (C) 2018-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/base/ftdbgmem.c b/vendor/freetype/src/base/ftdbgmem.c index 7f54e759b16..0335f142562 100644 --- a/vendor/freetype/src/base/ftdbgmem.c +++ b/vendor/freetype/src/base/ftdbgmem.c @@ -4,7 +4,7 @@ * * Memory debugger (body). * - * Copyright (C) 2001-2025 by + * Copyright (C) 2001-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/base/ftdebug.c b/vendor/freetype/src/base/ftdebug.c index c615f29e521..27091a55798 100644 --- a/vendor/freetype/src/base/ftdebug.c +++ b/vendor/freetype/src/base/ftdebug.c @@ -4,7 +4,7 @@ * * Debugging and logging component (body). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/base/fterrors.c b/vendor/freetype/src/base/fterrors.c index 27e9c5134e1..a140dab8601 100644 --- a/vendor/freetype/src/base/fterrors.c +++ b/vendor/freetype/src/base/fterrors.c @@ -4,7 +4,7 @@ * * FreeType API for error code handling. * - * Copyright (C) 2018-2025 by + * Copyright (C) 2018-2026 by * Armin Hasitzka, David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/base/ftfntfmt.c b/vendor/freetype/src/base/ftfntfmt.c index 7f4f14ffdb0..99e8c2b17df 100644 --- a/vendor/freetype/src/base/ftfntfmt.c +++ b/vendor/freetype/src/base/ftfntfmt.c @@ -4,7 +4,7 @@ * * FreeType utility file for font formats (body). * - * Copyright (C) 2002-2025 by + * Copyright (C) 2002-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/base/ftfstype.c b/vendor/freetype/src/base/ftfstype.c index 3a95752ffaa..58d5144a9e0 100644 --- a/vendor/freetype/src/base/ftfstype.c +++ b/vendor/freetype/src/base/ftfstype.c @@ -4,7 +4,7 @@ * * FreeType utility file to access FSType data (body). * - * Copyright (C) 2008-2025 by + * Copyright (C) 2008-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/base/ftgasp.c b/vendor/freetype/src/base/ftgasp.c index 2202240b57e..3c13456802e 100644 --- a/vendor/freetype/src/base/ftgasp.c +++ b/vendor/freetype/src/base/ftgasp.c @@ -4,7 +4,7 @@ * * Access of TrueType's `gasp' table (body). * - * Copyright (C) 2007-2025 by + * Copyright (C) 2007-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/base/ftgloadr.c b/vendor/freetype/src/base/ftgloadr.c index 47781bc4d5c..bd66e61d1c2 100644 --- a/vendor/freetype/src/base/ftgloadr.c +++ b/vendor/freetype/src/base/ftgloadr.c @@ -4,7 +4,7 @@ * * The FreeType glyph loader (body). * - * Copyright (C) 2002-2025 by + * Copyright (C) 2002-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/base/ftglyph.c b/vendor/freetype/src/base/ftglyph.c index 75babb1aa56..096f4d965e8 100644 --- a/vendor/freetype/src/base/ftglyph.c +++ b/vendor/freetype/src/base/ftglyph.c @@ -4,7 +4,7 @@ * * FreeType convenience functions to handle glyphs (body). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -62,7 +62,7 @@ FT_GlyphSlot slot ) { FT_BitmapGlyph glyph = (FT_BitmapGlyph)bitmap_glyph; - FT_Error error = FT_Err_Ok; + FT_Error error; FT_Library library = FT_GLYPH( glyph )->library; @@ -75,17 +75,8 @@ glyph->left = slot->bitmap_left; glyph->top = slot->bitmap_top; - /* do lazy copying whenever possible */ - if ( slot->internal->flags & FT_GLYPH_OWN_BITMAP ) - { - glyph->bitmap = slot->bitmap; - slot->internal->flags &= ~FT_GLYPH_OWN_BITMAP; - } - else - { - FT_Bitmap_Init( &glyph->bitmap ); - error = FT_Bitmap_Copy( library, &slot->bitmap, &glyph->bitmap ); - } + FT_Bitmap_Init( &glyph->bitmap ); + error = FT_Bitmap_Copy( library, &slot->bitmap, &glyph->bitmap ); Exit: return error; @@ -865,9 +856,9 @@ goto Exit; /* in case of success, copy the bitmap to the glyph bitmap */ - error = ft_bitmap_glyph_init( (FT_Glyph)bitmap, &dummy ); - if ( error ) - goto Exit; + bitmap->left = dummy.bitmap_left; + bitmap->top = dummy.bitmap_top; + bitmap->bitmap = dummy.bitmap; /* copy advance */ bitmap->root.advance = glyph->advance; diff --git a/vendor/freetype/src/base/ftgxval.c b/vendor/freetype/src/base/ftgxval.c index 1961cf4fbed..e48f582c712 100644 --- a/vendor/freetype/src/base/ftgxval.c +++ b/vendor/freetype/src/base/ftgxval.c @@ -4,7 +4,7 @@ * * FreeType API for validating TrueTypeGX/AAT tables (body). * - * Copyright (C) 2004-2025 by + * Copyright (C) 2004-2026 by * Masatake YAMATO, Redhat K.K, * David Turner, Robert Wilhelm, and Werner Lemberg. * diff --git a/vendor/freetype/src/base/ftinit.c b/vendor/freetype/src/base/ftinit.c index 37d7f87bcb9..b20289316dc 100644 --- a/vendor/freetype/src/base/ftinit.c +++ b/vendor/freetype/src/base/ftinit.c @@ -4,7 +4,7 @@ * * FreeType initialization layer (body). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/base/ftlcdfil.c b/vendor/freetype/src/base/ftlcdfil.c index d026da8b012..9adbf7518f6 100644 --- a/vendor/freetype/src/base/ftlcdfil.c +++ b/vendor/freetype/src/base/ftlcdfil.c @@ -4,7 +4,7 @@ * * FreeType API for color filtering of subpixel bitmap glyphs (body). * - * Copyright (C) 2006-2025 by + * Copyright (C) 2006-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -25,264 +25,27 @@ #ifdef FT_CONFIG_OPTION_SUBPIXEL_RENDERING -/* define USE_LEGACY to implement the legacy filter */ -#define USE_LEGACY - -#define FT_SHIFTCLAMP( x ) ( x >>= 8, (FT_Byte)( x > 255 ? 255 : x ) ) - - - /* add padding according to filter weights */ + /* add padding sufficient for a 5-tap filter, */ + /* which is 2/3 of a pixel */ FT_BASE_DEF( void ) ft_lcd_padding( FT_BBox* cbox, FT_GlyphSlot slot, FT_Render_Mode mode ) { - FT_Byte* lcd_weights; - FT_Bitmap_LcdFilterFunc lcd_filter_func; - - - /* Per-face LCD filtering takes priority if set up. */ - if ( slot->face && slot->face->internal->lcd_filter_func ) - { - lcd_weights = slot->face->internal->lcd_weights; - lcd_filter_func = slot->face->internal->lcd_filter_func; - } - else - { - lcd_weights = slot->library->lcd_weights; - lcd_filter_func = slot->library->lcd_filter_func; - } - - if ( lcd_filter_func == ft_lcd_filter_fir ) - { - if ( mode == FT_RENDER_MODE_LCD ) - { - cbox->xMin -= lcd_weights[0] ? 43 : - lcd_weights[1] ? 22 : 0; - cbox->xMax += lcd_weights[4] ? 43 : - lcd_weights[3] ? 22 : 0; - } - else if ( mode == FT_RENDER_MODE_LCD_V ) - { - cbox->yMin -= lcd_weights[0] ? 43 : - lcd_weights[1] ? 22 : 0; - cbox->yMax += lcd_weights[4] ? 43 : - lcd_weights[3] ? 22 : 0; - } - } - } - - - /* FIR filter used by the default and light filters */ - FT_BASE_DEF( void ) - ft_lcd_filter_fir( FT_Bitmap* bitmap, - FT_LcdFiveTapFilter weights ) - { - FT_UInt width = (FT_UInt)bitmap->width; - FT_UInt height = (FT_UInt)bitmap->rows; - FT_Int pitch = bitmap->pitch; - FT_Byte* origin = bitmap->buffer; - FT_Byte mode = bitmap->pixel_mode; - - - /* take care of bitmap flow */ - if ( pitch > 0 && height > 0 ) - origin += pitch * (FT_Int)( height - 1 ); - - /* horizontal in-place FIR filter */ - if ( mode == FT_PIXEL_MODE_LCD && width >= 2 ) - { - FT_Byte* line = origin; - - - /* `fir' must be at least 32 bit wide, since the sum of */ - /* the values in `weights' can exceed 0xFF */ - - for ( ; height > 0; height--, line -= pitch ) - { - FT_UInt fir[5]; - FT_UInt val, xx; - - - val = line[0]; - fir[2] = weights[2] * val; - fir[3] = weights[3] * val; - fir[4] = weights[4] * val; - - val = line[1]; - fir[1] = fir[2] + weights[1] * val; - fir[2] = fir[3] + weights[2] * val; - fir[3] = fir[4] + weights[3] * val; - fir[4] = weights[4] * val; - - for ( xx = 2; xx < width; xx++ ) - { - val = line[xx]; - fir[0] = fir[1] + weights[0] * val; - fir[1] = fir[2] + weights[1] * val; - fir[2] = fir[3] + weights[2] * val; - fir[3] = fir[4] + weights[3] * val; - fir[4] = weights[4] * val; - - line[xx - 2] = FT_SHIFTCLAMP( fir[0] ); - } - - line[xx - 2] = FT_SHIFTCLAMP( fir[1] ); - line[xx - 1] = FT_SHIFTCLAMP( fir[2] ); - } - } - - /* vertical in-place FIR filter */ - else if ( mode == FT_PIXEL_MODE_LCD_V && height >= 2 ) - { - FT_Byte* column = origin; - - - for ( ; width > 0; width--, column++ ) - { - FT_Byte* col = column; - FT_UInt fir[5]; - FT_UInt val, yy; - - - val = col[0]; - fir[2] = weights[2] * val; - fir[3] = weights[3] * val; - fir[4] = weights[4] * val; - col -= pitch; - - val = col[0]; - fir[1] = fir[2] + weights[1] * val; - fir[2] = fir[3] + weights[2] * val; - fir[3] = fir[4] + weights[3] * val; - fir[4] = weights[4] * val; - col -= pitch; - - for ( yy = 2; yy < height; yy++, col -= pitch ) - { - val = col[0]; - fir[0] = fir[1] + weights[0] * val; - fir[1] = fir[2] + weights[1] * val; - fir[2] = fir[3] + weights[2] * val; - fir[3] = fir[4] + weights[3] * val; - fir[4] = weights[4] * val; - - col[pitch * 2] = FT_SHIFTCLAMP( fir[0] ); - } - - col[pitch * 2] = FT_SHIFTCLAMP( fir[1] ); - col[pitch] = FT_SHIFTCLAMP( fir[2] ); - } - } - } - + FT_UNUSED( slot ); -#ifdef USE_LEGACY - - /* intra-pixel filter used by the legacy filter */ - static void - _ft_lcd_filter_legacy( FT_Bitmap* bitmap, - FT_Byte* weights ) - { - FT_UInt width = (FT_UInt)bitmap->width; - FT_UInt height = (FT_UInt)bitmap->rows; - FT_Int pitch = bitmap->pitch; - FT_Byte* origin = bitmap->buffer; - FT_Byte mode = bitmap->pixel_mode; - - static const unsigned int filters[3][3] = - { - { 65538 * 9/13, 65538 * 1/6, 65538 * 1/13 }, - { 65538 * 3/13, 65538 * 4/6, 65538 * 3/13 }, - { 65538 * 1/13, 65538 * 1/6, 65538 * 9/13 } - }; - - FT_UNUSED( weights ); - - - /* take care of bitmap flow */ - if ( pitch > 0 && height > 0 ) - origin += pitch * (FT_Int)( height - 1 ); - - /* horizontal in-place intra-pixel filter */ - if ( mode == FT_PIXEL_MODE_LCD && width >= 3 ) + if ( mode == FT_RENDER_MODE_LCD ) { - FT_Byte* line = origin; - - - for ( ; height > 0; height--, line -= pitch ) - { - FT_UInt xx; - - - for ( xx = 0; xx < width; xx += 3 ) - { - FT_UInt r, g, b; - FT_UInt p; - - - p = line[xx]; - r = filters[0][0] * p; - g = filters[0][1] * p; - b = filters[0][2] * p; - - p = line[xx + 1]; - r += filters[1][0] * p; - g += filters[1][1] * p; - b += filters[1][2] * p; - - p = line[xx + 2]; - r += filters[2][0] * p; - g += filters[2][1] * p; - b += filters[2][2] * p; - - line[xx] = (FT_Byte)( r / 65536 ); - line[xx + 1] = (FT_Byte)( g / 65536 ); - line[xx + 2] = (FT_Byte)( b / 65536 ); - } - } + cbox->xMin -= 43; + cbox->xMax += 43; } - else if ( mode == FT_PIXEL_MODE_LCD_V && height >= 3 ) + else if ( mode == FT_RENDER_MODE_LCD_V ) { - FT_Byte* column = origin; - - - for ( ; width > 0; width--, column++ ) - { - FT_Byte* col = column - 2 * pitch; - - - for ( ; height > 0; height -= 3, col -= 3 * pitch ) - { - FT_UInt r, g, b; - FT_UInt p; - - - p = col[0]; - r = filters[0][0] * p; - g = filters[0][1] * p; - b = filters[0][2] * p; - - p = col[pitch]; - r += filters[1][0] * p; - g += filters[1][1] * p; - b += filters[1][2] * p; - - p = col[pitch * 2]; - r += filters[2][0] * p; - g += filters[2][1] * p; - b += filters[2][2] * p; - - col[0] = (FT_Byte)( r / 65536 ); - col[pitch] = (FT_Byte)( g / 65536 ); - col[pitch * 2] = (FT_Byte)( b / 65536 ); - } - } + cbox->yMin -= 43; + cbox->yMax += 43; } } -#endif /* USE_LEGACY */ - /* documentation in ftlcdfil.h */ @@ -297,7 +60,6 @@ return FT_THROW( Invalid_Argument ); ft_memcpy( library->lcd_weights, weights, FT_LCD_FILTER_FIVE_TAPS ); - library->lcd_filter_func = ft_lcd_filter_fir; return FT_Err_Ok; } @@ -321,32 +83,23 @@ switch ( filter ) { case FT_LCD_FILTER_NONE: - library->lcd_filter_func = NULL; + ft_memset( library->lcd_weights, + 0, + FT_LCD_FILTER_FIVE_TAPS ); break; case FT_LCD_FILTER_DEFAULT: ft_memcpy( library->lcd_weights, default_weights, FT_LCD_FILTER_FIVE_TAPS ); - library->lcd_filter_func = ft_lcd_filter_fir; break; case FT_LCD_FILTER_LIGHT: ft_memcpy( library->lcd_weights, light_weights, FT_LCD_FILTER_FIVE_TAPS ); - library->lcd_filter_func = ft_lcd_filter_fir; break; -#ifdef USE_LEGACY - - case FT_LCD_FILTER_LEGACY: - case FT_LCD_FILTER_LEGACY1: - library->lcd_filter_func = _ft_lcd_filter_legacy; - break; - -#endif - default: return FT_THROW( Invalid_Argument ); } diff --git a/vendor/freetype/src/base/ftmac.c b/vendor/freetype/src/base/ftmac.c index 37d97be1838..7251a4cb962 100644 --- a/vendor/freetype/src/base/ftmac.c +++ b/vendor/freetype/src/base/ftmac.c @@ -8,7 +8,7 @@ * This file is for Mac OS X only; see builds/mac/ftoldmac.c for * classic platforms built by MPW. * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 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/vendor/freetype/src/base/ftmm.c b/vendor/freetype/src/base/ftmm.c index 9e67001406c..0d3bf3b77d8 100644 --- a/vendor/freetype/src/base/ftmm.c +++ b/vendor/freetype/src/base/ftmm.c @@ -4,7 +4,7 @@ * * Multiple Master font support (body). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/base/ftobjs.c b/vendor/freetype/src/base/ftobjs.c index cced4fed06b..fb19052a570 100644 --- a/vendor/freetype/src/base/ftobjs.c +++ b/vendor/freetype/src/base/ftobjs.c @@ -4,7 +4,7 @@ * * The FreeType private base classes (body). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -385,6 +385,7 @@ FT_Pos y_shift = 0; FT_Pos x_left, y_top; FT_Pos width, height, pitch; + FT_Bool ret; if ( slot->format == FT_GLYPH_FORMAT_SVG ) @@ -495,6 +496,20 @@ width = pbox.xMax - pbox.xMin; height = pbox.yMax - pbox.yMin; + /* Flag the width or height unsuitable for rendering. */ + /* The limit is based on the ppem value when available. */ + /* FT_Renderer modules should check the return value. */ + ret = FT_BOOL( width >= 0x10000 || height >= 0x10000 || + pbox.xMin < -0x1000000 || pbox.xMax >= 0x1000000 || + pbox.yMin < -0x1000000 || pbox.yMax >= 0x1000000 || + ( slot->face && + ( width > 10 * slot->face->size->metrics.x_ppem || + height > 10 * slot->face->size->metrics.y_ppem ) ) ); + + if ( ret ) + FT_TRACE3(( "ft_glyphslot_preset_bitmap: [%ld %ld %ld %ld]\n", + pbox.xMin, pbox.yMin, pbox.xMax, pbox.yMax )); + switch ( pixel_mode ) { case FT_PIXEL_MODE_MONO: @@ -524,15 +539,7 @@ bitmap->rows = (unsigned int)height; bitmap->pitch = pitch; - if ( pbox.xMin < -0x8000 || pbox.xMax > 0x7FFF || - pbox.yMin < -0x8000 || pbox.yMax > 0x7FFF ) - { - FT_TRACE3(( "ft_glyphslot_preset_bitmap: [%ld %ld %ld %ld]\n", - pbox.xMin, pbox.yMin, pbox.xMax, pbox.yMax )); - return 1; - } - - return 0; + return ret; } @@ -549,8 +556,7 @@ FT_BASE_DEF( FT_Error ) - ft_glyphslot_alloc_bitmap( FT_GlyphSlot slot, - FT_ULong size ) + ft_glyphslot_alloc_bitmap( FT_GlyphSlot slot ) { FT_Memory memory = FT_FACE_MEMORY( slot->face ); FT_Error error; @@ -561,7 +567,10 @@ else slot->internal->flags |= FT_GLYPH_OWN_BITMAP; - FT_MEM_ALLOC( slot->bitmap.buffer, size ); + /* dimensions must be preset */ + FT_MEM_ALLOC_MULT( slot->bitmap.buffer, + slot->bitmap.rows, + slot->bitmap.pitch ); return error; } @@ -1413,7 +1422,10 @@ if ( ( cur[0]->platform_id == TT_PLATFORM_MICROSOFT && cur[0]->encoding_id == TT_MS_ID_UCS_4 ) || ( cur[0]->platform_id == TT_PLATFORM_APPLE_UNICODE && - cur[0]->encoding_id == TT_APPLE_ID_UNICODE_32 ) ) + cur[0]->encoding_id == TT_APPLE_ID_UNICODE_32 ) || + ( cur[0]->platform_id == TT_PLATFORM_APPLE_UNICODE && + cur[0]->encoding_id == TT_APPLE_ID_FULL_UNICODE && + FT_Get_CMap_Format( cur[0] ) == 13 ) ) { face->charmap = cur[0]; return FT_Err_Ok; @@ -2798,11 +2810,6 @@ internal->refcount = 1; internal->no_stem_darkening = -1; - -#ifdef FT_CONFIG_OPTION_SUBPIXEL_RENDERING - /* Per-face filtering can only be set up by FT_Face_Properties */ - internal->lcd_filter_func = NULL; -#endif } if ( aface ) @@ -4032,18 +4039,8 @@ } else if ( properties->tag == FT_PARAM_TAG_LCD_FILTER_WEIGHTS ) { -#ifdef FT_CONFIG_OPTION_SUBPIXEL_RENDERING - if ( properties->data ) - { - ft_memcpy( face->internal->lcd_weights, - properties->data, - FT_LCD_FILTER_FIVE_TAPS ); - face->internal->lcd_filter_func = ft_lcd_filter_fir; - } -#else error = FT_THROW( Unimplemented_Feature ); goto Exit; -#endif } else if ( properties->tag == FT_PARAM_TAG_RANDOM_SEED ) { @@ -4740,121 +4737,114 @@ FT_Error error = FT_Err_Ok; FT_Face face = slot->face; FT_Renderer renderer; + FT_ListNode node = NULL; - switch ( slot->format ) + /* try to render colored glyph layers as a special case */ + if ( slot->internal->load_flags & FT_LOAD_COLOR && + slot->format == FT_GLYPH_FORMAT_OUTLINE ) { - default: - if ( slot->internal->load_flags & FT_LOAD_COLOR ) - { - FT_LayerIterator iterator; + FT_LayerIterator iterator; - FT_UInt base_glyph = slot->glyph_index; + FT_UInt base_glyph = slot->glyph_index; - FT_Bool have_layers; - FT_UInt glyph_index; - FT_UInt color_index; + FT_Bool have_layers; + FT_UInt glyph_index; + FT_UInt color_index; - /* check whether we have colored glyph layers */ - iterator.p = NULL; - have_layers = FT_Get_Color_Glyph_Layer( face, - base_glyph, - &glyph_index, - &color_index, - &iterator ); - if ( have_layers ) + iterator.p = NULL; + have_layers = FT_Get_Color_Glyph_Layer( face, + base_glyph, + &glyph_index, + &color_index, + &iterator ); + if ( have_layers ) + { + error = FT_New_GlyphSlot( face, NULL ); + if ( !error ) { - error = FT_New_GlyphSlot( face, NULL ); - if ( !error ) - { - TT_Face ttface = (TT_Face)face; - SFNT_Service sfnt = (SFNT_Service)ttface->sfnt; + TT_Face ttface = (TT_Face)face; + SFNT_Service sfnt = (SFNT_Service)ttface->sfnt; - do - { - FT_Int32 load_flags = slot->internal->load_flags; - - - /* disable the `FT_LOAD_COLOR' flag to avoid recursion */ - /* right here in this function */ - load_flags &= ~FT_LOAD_COLOR; + do + { + FT_Int32 load_flags = slot->internal->load_flags; - /* render into the new `face->glyph' glyph slot */ - load_flags |= FT_LOAD_RENDER; - error = FT_Load_Glyph( face, glyph_index, load_flags ); - if ( error ) - break; + /* disable the `FT_LOAD_COLOR' flag to avoid recursion */ + /* right here in this function */ + load_flags &= ~FT_LOAD_COLOR; - /* blend new `face->glyph' into old `slot'; */ - /* at the first call, `slot' is still empty */ - error = sfnt->colr_blend( ttface, - color_index, - slot, - face->glyph ); - if ( error ) - break; + /* render into the new `face->glyph' glyph slot */ + load_flags |= FT_LOAD_RENDER | FT_LOAD_NO_BITMAP; - } while ( FT_Get_Color_Glyph_Layer( face, - base_glyph, - &glyph_index, - &color_index, - &iterator ) ); + error = FT_Load_Glyph( face, glyph_index, load_flags ); + if ( error ) + break; - if ( !error ) - slot->format = FT_GLYPH_FORMAT_BITMAP; + /* blend new `face->glyph' into old `slot'; */ + /* at the first call, `slot' is still empty */ + error = sfnt->colr_blend( ttface, + color_index, + slot, + face->glyph ); + if ( error ) + break; - /* this call also restores `slot' as the glyph slot */ - FT_Done_GlyphSlot( face->glyph ); - } + } while ( FT_Get_Color_Glyph_Layer( face, + base_glyph, + &glyph_index, + &color_index, + &iterator ) ); if ( !error ) - return error; + slot->format = FT_GLYPH_FORMAT_BITMAP; - /* Failed to do the colored layer. Draw outline instead. */ - slot->format = FT_GLYPH_FORMAT_OUTLINE; + /* this call also restores `slot' as the glyph slot */ + FT_Done_GlyphSlot( face->glyph ); } - } - { - FT_ListNode node = NULL; + if ( !error ) + return error; + /* Failed to do the colored layer. Draw outline instead. */ + slot->format = FT_GLYPH_FORMAT_OUTLINE; + } + } - /* small shortcut for the very common case */ - if ( slot->format == FT_GLYPH_FORMAT_OUTLINE ) - { - renderer = library->cur_renderer; - node = library->renderers.head; - } - else - renderer = FT_Lookup_Renderer( library, slot->format, &node ); + /* small shortcut for the very common case */ + if ( slot->format == FT_GLYPH_FORMAT_OUTLINE ) + { + renderer = library->cur_renderer; + node = library->renderers.head; + } + else + renderer = FT_Lookup_Renderer( library, slot->format, &node ); - error = FT_ERR( Cannot_Render_Glyph ); - while ( renderer ) - { - error = renderer->render( renderer, slot, render_mode, NULL ); - if ( !error || - FT_ERR_NEQ( error, Cannot_Render_Glyph ) ) - break; - - /* FT_Err_Cannot_Render_Glyph is returned if the render mode */ - /* is unsupported by the current renderer for this glyph image */ - /* format. */ - - /* now, look for another renderer that supports the same */ - /* format. */ - renderer = FT_Lookup_Renderer( library, slot->format, &node ); - } + error = FT_ERR( Cannot_Render_Glyph ); + while ( renderer ) + { + error = renderer->render( renderer, slot, render_mode, NULL ); + if ( !error || + FT_ERR_NEQ( error, Cannot_Render_Glyph ) ) + break; - /* it is not an error if we cannot render a bitmap glyph */ - if ( FT_ERR_EQ( error, Cannot_Render_Glyph ) && - slot->format == FT_GLYPH_FORMAT_BITMAP ) - error = FT_Err_Ok; - } + /* FT_Err_Cannot_Render_Glyph is returned if the render mode */ + /* is unsupported by the current renderer for this glyph image */ + /* format. */ + + /* now, look for another renderer that supports the same */ + /* format. */ + renderer = FT_Lookup_Renderer( library, slot->format, &node ); } + /* it is not an error if we cannot render a bitmap glyph */ + if ( FT_ERR_EQ( error, Cannot_Render_Glyph ) && + slot->format == FT_GLYPH_FORMAT_BITMAP ) + error = FT_Err_Ok; + #ifdef FT_DEBUG_LEVEL_TRACE #undef FT_COMPONENT diff --git a/vendor/freetype/src/base/ftotval.c b/vendor/freetype/src/base/ftotval.c index 503126f4b6e..ae14113612f 100644 --- a/vendor/freetype/src/base/ftotval.c +++ b/vendor/freetype/src/base/ftotval.c @@ -4,7 +4,7 @@ * * FreeType API for validating OpenType tables (body). * - * Copyright (C) 2004-2025 by + * Copyright (C) 2004-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/base/ftoutln.c b/vendor/freetype/src/base/ftoutln.c index 8a15b03eb83..a0a1549adaa 100644 --- a/vendor/freetype/src/base/ftoutln.c +++ b/vendor/freetype/src/base/ftoutln.c @@ -4,7 +4,7 @@ * * FreeType outline management (body). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/base/ftpatent.c b/vendor/freetype/src/base/ftpatent.c index 664bc34deea..3f149eb607f 100644 --- a/vendor/freetype/src/base/ftpatent.c +++ b/vendor/freetype/src/base/ftpatent.c @@ -5,7 +5,7 @@ * FreeType API for checking patented TrueType bytecode instructions * (body). Obsolete, retained for backward compatibility. * - * Copyright (C) 2007-2025 by + * Copyright (C) 2007-2026 by * David Turner. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/base/ftpfr.c b/vendor/freetype/src/base/ftpfr.c index f2af1fecc26..f95808201ab 100644 --- a/vendor/freetype/src/base/ftpfr.c +++ b/vendor/freetype/src/base/ftpfr.c @@ -4,7 +4,7 @@ * * FreeType API for accessing PFR-specific data (body). * - * Copyright (C) 2002-2025 by + * Copyright (C) 2002-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/base/ftpsprop.c b/vendor/freetype/src/base/ftpsprop.c index 0631cd63f62..13f6c5102cc 100644 --- a/vendor/freetype/src/base/ftpsprop.c +++ b/vendor/freetype/src/base/ftpsprop.c @@ -5,7 +5,7 @@ * Get and set properties of PostScript drivers (body). * See `ftdriver.h' for available properties. * - * Copyright (C) 2017-2025 by + * Copyright (C) 2017-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/base/ftrfork.c b/vendor/freetype/src/base/ftrfork.c index 1e241f4f95b..fbb8ace7173 100644 --- a/vendor/freetype/src/base/ftrfork.c +++ b/vendor/freetype/src/base/ftrfork.c @@ -4,7 +4,7 @@ * * Embedded resource forks accessor (body). * - * Copyright (C) 2004-2025 by + * Copyright (C) 2004-2026 by * Masatake YAMATO and Redhat K.K. * * FT_Raccess_Get_HeaderInfo() and raccess_guess_darwin_hfsplus() are diff --git a/vendor/freetype/src/base/ftsnames.c b/vendor/freetype/src/base/ftsnames.c index 34a67a148fc..d8274cccd40 100644 --- a/vendor/freetype/src/base/ftsnames.c +++ b/vendor/freetype/src/base/ftsnames.c @@ -7,7 +7,7 @@ * * This is _not_ used to retrieve glyph names! * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/base/ftstream.c b/vendor/freetype/src/base/ftstream.c index c04a0506def..b08a1a9b658 100644 --- a/vendor/freetype/src/base/ftstream.c +++ b/vendor/freetype/src/base/ftstream.c @@ -4,7 +4,7 @@ * * I/O stream support (body). * - * Copyright (C) 2000-2025 by + * Copyright (C) 2000-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/base/ftstroke.c b/vendor/freetype/src/base/ftstroke.c index 591f18eaa83..79c48999ea3 100644 --- a/vendor/freetype/src/base/ftstroke.c +++ b/vendor/freetype/src/base/ftstroke.c @@ -4,7 +4,7 @@ * * FreeType path stroker (body). * - * Copyright (C) 2002-2025 by + * Copyright (C) 2002-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -656,12 +656,11 @@ FT_UInt num_contours = 0; FT_UInt count = border->num_points; - FT_Vector* point = border->points; FT_Byte* tags = border->tags; FT_Int in_contour = 0; - for ( ; count > 0; count--, num_points++, point++, tags++ ) + for ( ; count > 0; count--, num_points++, tags++ ) { if ( tags[0] & FT_STROKE_TAG_BEGIN ) { @@ -693,6 +692,7 @@ Fail: num_points = 0; num_contours = 0; + error = FT_THROW( Invalid_Outline ); goto Exit; } @@ -2251,7 +2251,7 @@ FT_Stroker stroker, FT_Bool destroy ) { - FT_Error error = FT_ERR( Invalid_Argument ); + FT_Error error = FT_THROW( Invalid_Argument ); FT_Glyph glyph = NULL; @@ -2283,7 +2283,9 @@ if ( error ) goto Fail; - FT_Stroker_GetCounts( stroker, &num_points, &num_contours ); + error = FT_Stroker_GetCounts( stroker, &num_points, &num_contours ); + if ( error ) + goto Fail; FT_Outline_Done( glyph->library, outline ); @@ -2326,7 +2328,7 @@ FT_Bool inside, FT_Bool destroy ) { - FT_Error error = FT_ERR( Invalid_Argument ); + FT_Error error = FT_THROW( Invalid_Argument ); FT_Glyph glyph = NULL; diff --git a/vendor/freetype/src/base/ftsynth.c b/vendor/freetype/src/base/ftsynth.c index 08bc1742202..23960eda3a9 100644 --- a/vendor/freetype/src/base/ftsynth.c +++ b/vendor/freetype/src/base/ftsynth.c @@ -4,7 +4,7 @@ * * FreeType synthesizing code for emboldening and slanting (body). * - * Copyright (C) 2000-2025 by + * Copyright (C) 2000-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/base/ftsystem.c b/vendor/freetype/src/base/ftsystem.c index 186119d5581..be9159f6141 100644 --- a/vendor/freetype/src/base/ftsystem.c +++ b/vendor/freetype/src/base/ftsystem.c @@ -4,7 +4,7 @@ * * ANSI-specific FreeType low-level system interface (body). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/base/fttrigon.c b/vendor/freetype/src/base/fttrigon.c index 29eff639c51..baa47eba084 100644 --- a/vendor/freetype/src/base/fttrigon.c +++ b/vendor/freetype/src/base/fttrigon.c @@ -4,7 +4,7 @@ * * FreeType trigonometric functions (body). * - * Copyright (C) 2001-2025 by + * Copyright (C) 2001-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/base/fttype1.c b/vendor/freetype/src/base/fttype1.c index 77978df674d..f9a46801f3c 100644 --- a/vendor/freetype/src/base/fttype1.c +++ b/vendor/freetype/src/base/fttype1.c @@ -4,7 +4,7 @@ * * FreeType utility file for PS names support (body). * - * Copyright (C) 2002-2025 by + * Copyright (C) 2002-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/base/ftutil.c b/vendor/freetype/src/base/ftutil.c index 0b7382627c5..5d8fc7b9bf3 100644 --- a/vendor/freetype/src/base/ftutil.c +++ b/vendor/freetype/src/base/ftutil.c @@ -4,7 +4,7 @@ * * FreeType utility file for memory and list management (body). * - * Copyright (C) 2002-2025 by + * Copyright (C) 2002-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -424,11 +424,10 @@ while ( cur ) { FT_ListNode next = cur->next; - void* data = cur->data; if ( destroy ) - destroy( memory, data, user ); + destroy( memory, cur->data, user ); FT_FREE( cur ); cur = next; diff --git a/vendor/freetype/src/base/ftver.rc b/vendor/freetype/src/base/ftver.rc index 25bbeaf3c10..8938831d184 100644 --- a/vendor/freetype/src/base/ftver.rc +++ b/vendor/freetype/src/base/ftver.rc @@ -4,7 +4,7 @@ /* */ /* FreeType VERSIONINFO resource for Windows DLLs. */ /* */ -/* Copyright (C) 2018-2025 by */ +/* Copyright (C) 2018-2026 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -18,8 +18,8 @@ #include -#define FT_VERSION 2,14,1,0 -#define FT_VERSION_STR "2.14.1" +#define FT_VERSION 2,14,3,0 +#define FT_VERSION_STR "2.14.3" VS_VERSION_INFO VERSIONINFO FILEVERSION FT_VERSION @@ -45,7 +45,7 @@ BEGIN VALUE "FileVersion", FT_VERSION_STR VALUE "ProductName", "FreeType" VALUE "ProductVersion", FT_VERSION_STR - VALUE "LegalCopyright", L"\x00A9 2000-2025 The FreeType Project freetype.org. All rights reserved." + VALUE "LegalCopyright", L"\x00A9 2000-2026 The FreeType Project freetype.org. All rights reserved." VALUE "InternalName", "freetype" VALUE "OriginalFilename", FT_FILENAME END diff --git a/vendor/freetype/src/base/ftwinfnt.c b/vendor/freetype/src/base/ftwinfnt.c index 256b58005e9..038451ae095 100644 --- a/vendor/freetype/src/base/ftwinfnt.c +++ b/vendor/freetype/src/base/ftwinfnt.c @@ -4,7 +4,7 @@ * * FreeType API for accessing Windows FNT specific info (body). * - * Copyright (C) 2003-2025 by + * Copyright (C) 2003-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/base/rules.mk b/vendor/freetype/src/base/rules.mk index a1a95726ad6..e806066485f 100644 --- a/vendor/freetype/src/base/rules.mk +++ b/vendor/freetype/src/base/rules.mk @@ -3,7 +3,7 @@ # -# Copyright (C) 1996-2025 by +# Copyright (C) 1996-2026 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/vendor/freetype/src/bdf/bdfdrivr.c b/vendor/freetype/src/bdf/bdfdrivr.c index f57bb0007ef..94549b69224 100644 --- a/vendor/freetype/src/bdf/bdfdrivr.c +++ b/vendor/freetype/src/bdf/bdfdrivr.c @@ -800,7 +800,6 @@ THE SOFTWARE. FT_Error error = FT_Err_Ok; FT_Bitmap* bitmap = &slot->bitmap; bdf_glyph_t glyph; - int bpp = bdf->bdffont->bpp; FT_UNUSED( load_flags ); @@ -839,7 +838,7 @@ THE SOFTWARE. /* we can simply point to it */ ft_glyphslot_set_bitmap( slot, glyph.bitmap ); - switch ( bpp ) + switch ( bdf->bdffont->bpp ) { case 1: bitmap->pixel_mode = FT_PIXEL_MODE_MONO; diff --git a/vendor/freetype/src/bzip2/ftbzip2.c b/vendor/freetype/src/bzip2/ftbzip2.c index 16d158d72d7..6326c71ac11 100644 --- a/vendor/freetype/src/bzip2/ftbzip2.c +++ b/vendor/freetype/src/bzip2/ftbzip2.c @@ -8,7 +8,7 @@ * parse compressed PCF fonts, as found with many X11 server * distributions. * - * Copyright (C) 2010-2025 by + * Copyright (C) 2010-2026 by * Joel Klinghed. * * based on `src/gzip/ftgzip.c' diff --git a/vendor/freetype/src/bzip2/rules.mk b/vendor/freetype/src/bzip2/rules.mk index 59fefb22761..3adf3065333 100644 --- a/vendor/freetype/src/bzip2/rules.mk +++ b/vendor/freetype/src/bzip2/rules.mk @@ -2,7 +2,7 @@ # FreeType 2 BZIP2 support configuration rules # -# Copyright (C) 2010-2025 by +# Copyright (C) 2010-2026 by # Joel Klinghed. # # based on `src/lzw/rules.mk' diff --git a/vendor/freetype/src/cache/ftcache.c b/vendor/freetype/src/cache/ftcache.c index afdf1e4f5bf..95f784370d1 100644 --- a/vendor/freetype/src/cache/ftcache.c +++ b/vendor/freetype/src/cache/ftcache.c @@ -4,7 +4,7 @@ * * The FreeType Caching sub-system (body only). * - * Copyright (C) 2000-2025 by + * Copyright (C) 2000-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/cache/ftcbasic.c b/vendor/freetype/src/cache/ftcbasic.c index e7cf2605fe5..81c5ded4737 100644 --- a/vendor/freetype/src/cache/ftcbasic.c +++ b/vendor/freetype/src/cache/ftcbasic.c @@ -4,7 +4,7 @@ * * The FreeType basic cache interface (body). * - * Copyright (C) 2003-2025 by + * Copyright (C) 2003-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/cache/ftccache.c b/vendor/freetype/src/cache/ftccache.c index 91227147a89..28f3f3e7a01 100644 --- a/vendor/freetype/src/cache/ftccache.c +++ b/vendor/freetype/src/cache/ftccache.c @@ -4,7 +4,7 @@ * * The FreeType internal cache interface (body). * - * Copyright (C) 2000-2025 by + * Copyright (C) 2000-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/cache/ftccache.h b/vendor/freetype/src/cache/ftccache.h index 20c2638e72a..55ecf5e70cb 100644 --- a/vendor/freetype/src/cache/ftccache.h +++ b/vendor/freetype/src/cache/ftccache.h @@ -4,7 +4,7 @@ * * FreeType internal cache interface (specification). * - * Copyright (C) 2000-2025 by + * Copyright (C) 2000-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/cache/ftccback.h b/vendor/freetype/src/cache/ftccback.h index 1af2f17f97b..f013833e664 100644 --- a/vendor/freetype/src/cache/ftccback.h +++ b/vendor/freetype/src/cache/ftccback.h @@ -4,7 +4,7 @@ * * Callback functions of the caching sub-system (specification only). * - * Copyright (C) 2004-2025 by + * Copyright (C) 2004-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/cache/ftccmap.c b/vendor/freetype/src/cache/ftccmap.c index e3a4ec24291..758468fb459 100644 --- a/vendor/freetype/src/cache/ftccmap.c +++ b/vendor/freetype/src/cache/ftccmap.c @@ -4,7 +4,7 @@ * * FreeType CharMap cache (body) * - * Copyright (C) 2000-2025 by + * Copyright (C) 2000-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/cache/ftcerror.h b/vendor/freetype/src/cache/ftcerror.h index f714491c754..41491c2f46a 100644 --- a/vendor/freetype/src/cache/ftcerror.h +++ b/vendor/freetype/src/cache/ftcerror.h @@ -4,7 +4,7 @@ * * Caching sub-system error codes (specification only). * - * Copyright (C) 2001-2025 by + * Copyright (C) 2001-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/cache/ftcglyph.c b/vendor/freetype/src/cache/ftcglyph.c index 703c69d91f6..3c291ce50fb 100644 --- a/vendor/freetype/src/cache/ftcglyph.c +++ b/vendor/freetype/src/cache/ftcglyph.c @@ -4,7 +4,7 @@ * * FreeType Glyph Image (FT_Glyph) cache (body). * - * Copyright (C) 2000-2025 by + * Copyright (C) 2000-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/cache/ftcglyph.h b/vendor/freetype/src/cache/ftcglyph.h index b728b636e49..1777a17e53f 100644 --- a/vendor/freetype/src/cache/ftcglyph.h +++ b/vendor/freetype/src/cache/ftcglyph.h @@ -4,7 +4,7 @@ * * FreeType abstract glyph cache (specification). * - * Copyright (C) 2000-2025 by + * Copyright (C) 2000-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/cache/ftcimage.c b/vendor/freetype/src/cache/ftcimage.c index 05d393dcd95..b028bf8e457 100644 --- a/vendor/freetype/src/cache/ftcimage.c +++ b/vendor/freetype/src/cache/ftcimage.c @@ -4,7 +4,7 @@ * * FreeType Image cache (body). * - * Copyright (C) 2000-2025 by + * Copyright (C) 2000-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/cache/ftcimage.h b/vendor/freetype/src/cache/ftcimage.h index 8eb14826248..d48c54c51b8 100644 --- a/vendor/freetype/src/cache/ftcimage.h +++ b/vendor/freetype/src/cache/ftcimage.h @@ -4,7 +4,7 @@ * * FreeType Generic Image cache (specification) * - * Copyright (C) 2000-2025 by + * Copyright (C) 2000-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/cache/ftcmanag.c b/vendor/freetype/src/cache/ftcmanag.c index 4bfb389bb77..4c1d85ab1f0 100644 --- a/vendor/freetype/src/cache/ftcmanag.c +++ b/vendor/freetype/src/cache/ftcmanag.c @@ -4,7 +4,7 @@ * * FreeType Cache Manager (body). * - * Copyright (C) 2000-2025 by + * Copyright (C) 2000-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/cache/ftcmanag.h b/vendor/freetype/src/cache/ftcmanag.h index c691aebb390..22d56d7eb84 100644 --- a/vendor/freetype/src/cache/ftcmanag.h +++ b/vendor/freetype/src/cache/ftcmanag.h @@ -4,7 +4,7 @@ * * FreeType Cache Manager (specification). * - * Copyright (C) 2000-2025 by + * Copyright (C) 2000-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/cache/ftcmru.c b/vendor/freetype/src/cache/ftcmru.c index 2a5f2f3aa51..e8dc9052daa 100644 --- a/vendor/freetype/src/cache/ftcmru.c +++ b/vendor/freetype/src/cache/ftcmru.c @@ -4,7 +4,7 @@ * * FreeType MRU support (body). * - * Copyright (C) 2003-2025 by + * Copyright (C) 2003-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/cache/ftcmru.h b/vendor/freetype/src/cache/ftcmru.h index 18e7a840ea6..962d0886875 100644 --- a/vendor/freetype/src/cache/ftcmru.h +++ b/vendor/freetype/src/cache/ftcmru.h @@ -4,7 +4,7 @@ * * Simple MRU list-cache (specification). * - * Copyright (C) 2000-2025 by + * Copyright (C) 2000-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/cache/ftcsbits.c b/vendor/freetype/src/cache/ftcsbits.c index 6857f82b411..7f6a9b1b4ed 100644 --- a/vendor/freetype/src/cache/ftcsbits.c +++ b/vendor/freetype/src/cache/ftcsbits.c @@ -4,7 +4,7 @@ * * FreeType sbits manager (body). * - * Copyright (C) 2000-2025 by + * Copyright (C) 2000-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/cache/ftcsbits.h b/vendor/freetype/src/cache/ftcsbits.h index 20ccb13b73d..669e77cb309 100644 --- a/vendor/freetype/src/cache/ftcsbits.h +++ b/vendor/freetype/src/cache/ftcsbits.h @@ -4,7 +4,7 @@ * * A small-bitmap cache (specification). * - * Copyright (C) 2000-2025 by + * Copyright (C) 2000-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/cache/rules.mk b/vendor/freetype/src/cache/rules.mk index ec7b2df507c..6f56da94208 100644 --- a/vendor/freetype/src/cache/rules.mk +++ b/vendor/freetype/src/cache/rules.mk @@ -3,7 +3,7 @@ # -# Copyright (C) 2000-2025 by +# Copyright (C) 2000-2026 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/vendor/freetype/src/cff/cff.c b/vendor/freetype/src/cff/cff.c index 01d641ff98f..8125c104d1f 100644 --- a/vendor/freetype/src/cff/cff.c +++ b/vendor/freetype/src/cff/cff.c @@ -4,7 +4,7 @@ * * FreeType OpenType driver component (body only). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/cff/cffcmap.c b/vendor/freetype/src/cff/cffcmap.c index cb69abdb90f..75e2420d99e 100644 --- a/vendor/freetype/src/cff/cffcmap.c +++ b/vendor/freetype/src/cff/cffcmap.c @@ -4,7 +4,7 @@ * * CFF character mapping table (cmap) support (body). * - * Copyright (C) 2002-2025 by + * Copyright (C) 2002-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/cff/cffcmap.h b/vendor/freetype/src/cff/cffcmap.h index 60e16d94875..e812e7a89e5 100644 --- a/vendor/freetype/src/cff/cffcmap.h +++ b/vendor/freetype/src/cff/cffcmap.h @@ -4,7 +4,7 @@ * * CFF character mapping table (cmap) support (specification). * - * Copyright (C) 2002-2025 by + * Copyright (C) 2002-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/cff/cffdrivr.c b/vendor/freetype/src/cff/cffdrivr.c index 0079ddd1950..18c7b879048 100644 --- a/vendor/freetype/src/cff/cffdrivr.c +++ b/vendor/freetype/src/cff/cffdrivr.c @@ -4,7 +4,7 @@ * * OpenType font driver implementation (body). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, Werner Lemberg, and Dominik Röttsches. * * This file is part of the FreeType project, and may only be used, @@ -456,8 +456,8 @@ dict->weight ); font_info->italic_angle = dict->italic_angle; font_info->is_fixed_pitch = dict->is_fixed_pitch; - font_info->underline_position = (FT_Short)dict->underline_position; - font_info->underline_thickness = (FT_UShort)dict->underline_thickness; + font_info->underline_position = dict->underline_position; + font_info->underline_thickness = dict->underline_thickness; cff->font_info = font_info; } diff --git a/vendor/freetype/src/cff/cffdrivr.h b/vendor/freetype/src/cff/cffdrivr.h index 52a1e727a6a..2f3c58b67d7 100644 --- a/vendor/freetype/src/cff/cffdrivr.h +++ b/vendor/freetype/src/cff/cffdrivr.h @@ -4,7 +4,7 @@ * * High-level OpenType driver interface (specification). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/cff/cfferrs.h b/vendor/freetype/src/cff/cfferrs.h index 7491886c7be..ca1158c0dfd 100644 --- a/vendor/freetype/src/cff/cfferrs.h +++ b/vendor/freetype/src/cff/cfferrs.h @@ -4,7 +4,7 @@ * * CFF error codes (specification only). * - * Copyright (C) 2001-2025 by + * Copyright (C) 2001-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/cff/cffgload.c b/vendor/freetype/src/cff/cffgload.c index e8bab3c1e33..0c986930cee 100644 --- a/vendor/freetype/src/cff/cffgload.c +++ b/vendor/freetype/src/cff/cffgload.c @@ -4,7 +4,7 @@ * * OpenType Glyph Loader (body). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/cff/cffgload.h b/vendor/freetype/src/cff/cffgload.h index 662bb7cff53..eb4b5f30b5e 100644 --- a/vendor/freetype/src/cff/cffgload.h +++ b/vendor/freetype/src/cff/cffgload.h @@ -4,7 +4,7 @@ * * OpenType Glyph Loader (specification). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/cff/cffload.c b/vendor/freetype/src/cff/cffload.c index 326f885056f..9d067cfeeb8 100644 --- a/vendor/freetype/src/cff/cffload.c +++ b/vendor/freetype/src/cff/cffload.c @@ -4,7 +4,7 @@ * * OpenType and CFF data/program tables loader (body). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -2014,8 +2014,8 @@ /* set defaults */ FT_ZERO( top ); - top->underline_position = -( 100L << 16 ); - top->underline_thickness = 50L << 16; + top->underline_position = -100; + top->underline_thickness = 50; top->charstring_type = 2; top->font_matrix.xx = 0x10000L; top->font_matrix.yy = 0x10000L; diff --git a/vendor/freetype/src/cff/cffload.h b/vendor/freetype/src/cff/cffload.h index fdc132c8f3f..ab02ca2d7f6 100644 --- a/vendor/freetype/src/cff/cffload.h +++ b/vendor/freetype/src/cff/cffload.h @@ -4,7 +4,7 @@ * * OpenType & CFF data/program tables loader (specification). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/cff/cffobjs.c b/vendor/freetype/src/cff/cffobjs.c index 1aeb908f4a1..c6ba35e2734 100644 --- a/vendor/freetype/src/cff/cffobjs.c +++ b/vendor/freetype/src/cff/cffobjs.c @@ -4,7 +4,7 @@ * * OpenType objects manager (body). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -16,7 +16,6 @@ */ - #include #include #include @@ -45,6 +44,7 @@ #define CFF_fixedToInt( x ) \ ( (FT_Short)( ( (x) + 0x8000U ) >> 16 ) ) + /************************************************************************** * * The macro FT_COMPONENT is used in trace mode. It is an implicit @@ -846,10 +846,8 @@ cffface->height = (FT_Short)( cffface->ascender - cffface->descender ); - cffface->underline_position = - (FT_Short)( dict->underline_position >> 16 ); - cffface->underline_thickness = - (FT_Short)( dict->underline_thickness >> 16 ); + cffface->underline_position = (FT_Short)dict->underline_position; + cffface->underline_thickness = (FT_Short)dict->underline_thickness; /* retrieve font family & style name */ if ( dict->family_name ) diff --git a/vendor/freetype/src/cff/cffobjs.h b/vendor/freetype/src/cff/cffobjs.h index 982dcd64dd0..c6ab805c5be 100644 --- a/vendor/freetype/src/cff/cffobjs.h +++ b/vendor/freetype/src/cff/cffobjs.h @@ -4,7 +4,7 @@ * * OpenType objects manager (specification). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -20,8 +20,6 @@ #define CFFOBJS_H_ - - FT_BEGIN_HEADER diff --git a/vendor/freetype/src/cff/cffparse.c b/vendor/freetype/src/cff/cffparse.c index 864b2490b3b..fadc3258c96 100644 --- a/vendor/freetype/src/cff/cffparse.c +++ b/vendor/freetype/src/cff/cffparse.c @@ -4,7 +4,7 @@ * * CFF token stream parser (body) * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/cff/cffparse.h b/vendor/freetype/src/cff/cffparse.h index 47cceb1a4a0..1daf548cbcc 100644 --- a/vendor/freetype/src/cff/cffparse.h +++ b/vendor/freetype/src/cff/cffparse.h @@ -4,7 +4,7 @@ * * CFF token stream parser (specification) * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/cff/cfftoken.h b/vendor/freetype/src/cff/cfftoken.h index cc5aaa2867a..0eadc7118fb 100644 --- a/vendor/freetype/src/cff/cfftoken.h +++ b/vendor/freetype/src/cff/cfftoken.h @@ -4,7 +4,7 @@ * * CFF token definitions (specification only). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -30,8 +30,8 @@ CFF_FIELD_STRING ( 4, weight, "Weight" ) CFF_FIELD_BOOL ( 0x101, is_fixed_pitch, "isFixedPitch" ) CFF_FIELD_FIXED ( 0x102, italic_angle, "ItalicAngle" ) - CFF_FIELD_FIXED ( 0x103, underline_position, "UnderlinePosition" ) - CFF_FIELD_FIXED ( 0x104, underline_thickness, "UnderlineThickness" ) + CFF_FIELD_NUM ( 0x103, underline_position, "UnderlinePosition" ) + CFF_FIELD_NUM ( 0x104, underline_thickness, "UnderlineThickness" ) CFF_FIELD_NUM ( 0x105, paint_type, "PaintType" ) CFF_FIELD_NUM ( 0x106, charstring_type, "CharstringType" ) CFF_FIELD_CALLBACK( 0x107, font_matrix, "FontMatrix" ) diff --git a/vendor/freetype/src/cff/module.mk b/vendor/freetype/src/cff/module.mk index e02e5019407..14dda50d666 100644 --- a/vendor/freetype/src/cff/module.mk +++ b/vendor/freetype/src/cff/module.mk @@ -3,7 +3,7 @@ # -# Copyright (C) 1996-2025 by +# Copyright (C) 1996-2026 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/vendor/freetype/src/cff/rules.mk b/vendor/freetype/src/cff/rules.mk index f2b7ce45b4e..f3a729db5dd 100644 --- a/vendor/freetype/src/cff/rules.mk +++ b/vendor/freetype/src/cff/rules.mk @@ -3,7 +3,7 @@ # -# Copyright (C) 1996-2025 by +# Copyright (C) 1996-2026 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/vendor/freetype/src/cid/ciderrs.h b/vendor/freetype/src/cid/ciderrs.h index 1591979d370..00497b796b3 100644 --- a/vendor/freetype/src/cid/ciderrs.h +++ b/vendor/freetype/src/cid/ciderrs.h @@ -4,7 +4,7 @@ * * CID error codes (specification only). * - * Copyright (C) 2001-2025 by + * Copyright (C) 2001-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/cid/cidgload.c b/vendor/freetype/src/cid/cidgload.c index 249ede5757d..cc68b4a9600 100644 --- a/vendor/freetype/src/cid/cidgload.c +++ b/vendor/freetype/src/cid/cidgload.c @@ -4,7 +4,7 @@ * * CID-keyed Type1 Glyph Loader (body). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -193,6 +193,37 @@ p = (FT_Byte*)glyph_data.pointer; fd_select = cid_get_offset( &p, cid->fd_bytes ); + if ( fd_select >= cid->num_dicts ) + { + /* + * fd_select == 0xFF is often used to indicate that the CID + * has no charstring to be rendered, similar to GID = 0xFFFF + * in TrueType fonts. + */ + if ( ( cid->fd_bytes == 1 && fd_select == 0xFFU ) || + ( cid->fd_bytes == 2 && fd_select == 0xFFFFU ) ) + { + FT_TRACE1(( "cid_load_glyph: fail for glyph index %u:\n", + glyph_index )); + FT_TRACE1(( " FD number %lu is the maximum\n", + fd_select )); + FT_TRACE1(( " integer fitting into %u byte%s\n", + cid->fd_bytes, cid->fd_bytes == 1 ? "" : "s" )); + } + else + { + FT_TRACE0(( "cid_load_glyph: fail for glyph index %u:\n", + glyph_index )); + FT_TRACE0(( " FD number %lu is larger\n", + fd_select )); + FT_TRACE0(( " than number of dictionaries (%u)\n", + cid->num_dicts )); + } + + error = FT_THROW( Invalid_Offset ); + goto Exit; + } + glyph_length = glyph_data.length - cid->fd_bytes; if ( !FT_QALLOC( charstring, glyph_length ) ) diff --git a/vendor/freetype/src/cid/cidgload.h b/vendor/freetype/src/cid/cidgload.h index cef96073ded..51b16c75944 100644 --- a/vendor/freetype/src/cid/cidgload.h +++ b/vendor/freetype/src/cid/cidgload.h @@ -4,7 +4,7 @@ * * OpenType Glyph Loader (specification). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/cid/cidload.c b/vendor/freetype/src/cid/cidload.c index bb1bf13e221..1a0e6b1561e 100644 --- a/vendor/freetype/src/cid/cidload.c +++ b/vendor/freetype/src/cid/cidload.c @@ -4,7 +4,7 @@ * * CID-keyed Type1 font loader (body). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/cid/cidload.h b/vendor/freetype/src/cid/cidload.h index 659dd0e378c..cef7d1c9a6a 100644 --- a/vendor/freetype/src/cid/cidload.h +++ b/vendor/freetype/src/cid/cidload.h @@ -4,7 +4,7 @@ * * CID-keyed Type1 font loader (specification). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/cid/cidobjs.c b/vendor/freetype/src/cid/cidobjs.c index 634bbf2f135..2d11609598b 100644 --- a/vendor/freetype/src/cid/cidobjs.c +++ b/vendor/freetype/src/cid/cidobjs.c @@ -4,7 +4,7 @@ * * CID objects manager (body). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/cid/cidobjs.h b/vendor/freetype/src/cid/cidobjs.h index 800268efa2f..40664623127 100644 --- a/vendor/freetype/src/cid/cidobjs.h +++ b/vendor/freetype/src/cid/cidobjs.h @@ -4,7 +4,7 @@ * * CID objects manager (specification). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/cid/cidparse.c b/vendor/freetype/src/cid/cidparse.c index 4d1ba335960..fb936bd48d9 100644 --- a/vendor/freetype/src/cid/cidparse.c +++ b/vendor/freetype/src/cid/cidparse.c @@ -4,7 +4,7 @@ * * CID-keyed Type1 parser (body). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/cid/cidparse.h b/vendor/freetype/src/cid/cidparse.h index 6ae2e542394..555245230b9 100644 --- a/vendor/freetype/src/cid/cidparse.h +++ b/vendor/freetype/src/cid/cidparse.h @@ -4,7 +4,7 @@ * * CID-keyed Type1 parser (specification). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/cid/cidriver.c b/vendor/freetype/src/cid/cidriver.c index a3a587c57bf..ab188776e2f 100644 --- a/vendor/freetype/src/cid/cidriver.c +++ b/vendor/freetype/src/cid/cidriver.c @@ -4,7 +4,7 @@ * * CID driver interface (body). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/cid/cidriver.h b/vendor/freetype/src/cid/cidriver.h index 55d0b8a0d9b..a4ddccec808 100644 --- a/vendor/freetype/src/cid/cidriver.h +++ b/vendor/freetype/src/cid/cidriver.h @@ -4,7 +4,7 @@ * * High-level CID driver interface (specification). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/cid/cidtoken.h b/vendor/freetype/src/cid/cidtoken.h index 25ba74fed94..22136310cdf 100644 --- a/vendor/freetype/src/cid/cidtoken.h +++ b/vendor/freetype/src/cid/cidtoken.h @@ -4,7 +4,7 @@ * * CID token definitions (specification only). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -47,7 +47,7 @@ T1_FIELD_STRING( "FullName", full_name, 0 ) T1_FIELD_STRING( "FamilyName", family_name, 0 ) T1_FIELD_STRING( "Weight", weight, 0 ) - T1_FIELD_NUM ( "ItalicAngle", italic_angle, 0 ) + T1_FIELD_FIXED ( "ItalicAngle", italic_angle, 0 ) T1_FIELD_BOOL ( "isFixedPitch", is_fixed_pitch, 0 ) T1_FIELD_NUM ( "UnderlinePosition", underline_position, 0 ) T1_FIELD_NUM ( "UnderlineThickness", underline_thickness, 0 ) diff --git a/vendor/freetype/src/cid/module.mk b/vendor/freetype/src/cid/module.mk index 7120b8f3c3e..2994e4777c1 100644 --- a/vendor/freetype/src/cid/module.mk +++ b/vendor/freetype/src/cid/module.mk @@ -3,7 +3,7 @@ # -# Copyright (C) 1996-2025 by +# Copyright (C) 1996-2026 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/vendor/freetype/src/cid/rules.mk b/vendor/freetype/src/cid/rules.mk index bf87ef09a60..5569c7c5ebc 100644 --- a/vendor/freetype/src/cid/rules.mk +++ b/vendor/freetype/src/cid/rules.mk @@ -3,7 +3,7 @@ # -# Copyright (C) 1996-2025 by +# Copyright (C) 1996-2026 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/vendor/freetype/src/cid/type1cid.c b/vendor/freetype/src/cid/type1cid.c index 1291ba7a2aa..fbcce4f70bb 100644 --- a/vendor/freetype/src/cid/type1cid.c +++ b/vendor/freetype/src/cid/type1cid.c @@ -4,7 +4,7 @@ * * FreeType OpenType driver component (body only). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/dlg/dlgwrap.c b/vendor/freetype/src/dlg/dlgwrap.c index 8bb5b0011be..159af2d6751 100644 --- a/vendor/freetype/src/dlg/dlgwrap.c +++ b/vendor/freetype/src/dlg/dlgwrap.c @@ -4,7 +4,7 @@ * * Wrapper file for the 'dlg' library (body only) * - * Copyright (C) 2020-2025 by + * Copyright (C) 2020-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/dlg/rules.mk b/vendor/freetype/src/dlg/rules.mk index 7aac2433d5f..f575a8bd1e2 100644 --- a/vendor/freetype/src/dlg/rules.mk +++ b/vendor/freetype/src/dlg/rules.mk @@ -3,7 +3,7 @@ # -# Copyright (C) 2020-2025 by +# Copyright (C) 2020-2026 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/vendor/freetype/src/gxvalid/README b/vendor/freetype/src/gxvalid/README index 5eb623b3d4a..1bde33300e5 100644 --- a/vendor/freetype/src/gxvalid/README +++ b/vendor/freetype/src/gxvalid/README @@ -518,7 +518,7 @@ gxvalid: TrueType GX validator ------------------------------------------------------------------------ -Copyright (C) 2004-2025 by +Copyright (C) 2004-2026 by suzuki toshiya, Masatake YAMATO, Red hat K.K., David Turner, Robert Wilhelm, and Werner Lemberg. diff --git a/vendor/freetype/src/gxvalid/gxvalid.c b/vendor/freetype/src/gxvalid/gxvalid.c index d3f2d12dc9a..93c10f127d6 100644 --- a/vendor/freetype/src/gxvalid/gxvalid.c +++ b/vendor/freetype/src/gxvalid/gxvalid.c @@ -4,7 +4,7 @@ * * FreeType validator for TrueTypeGX/AAT tables (body only). * - * Copyright (C) 2005-2025 by + * Copyright (C) 2005-2026 by * suzuki toshiya, Masatake YAMATO, Red Hat K.K., * David Turner, Robert Wilhelm, and Werner Lemberg. * diff --git a/vendor/freetype/src/gxvalid/gxvalid.h b/vendor/freetype/src/gxvalid/gxvalid.h index a9537a15608..ee76946147c 100644 --- a/vendor/freetype/src/gxvalid/gxvalid.h +++ b/vendor/freetype/src/gxvalid/gxvalid.h @@ -4,7 +4,7 @@ * * TrueTypeGX/AAT table validation (specification only). * - * Copyright (C) 2005-2025 by + * Copyright (C) 2005-2026 by * suzuki toshiya, Masatake YAMATO, Red Hat K.K., * David Turner, Robert Wilhelm, and Werner Lemberg. * diff --git a/vendor/freetype/src/gxvalid/gxvbsln.c b/vendor/freetype/src/gxvalid/gxvbsln.c index 28f1873b094..9b9c10b9805 100644 --- a/vendor/freetype/src/gxvalid/gxvbsln.c +++ b/vendor/freetype/src/gxvalid/gxvbsln.c @@ -4,7 +4,7 @@ * * TrueTypeGX/AAT bsln table validation (body). * - * Copyright (C) 2004-2025 by + * Copyright (C) 2004-2026 by * suzuki toshiya, Masatake YAMATO, Red Hat K.K., * David Turner, Robert Wilhelm, and Werner Lemberg. * diff --git a/vendor/freetype/src/gxvalid/gxvcommn.c b/vendor/freetype/src/gxvalid/gxvcommn.c index f6664044405..111db5c693d 100644 --- a/vendor/freetype/src/gxvalid/gxvcommn.c +++ b/vendor/freetype/src/gxvalid/gxvcommn.c @@ -4,7 +4,7 @@ * * TrueTypeGX/AAT common tables validation (body). * - * Copyright (C) 2004-2025 by + * Copyright (C) 2004-2026 by * suzuki toshiya, Masatake YAMATO, Red Hat K.K., * David Turner, Robert Wilhelm, and Werner Lemberg. * diff --git a/vendor/freetype/src/gxvalid/gxvcommn.h b/vendor/freetype/src/gxvalid/gxvcommn.h index 1e19ccfb6b0..cc95c4cece1 100644 --- a/vendor/freetype/src/gxvalid/gxvcommn.h +++ b/vendor/freetype/src/gxvalid/gxvcommn.h @@ -4,7 +4,7 @@ * * TrueTypeGX/AAT common tables validation (specification). * - * Copyright (C) 2004-2025 by + * Copyright (C) 2004-2026 by * suzuki toshiya, Masatake YAMATO, Red Hat K.K., * David Turner, Robert Wilhelm, and Werner Lemberg. * diff --git a/vendor/freetype/src/gxvalid/gxverror.h b/vendor/freetype/src/gxvalid/gxverror.h index 73acb7fa41f..90a6eda03ec 100644 --- a/vendor/freetype/src/gxvalid/gxverror.h +++ b/vendor/freetype/src/gxvalid/gxverror.h @@ -4,7 +4,7 @@ * * TrueTypeGX/AAT validation module error codes (specification only). * - * Copyright (C) 2004-2025 by + * Copyright (C) 2004-2026 by * suzuki toshiya, Masatake YAMATO, Red Hat K.K., * David Turner, Robert Wilhelm, and Werner Lemberg. * diff --git a/vendor/freetype/src/gxvalid/gxvfeat.c b/vendor/freetype/src/gxvalid/gxvfeat.c index 5d4aca04c60..826f3eedf5c 100644 --- a/vendor/freetype/src/gxvalid/gxvfeat.c +++ b/vendor/freetype/src/gxvalid/gxvfeat.c @@ -4,7 +4,7 @@ * * TrueTypeGX/AAT feat table validation (body). * - * Copyright (C) 2004-2025 by + * Copyright (C) 2004-2026 by * suzuki toshiya, Masatake YAMATO, Red Hat K.K., * David Turner, Robert Wilhelm, and Werner Lemberg. * diff --git a/vendor/freetype/src/gxvalid/gxvfeat.h b/vendor/freetype/src/gxvalid/gxvfeat.h index 6a0cbea35a8..9d34b701a29 100644 --- a/vendor/freetype/src/gxvalid/gxvfeat.h +++ b/vendor/freetype/src/gxvalid/gxvfeat.h @@ -4,7 +4,7 @@ * * TrueTypeGX/AAT feat table validation (specification). * - * Copyright (C) 2004-2025 by + * Copyright (C) 2004-2026 by * suzuki toshiya, Masatake YAMATO, Red Hat K.K., * David Turner, Robert Wilhelm, and Werner Lemberg. * diff --git a/vendor/freetype/src/gxvalid/gxvfgen.c b/vendor/freetype/src/gxvalid/gxvfgen.c index 13a88826b70..d0c53ca5261 100644 --- a/vendor/freetype/src/gxvalid/gxvfgen.c +++ b/vendor/freetype/src/gxvalid/gxvfgen.c @@ -5,7 +5,7 @@ * Generate feature registry data for gxv `feat' validator. * This program is derived from gxfeatreg.c in gxlayout. * - * Copyright (C) 2004-2025 by + * Copyright (C) 2004-2026 by * Masatake YAMATO and Redhat K.K. * * This file may only be used, diff --git a/vendor/freetype/src/gxvalid/gxvjust.c b/vendor/freetype/src/gxvalid/gxvjust.c index 1b3a8b1ac1b..c5177522e38 100644 --- a/vendor/freetype/src/gxvalid/gxvjust.c +++ b/vendor/freetype/src/gxvalid/gxvjust.c @@ -4,7 +4,7 @@ * * TrueTypeGX/AAT just table validation (body). * - * Copyright (C) 2005-2025 by + * Copyright (C) 2005-2026 by * suzuki toshiya, Masatake YAMATO, Red Hat K.K., * David Turner, Robert Wilhelm, and Werner Lemberg. * diff --git a/vendor/freetype/src/gxvalid/gxvkern.c b/vendor/freetype/src/gxvalid/gxvkern.c index 222fd038cad..f1f8ce7cd36 100644 --- a/vendor/freetype/src/gxvalid/gxvkern.c +++ b/vendor/freetype/src/gxvalid/gxvkern.c @@ -4,7 +4,7 @@ * * TrueTypeGX/AAT kern table validation (body). * - * Copyright (C) 2004-2025 by + * Copyright (C) 2004-2026 by * suzuki toshiya, Masatake YAMATO, Red Hat K.K., * David Turner, Robert Wilhelm, and Werner Lemberg. * diff --git a/vendor/freetype/src/gxvalid/gxvlcar.c b/vendor/freetype/src/gxvalid/gxvlcar.c index 4882df42493..7b90d43a7b3 100644 --- a/vendor/freetype/src/gxvalid/gxvlcar.c +++ b/vendor/freetype/src/gxvalid/gxvlcar.c @@ -4,7 +4,7 @@ * * TrueTypeGX/AAT lcar table validation (body). * - * Copyright (C) 2004-2025 by + * Copyright (C) 2004-2026 by * suzuki toshiya, Masatake YAMATO, Red Hat K.K., * David Turner, Robert Wilhelm, and Werner Lemberg. * diff --git a/vendor/freetype/src/gxvalid/gxvmod.c b/vendor/freetype/src/gxvalid/gxvmod.c index 4f27c5a8a94..89e142be5dc 100644 --- a/vendor/freetype/src/gxvalid/gxvmod.c +++ b/vendor/freetype/src/gxvalid/gxvmod.c @@ -4,7 +4,7 @@ * * FreeType's TrueTypeGX/AAT validation module implementation (body). * - * Copyright (C) 2004-2025 by + * Copyright (C) 2004-2026 by * suzuki toshiya, Masatake YAMATO, Red Hat K.K., * David Turner, Robert Wilhelm, and Werner Lemberg. * diff --git a/vendor/freetype/src/gxvalid/gxvmod.h b/vendor/freetype/src/gxvalid/gxvmod.h index 39a375d978c..51e339e00be 100644 --- a/vendor/freetype/src/gxvalid/gxvmod.h +++ b/vendor/freetype/src/gxvalid/gxvmod.h @@ -5,7 +5,7 @@ * FreeType's TrueTypeGX/AAT validation module implementation * (specification). * - * Copyright (C) 2004-2025 by + * Copyright (C) 2004-2026 by * suzuki toshiya, Masatake YAMATO, Red Hat K.K., * David Turner, Robert Wilhelm, and Werner Lemberg. * diff --git a/vendor/freetype/src/gxvalid/gxvmort.c b/vendor/freetype/src/gxvalid/gxvmort.c index 846ac48b999..de03f2e3888 100644 --- a/vendor/freetype/src/gxvalid/gxvmort.c +++ b/vendor/freetype/src/gxvalid/gxvmort.c @@ -4,7 +4,7 @@ * * TrueTypeGX/AAT mort table validation (body). * - * Copyright (C) 2005-2025 by + * Copyright (C) 2005-2026 by * suzuki toshiya, Masatake YAMATO, Red Hat K.K., * David Turner, Robert Wilhelm, and Werner Lemberg. * diff --git a/vendor/freetype/src/gxvalid/gxvmort.h b/vendor/freetype/src/gxvalid/gxvmort.h index 66d46a072b8..3db0d2a61e0 100644 --- a/vendor/freetype/src/gxvalid/gxvmort.h +++ b/vendor/freetype/src/gxvalid/gxvmort.h @@ -4,7 +4,7 @@ * * TrueTypeGX/AAT common definition for mort table (specification). * - * Copyright (C) 2004-2025 by + * Copyright (C) 2004-2026 by * suzuki toshiya, Masatake YAMATO, Red Hat K.K., * David Turner, Robert Wilhelm, and Werner Lemberg. * diff --git a/vendor/freetype/src/gxvalid/gxvmort0.c b/vendor/freetype/src/gxvalid/gxvmort0.c index 5817c27d7aa..78b042d5ded 100644 --- a/vendor/freetype/src/gxvalid/gxvmort0.c +++ b/vendor/freetype/src/gxvalid/gxvmort0.c @@ -5,7 +5,7 @@ * TrueTypeGX/AAT mort table validation * body for type0 (Indic Script Rearrangement) subtable. * - * Copyright (C) 2005-2025 by + * Copyright (C) 2005-2026 by * suzuki toshiya, Masatake YAMATO, Red Hat K.K., * David Turner, Robert Wilhelm, and Werner Lemberg. * diff --git a/vendor/freetype/src/gxvalid/gxvmort1.c b/vendor/freetype/src/gxvalid/gxvmort1.c index 20cccadf17f..57ee197d489 100644 --- a/vendor/freetype/src/gxvalid/gxvmort1.c +++ b/vendor/freetype/src/gxvalid/gxvmort1.c @@ -5,7 +5,7 @@ * TrueTypeGX/AAT mort table validation * body for type1 (Contextual Substitution) subtable. * - * Copyright (C) 2005-2025 by + * Copyright (C) 2005-2026 by * suzuki toshiya, Masatake YAMATO, Red Hat K.K., * David Turner, Robert Wilhelm, and Werner Lemberg. * diff --git a/vendor/freetype/src/gxvalid/gxvmort2.c b/vendor/freetype/src/gxvalid/gxvmort2.c index 86da49b3f79..e982a67bf52 100644 --- a/vendor/freetype/src/gxvalid/gxvmort2.c +++ b/vendor/freetype/src/gxvalid/gxvmort2.c @@ -5,7 +5,7 @@ * TrueTypeGX/AAT mort table validation * body for type2 (Ligature Substitution) subtable. * - * Copyright (C) 2005-2025 by + * Copyright (C) 2005-2026 by * suzuki toshiya, Masatake YAMATO, Red Hat K.K., * David Turner, Robert Wilhelm, and Werner Lemberg. * @@ -192,8 +192,8 @@ offset, optdata->ligatureTable - offset * 2 )); GXV_SET_ERR_IF_PARANOID( FT_INVALID_OFFSET ); - } else if ( offset * 2u > - (FT_ULong)( optdata->ligatureTable + optdata->ligatureTable_length ) ) + } else if ( offset * 2 > + optdata->ligatureTable + optdata->ligatureTable_length ) { GXV_TRACE(( "too long offset 0x%08lx:" " 2 x offset > ligatureTable + ligatureTable_length" diff --git a/vendor/freetype/src/gxvalid/gxvmort4.c b/vendor/freetype/src/gxvalid/gxvmort4.c index 40ed7300710..2ad0632fa50 100644 --- a/vendor/freetype/src/gxvalid/gxvmort4.c +++ b/vendor/freetype/src/gxvalid/gxvmort4.c @@ -5,7 +5,7 @@ * TrueTypeGX/AAT mort table validation * body for type4 (Non-Contextual Glyph Substitution) subtable. * - * Copyright (C) 2005-2025 by + * Copyright (C) 2005-2026 by * suzuki toshiya, Masatake YAMATO, Red Hat K.K., * David Turner, Robert Wilhelm, and Werner Lemberg. * diff --git a/vendor/freetype/src/gxvalid/gxvmort5.c b/vendor/freetype/src/gxvalid/gxvmort5.c index 1b274be3b68..613debd4537 100644 --- a/vendor/freetype/src/gxvalid/gxvmort5.c +++ b/vendor/freetype/src/gxvalid/gxvmort5.c @@ -5,7 +5,7 @@ * TrueTypeGX/AAT mort table validation * body for type5 (Contextual Glyph Insertion) subtable. * - * Copyright (C) 2005-2025 by + * Copyright (C) 2005-2026 by * suzuki toshiya, Masatake YAMATO, Red Hat K.K., * David Turner, Robert Wilhelm, and Werner Lemberg. * diff --git a/vendor/freetype/src/gxvalid/gxvmorx.c b/vendor/freetype/src/gxvalid/gxvmorx.c index 931e57b00c2..9efe182038d 100644 --- a/vendor/freetype/src/gxvalid/gxvmorx.c +++ b/vendor/freetype/src/gxvalid/gxvmorx.c @@ -4,7 +4,7 @@ * * TrueTypeGX/AAT morx table validation (body). * - * Copyright (C) 2005-2025 by + * Copyright (C) 2005-2026 by * suzuki toshiya, Masatake YAMATO, Red Hat K.K., * David Turner, Robert Wilhelm, and Werner Lemberg. * diff --git a/vendor/freetype/src/gxvalid/gxvmorx.h b/vendor/freetype/src/gxvalid/gxvmorx.h index 2b8bf3575dd..60b084a8d0b 100644 --- a/vendor/freetype/src/gxvalid/gxvmorx.h +++ b/vendor/freetype/src/gxvalid/gxvmorx.h @@ -4,7 +4,7 @@ * * TrueTypeGX/AAT common definition for morx table (specification). * - * Copyright (C) 2005-2025 by + * Copyright (C) 2005-2026 by * suzuki toshiya, Masatake YAMATO, Red Hat K.K., * David Turner, Robert Wilhelm, and Werner Lemberg. * diff --git a/vendor/freetype/src/gxvalid/gxvmorx0.c b/vendor/freetype/src/gxvalid/gxvmorx0.c index 0085ac92f13..54cded1f646 100644 --- a/vendor/freetype/src/gxvalid/gxvmorx0.c +++ b/vendor/freetype/src/gxvalid/gxvmorx0.c @@ -5,7 +5,7 @@ * TrueTypeGX/AAT morx table validation * body for type0 (Indic Script Rearrangement) subtable. * - * Copyright (C) 2005-2025 by + * Copyright (C) 2005-2026 by * suzuki toshiya, Masatake YAMATO, Red Hat K.K., * David Turner, Robert Wilhelm, and Werner Lemberg. * diff --git a/vendor/freetype/src/gxvalid/gxvmorx1.c b/vendor/freetype/src/gxvalid/gxvmorx1.c index b495412ffc9..56a64c257cf 100644 --- a/vendor/freetype/src/gxvalid/gxvmorx1.c +++ b/vendor/freetype/src/gxvalid/gxvmorx1.c @@ -5,7 +5,7 @@ * TrueTypeGX/AAT morx table validation * body for type1 (Contextual Substitution) subtable. * - * Copyright (C) 2005-2025 by + * Copyright (C) 2005-2026 by * suzuki toshiya, Masatake YAMATO, Red Hat K.K., * David Turner, Robert Wilhelm, and Werner Lemberg. * diff --git a/vendor/freetype/src/gxvalid/gxvmorx2.c b/vendor/freetype/src/gxvalid/gxvmorx2.c index 0527161dc30..be333e0424b 100644 --- a/vendor/freetype/src/gxvalid/gxvmorx2.c +++ b/vendor/freetype/src/gxvalid/gxvmorx2.c @@ -5,7 +5,7 @@ * TrueTypeGX/AAT morx table validation * body for type2 (Ligature Substitution) subtable. * - * Copyright (C) 2005-2025 by + * Copyright (C) 2005-2026 by * suzuki toshiya, Masatake YAMATO, Red Hat K.K., * David Turner, Robert Wilhelm, and Werner Lemberg. * diff --git a/vendor/freetype/src/gxvalid/gxvmorx4.c b/vendor/freetype/src/gxvalid/gxvmorx4.c index e6e99fcb74e..9af41f4bf50 100644 --- a/vendor/freetype/src/gxvalid/gxvmorx4.c +++ b/vendor/freetype/src/gxvalid/gxvmorx4.c @@ -5,7 +5,7 @@ * TrueTypeGX/AAT morx table validation * body for "morx" type4 (Non-Contextual Glyph Substitution) subtable. * - * Copyright (C) 2005-2025 by + * Copyright (C) 2005-2026 by * suzuki toshiya, Masatake YAMATO, Red Hat K.K., * David Turner, Robert Wilhelm, and Werner Lemberg. * diff --git a/vendor/freetype/src/gxvalid/gxvmorx5.c b/vendor/freetype/src/gxvalid/gxvmorx5.c index 7dec9a90156..edc3f3bc019 100644 --- a/vendor/freetype/src/gxvalid/gxvmorx5.c +++ b/vendor/freetype/src/gxvalid/gxvmorx5.c @@ -5,7 +5,7 @@ * TrueTypeGX/AAT morx table validation * body for type5 (Contextual Glyph Insertion) subtable. * - * Copyright (C) 2005-2025 by + * Copyright (C) 2005-2026 by * suzuki toshiya, Masatake YAMATO, Red Hat K.K., * David Turner, Robert Wilhelm, and Werner Lemberg. * diff --git a/vendor/freetype/src/gxvalid/gxvopbd.c b/vendor/freetype/src/gxvalid/gxvopbd.c index 65003100ca4..265ad39a2ca 100644 --- a/vendor/freetype/src/gxvalid/gxvopbd.c +++ b/vendor/freetype/src/gxvalid/gxvopbd.c @@ -4,7 +4,7 @@ * * TrueTypeGX/AAT opbd table validation (body). * - * Copyright (C) 2004-2025 by + * Copyright (C) 2004-2026 by * suzuki toshiya, Masatake YAMATO, Red Hat K.K., * David Turner, Robert Wilhelm, and Werner Lemberg. * diff --git a/vendor/freetype/src/gxvalid/gxvprop.c b/vendor/freetype/src/gxvalid/gxvprop.c index 31f2b5eb300..f27ce103c48 100644 --- a/vendor/freetype/src/gxvalid/gxvprop.c +++ b/vendor/freetype/src/gxvalid/gxvprop.c @@ -4,7 +4,7 @@ * * TrueTypeGX/AAT prop table validation (body). * - * Copyright (C) 2004-2025 by + * Copyright (C) 2004-2026 by * suzuki toshiya, Masatake YAMATO, Red Hat K.K., * David Turner, Robert Wilhelm, and Werner Lemberg. * diff --git a/vendor/freetype/src/gxvalid/gxvtrak.c b/vendor/freetype/src/gxvalid/gxvtrak.c index 329f12729d4..06300beff34 100644 --- a/vendor/freetype/src/gxvalid/gxvtrak.c +++ b/vendor/freetype/src/gxvalid/gxvtrak.c @@ -4,7 +4,7 @@ * * TrueTypeGX/AAT trak table validation (body). * - * Copyright (C) 2004-2025 by + * Copyright (C) 2004-2026 by * suzuki toshiya, Masatake YAMATO, Red Hat K.K., * David Turner, Robert Wilhelm, and Werner Lemberg. * diff --git a/vendor/freetype/src/gxvalid/module.mk b/vendor/freetype/src/gxvalid/module.mk index c222466e8b6..d6b58ee922e 100644 --- a/vendor/freetype/src/gxvalid/module.mk +++ b/vendor/freetype/src/gxvalid/module.mk @@ -2,7 +2,7 @@ # FreeType 2 gxvalid module definition # -# Copyright (C) 2004-2025 by +# Copyright (C) 2004-2026 by # suzuki toshiya, Masatake YAMATO, Red Hat K.K., # David Turner, Robert Wilhelm, and Werner Lemberg. # diff --git a/vendor/freetype/src/gxvalid/rules.mk b/vendor/freetype/src/gxvalid/rules.mk index 78382bef9fd..552f64dcc38 100644 --- a/vendor/freetype/src/gxvalid/rules.mk +++ b/vendor/freetype/src/gxvalid/rules.mk @@ -3,7 +3,7 @@ # -# Copyright (C) 2004-2025 by +# Copyright (C) 2004-2026 by # suzuki toshiya, Masatake YAMATO, Red Hat K.K., # David Turner, Robert Wilhelm, and Werner Lemberg. # diff --git a/vendor/freetype/src/gzip/ftgzip.c b/vendor/freetype/src/gzip/ftgzip.c index ffa3824d449..4a5ec872974 100644 --- a/vendor/freetype/src/gzip/ftgzip.c +++ b/vendor/freetype/src/gzip/ftgzip.c @@ -8,7 +8,7 @@ * parse compressed PCF fonts, as found with many X11 server * distributions. * - * Copyright (C) 2002-2025 by + * Copyright (C) 2002-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/gzip/rules.mk b/vendor/freetype/src/gzip/rules.mk index 8c1324efd31..baefc0b9bad 100644 --- a/vendor/freetype/src/gzip/rules.mk +++ b/vendor/freetype/src/gzip/rules.mk @@ -3,7 +3,7 @@ # -# Copyright (C) 2002-2025 by +# Copyright (C) 2002-2026 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/vendor/freetype/src/hvf/hvf.c b/vendor/freetype/src/hvf/hvf.c new file mode 100644 index 00000000000..a0e0a58ce10 --- /dev/null +++ b/vendor/freetype/src/hvf/hvf.c @@ -0,0 +1,27 @@ +/**************************************************************************** + * + * hvf.c + * + * FreeType HVF driver component (body only). + * + * Copyright (C) 2025-2026 by + * Apple Inc. + * written by Deborah Goldsmith + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + +#define FT_MAKE_OPTION_SINGLE_OBJECT + +#include "hvfdrv.c" +#include "hvfload.c" +#include "hvfobjs.c" + + +/* END */ diff --git a/vendor/freetype/src/hvf/hvfdrv.c b/vendor/freetype/src/hvf/hvfdrv.c new file mode 100644 index 00000000000..b59cb55c93f --- /dev/null +++ b/vendor/freetype/src/hvf/hvfdrv.c @@ -0,0 +1,723 @@ +/**************************************************************************** + * + * hvfdrv.c + * + * HVF font driver implementation (body). + * + * Copyright (C) 2025-2026 by + * Apple Inc. + * written by Deborah Goldsmith + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + +#include +#include +#include +#include +#include /* For TT_Face */ +#include + +#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT +#include +#include +#include +#endif + +#include "hvfdrv.h" +#include "hvfobjs.h" +#include "hvfload.h" +#include "hvferror.h" + + + /************************************************************************** + * + * The macro FT_COMPONENT is used in trace mode. It is an implicit + * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log + * messages during execution. + */ +#undef FT_COMPONENT +#define FT_COMPONENT hvfdrv + + +#ifdef FT_CONFIG_OPTION_HVF + + /************************************************************************** + * + * FACE MANAGEMENT + * + */ + + /************************************************************************** + * + * @Function: + * hvf_get_kerning + * + * @Description: + * Get kerning vector between two glyphs. Delegates to SFNT service + * since HVF fonts are TrueType/OpenType fonts. + * + * @Input: + * face :: + * A handle to the source face object. + * + * left_glyph :: + * The index of the left glyph in the kern pair. + * + * right_glyph :: + * The index of the right glyph in the kern pair. + * + * @Output: + * kerning :: + * The kerning vector in font units. + * + * @Return: + * FreeType error code. 0 means success. + */ + static FT_Error + hvf_get_kerning( FT_Face face, + FT_UInt left_glyph, + FT_UInt right_glyph, + FT_Vector* kerning ) + { + TT_Face tt_face = (TT_Face)face; + SFNT_Service sfnt = (SFNT_Service)tt_face->sfnt; + + + kerning->x = 0; + kerning->y = 0; + + if ( sfnt ) + { + /* Use 'kern' table if available since that can be faster; otherwise */ + /* use GPOS kerning pairs if available. */ + if ( tt_face->kern_avail_bits ) + kerning->x = sfnt->get_kerning( tt_face, + left_glyph, + right_glyph ); +#ifdef TT_CONFIG_OPTION_GPOS_KERNING + else if ( tt_face->num_gpos_lookups_kerning ) + kerning->x = sfnt->get_gpos_kerning( tt_face, + left_glyph, + right_glyph ); +#endif + } + + return FT_Err_Ok; + } + + + /************************************************************************** + * + * @Function: + * hvf_get_advances + * + * @Description: + * Get advance widths/heights for a range of glyphs. Delegates to + * TrueType infrastructure since HVF fonts are TrueType/OpenType fonts. + * + * @Input: + * face :: + * A handle to the source face object. + * + * start :: + * The first glyph index. + * + * count :: + * The number of advance values to retrieve. + * + * flags :: + * Loading flags (vertical/horizontal layout). + * + * @Output: + * advances :: + * The advance values in 16.16 format. + * + * @Return: + * FreeType error code. 0 means success. + */ + static FT_Error + hvf_get_advances( FT_Face face, + FT_UInt start, + FT_UInt count, + FT_Int32 flags, + FT_Fixed *advances ) + { + TT_Face tt_face = (TT_Face)face; + FT_Bool horz; + FT_UInt nn; + + + if ( !FT_IS_SFNT( face ) ) + return FT_THROW( Unimplemented_Feature ); + + horz = !( flags & FT_LOAD_VERTICAL_LAYOUT ); + + if ( horz ) + { + /* Check availability of horizontal metrics. */ + if ( !tt_face->horizontal.number_Of_HMetrics ) + return FT_THROW( Unimplemented_Feature ); + +#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT + /* No fast retrieval for blended MM fonts without 'HVAR' table. */ + if ( ( FT_IS_NAMED_INSTANCE( face ) || FT_IS_VARIATION( face ) ) && + !( tt_face->variation_support & TT_FACE_FLAG_VAR_HADVANCE ) ) + return FT_THROW( Unimplemented_Feature ); +#endif + } + else /* vertical */ + { + /* Check whether we have data from the 'vmtx' table at all. */ + if ( !tt_face->vertical_info ) + return FT_THROW( Unimplemented_Feature ); + +#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT + /* No fast retrieval for blended MM fonts without 'VVAR' table. */ + if ( ( FT_IS_NAMED_INSTANCE( face ) || FT_IS_VARIATION( face ) ) && + !( tt_face->variation_support & TT_FACE_FLAG_VAR_VADVANCE ) ) + return FT_THROW( Unimplemented_Feature ); +#endif + } + + /* Proceed to fast advances. */ + for ( nn = 0; nn < count; nn++ ) + { + FT_UShort aw; + FT_Short dummy; + + + ( (SFNT_Service)tt_face->sfnt )->get_metrics( tt_face, + !horz, + start + nn, + &dummy, + &aw ); + + FT_TRACE5(( " idx %u: advance %s %d font unit%s\n", + start + nn, + horz ? "width" : "height", + aw, + aw == 1 ? "" : "s" )); + advances[nn] = aw; + } + + return FT_Err_Ok; + } + + + /************************************************************************** + * + * SERVICE DEFINITIONS + * + */ + +#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT + + /* Service delegation functions following CFF module pattern. */ + + FT_CALLBACK_DEF( FT_Error ) + hvf_set_mm_blend( FT_Face face, /* HVF_Face */ + FT_UInt num_coords, + FT_Fixed* coords ) + { + TT_Face tt_face = (TT_Face)face; + FT_Service_MultiMasters mm = (FT_Service_MultiMasters)tt_face->mm; + HVF_Face hvf_face = (HVF_Face)face; + + FT_Error error; + + + /* Call the underlying service. */ + error = mm->set_mm_blend( face, num_coords, coords ); + + /* error == -1 means "no change"; early exit. */ + if ( error == -1 ) + return FT_Err_Ok; + + /* If successful, refresh our cached HVF coordinates. */ + if ( !error ) + { + FT_Error refresh_error = hvf_refresh_axis_coordinates( hvf_face ); + + +#ifdef FT_DEBUG_LEVEL_TRACE + if ( refresh_error ) + { + /* Don't fail the entire operation, just log the issue. */ + FT_TRACE3(( "hvf_set_mm_blend:" + " failed to refresh HVF coordinates (error %d)\n", + refresh_error )); + } +#else + FT_UNUSED( refresh_error ); +#endif + } + + return error; + } + + + FT_CALLBACK_DEF( FT_Error ) + hvf_get_mm_blend( FT_Face face, /* HVF_Face */ + FT_UInt num_coords, + FT_Fixed* coords ) + { + TT_Face tt_face = (TT_Face)face; + FT_Service_MultiMasters mm = (FT_Service_MultiMasters)tt_face->mm; + + + return mm->get_mm_blend( face, num_coords, coords ); + } + + + FT_CALLBACK_DEF( FT_Error ) + hvf_get_mm_var( FT_Face face, /* HVF_Face */ + FT_MM_Var** master ) + { + TT_Face tt_face = (TT_Face)face; + FT_Service_MultiMasters mm = (FT_Service_MultiMasters)tt_face->mm; + + + return mm->get_mm_var( face, master ); + } + + + FT_CALLBACK_DEF( FT_Error ) + hvf_set_var_design( FT_Face face, /* HVF_Face */ + FT_UInt num_coords, + FT_Fixed* coords ) + { + TT_Face tt_face = (TT_Face)face; + FT_Service_MultiMasters mm = (FT_Service_MultiMasters)tt_face->mm; + HVF_Face hvf_face = (HVF_Face)face; + + FT_Error error; + + + /* Call the underlying service. */ + error = mm->set_var_design( face, num_coords, coords ); + + /* error == -1 means "no change"; early exit. */ + if ( error == -1 ) + return FT_Err_Ok; + + /* If successful, refresh our cached HVF coordinates. */ + if ( !error || error == -2 ) + { + FT_Error refresh_error = hvf_refresh_axis_coordinates( hvf_face ); + + +#ifdef FT_DEBUG_LEVEL_TRACE + if ( refresh_error ) + { + /* Don't fail the entire operation, just log the issue. */ + FT_TRACE3(( "hvf_set_var_design:" + " failed to refresh HVF coordinates (error %d)\n", + refresh_error )); + } +#else + FT_UNUSED( refresh_error ); +#endif + } + + return error; + } + + + FT_CALLBACK_DEF( FT_Error ) + hvf_get_var_design( FT_Face face, /* HVF_Face */ + FT_UInt num_coords, + FT_Fixed* coords ) + { + TT_Face tt_face = (TT_Face)face; + FT_Service_MultiMasters mm = (FT_Service_MultiMasters)tt_face->mm; + + + return mm->get_var_design( face, num_coords, coords ); + } + + + FT_CALLBACK_DEF( FT_Error ) + hvf_set_named_instance( FT_Face face, /* HVF_Face */ + FT_UInt instance_index ) + { + TT_Face tt_face = (TT_Face)face; + FT_Service_MultiMasters mm = (FT_Service_MultiMasters)tt_face->mm; + HVF_Face hvf_face = (HVF_Face)face; + + FT_Error error; + + + /* Call the underlying service. */ + error = mm->set_named_instance( face, instance_index ); + + /* error == -1 means "no change"; early exit. */ + if ( error == -1 ) + return FT_Err_Ok; + + /* If successful, refresh our cached HVF coordinates. */ + if ( !error ) + { + FT_Error refresh_error = hvf_refresh_axis_coordinates( hvf_face ); + + +#ifdef FT_DEBUG_LEVEL_TRACE + if ( refresh_error ) + { + /* Don't fail the entire operation, just log the issue. */ + FT_TRACE3(( "hvf_set_named_instance:" + " failed to refresh HVF coordinates (error %d)\n", + refresh_error )); + } +#else + FT_UNUSED( refresh_error ); +#endif + } + + return error; + } + + + FT_CALLBACK_DEF( FT_Error ) + hvf_get_default_named_instance( FT_Face face, /* HVF_Face */ + FT_UInt *instance_index ) + { + TT_Face tt_face = (TT_Face)face; + FT_Service_MultiMasters mm = (FT_Service_MultiMasters)tt_face->mm; + + + return mm->get_default_named_instance( face, instance_index ); + } + + + FT_CALLBACK_DEF( void ) + hvf_construct_ps_name( FT_Face face ) /* HVF_Face */ + { + TT_Face tt_face = (TT_Face)face; + FT_Service_MultiMasters mm = (FT_Service_MultiMasters)tt_face->mm; + + + mm->construct_ps_name( face ); + } + + + FT_CALLBACK_DEF( FT_Error ) + hvf_load_delta_set_index_mapping( FT_Face face, /* HVF_Face */ + FT_ULong offset, + GX_DeltaSetIdxMap map, + GX_ItemVarStore itemStore, + FT_ULong table_len ) + { + TT_Face tt_face = (TT_Face)face; + FT_Service_MultiMasters mm = (FT_Service_MultiMasters)tt_face->mm; + + + return mm->load_delta_set_idx_map( face, offset, map, + itemStore, table_len ); + } + + + FT_CALLBACK_DEF( FT_Error ) + hvf_load_item_variation_store( FT_Face face, /* HVF_Face */ + FT_ULong offset, + GX_ItemVarStore itemStore ) + { + TT_Face tt_face = (TT_Face)face; + FT_Service_MultiMasters mm = (FT_Service_MultiMasters)tt_face->mm; + + + return mm->load_item_var_store( face, offset, itemStore ); + } + + + FT_CALLBACK_DEF( FT_ItemVarDelta ) + hvf_get_item_delta( FT_Face face, /* HVF_Face */ + GX_ItemVarStore itemStore, + FT_UInt outerIndex, + FT_UInt innerIndex ) + { + TT_Face tt_face = (TT_Face)face; + FT_Service_MultiMasters mm = (FT_Service_MultiMasters)tt_face->mm; + + + return mm->get_item_delta( face, itemStore, outerIndex, innerIndex ); + } + + + FT_CALLBACK_DEF( void ) + hvf_done_item_variation_store( FT_Face face, /* HVF_Face */ + GX_ItemVarStore itemStore ) + { + TT_Face tt_face = (TT_Face)face; + FT_Service_MultiMasters mm = (FT_Service_MultiMasters)tt_face->mm; + + + mm->done_item_var_store( face, itemStore ); + } + + + FT_CALLBACK_DEF( void ) + hvf_done_delta_set_index_map( FT_Face face, /* HVF_Face */ + GX_DeltaSetIdxMap deltaSetIdxMap ) + { + TT_Face tt_face = (TT_Face)face; + FT_Service_MultiMasters mm = (FT_Service_MultiMasters)tt_face->mm; + + + mm->done_delta_set_idx_map( face, deltaSetIdxMap ); + } + + + FT_CALLBACK_DEF( FT_Error ) + hvf_get_var_blend( FT_Face face, /* HVF_Face */ + FT_UInt* num_coords, + FT_Fixed** coords, + FT_Fixed** normalizedcoords, + FT_MM_Var** mm_var ) + { + TT_Face tt_face = (TT_Face)face; + FT_Service_MultiMasters mm = (FT_Service_MultiMasters)tt_face->mm; + + + return mm->get_var_blend( face, num_coords, coords, + normalizedcoords, mm_var ); + } + + + FT_CALLBACK_DEF( void ) + hvf_done_blend( FT_Face face ) /* HVF_Face */ + { + TT_Face tt_face = (TT_Face)face; + FT_Service_MultiMasters mm = (FT_Service_MultiMasters)tt_face->mm; + + + mm->done_blend( face ); + } + + + FT_CALLBACK_DEF( FT_Error ) + hvf_hadvance_adjust( FT_Face face, /* HVF_Face */ + FT_UInt gindex, + FT_Int *avalue ) + { + TT_Face tt_face = (TT_Face)face; + FT_Service_MetricsVariations var = (FT_Service_MetricsVariations) + tt_face->tt_var; + + + return var->hadvance_adjust( face, gindex, avalue ); + } + + + FT_CALLBACK_DEF( FT_Error ) + hvf_vadvance_adjust( FT_Face face, /* HVF_Face */ + FT_UInt gindex, + FT_Int *avalue ) + { + TT_Face tt_face = (TT_Face)face; + FT_Service_MetricsVariations var = (FT_Service_MetricsVariations) + tt_face->tt_var; + + + return var->vadvance_adjust( face, gindex, avalue ); + } + + + FT_CALLBACK_DEF( void ) + hvf_apply_mvar( FT_Face face ) /* HVF_Face */ + { + TT_Face tt_face = (TT_Face)face; + FT_Service_MetricsVariations var = (FT_Service_MetricsVariations) + tt_face->tt_var; + + + var->metrics_adjust( face ); + } + + + FT_CALLBACK_DEF( void ) + hvf_size_reset_height( FT_Size size ) + { + /* Delegate to size's face services. */ + TT_Face tt_face = (TT_Face)size->face; + FT_Service_MetricsVariations var = (FT_Service_MetricsVariations) + tt_face->tt_var; + + + if ( var->size_reset ) + var->size_reset( size ); + } + + + FT_DEFINE_SERVICE_MULTIMASTERSREC( + hvf_service_gx_multi_masters, + + NULL, /* FT_Get_MM_Func get_mm */ + NULL, /* FT_Set_MM_Design_Func set_mm_design */ + hvf_set_mm_blend, /* FT_Set_MM_Blend_Func set_mm_blend */ + hvf_get_mm_blend, /* FT_Get_MM_Blend_Func get_mm_blend */ + hvf_get_mm_var, /* FT_Get_MM_Var_Func get_mm_var */ + hvf_set_var_design, /* FT_Set_Var_Design_Func set_var_design */ + hvf_get_var_design, /* FT_Get_Var_Design_Func get_var_design */ + hvf_set_named_instance, + /* FT_Set_Named_Instance_Func set_named_instance */ + hvf_get_default_named_instance, + /* FT_Get_Default_Named_Instance_Func get_default_named_instance */ + NULL, /* FT_Set_MM_WeightVector_Func set_mm_weightvector */ + NULL, /* FT_Get_MM_WeightVector_Func get_mm_weightvector */ + + hvf_construct_ps_name, + /* FT_Construct_PS_Name_Func construct_ps_name */ + hvf_load_delta_set_index_mapping, + /* FT_Var_Load_Delta_Set_Idx_Map_Func load_delta_set_idx_map */ + hvf_load_item_variation_store, + /* FT_Var_Load_Item_Var_Store_Func load_item_variation_store */ + hvf_get_item_delta, + /* FT_Var_Get_Item_Delta_Func get_item_delta */ + hvf_done_item_variation_store, + /* FT_Var_Done_Item_Var_Store_Func done_item_variation_store */ + hvf_done_delta_set_index_map, + /* FT_Var_Done_Delta_Set_Idx_Map_Func done_delta_set_index_map */ + hvf_get_var_blend, /* FT_Get_Var_Blend_Func get_var_blend */ + hvf_done_blend /* FT_Done_Blend_Func done_blend */ + ) + + + FT_DEFINE_SERVICE_METRICSVARIATIONSREC( + hvf_service_metrics_variations, + + hvf_hadvance_adjust, /* FT_HAdvance_Adjust_Func hadvance_adjust */ + NULL, /* FT_LSB_Adjust_Func lsb_adjust */ + NULL, /* FT_RSB_Adjust_Func rsb_adjust */ + + hvf_vadvance_adjust, /* FT_VAdvance_Adjust_Func vadvance_adjust */ + NULL, /* FT_TSB_Adjust_Func tsb_adjust */ + NULL, /* FT_BSB_Adjust_Func bsb_adjust */ + NULL, /* FT_VOrg_Adjust_Func vorg_adjust */ + + hvf_apply_mvar, /* FT_Metrics_Adjust_Func metrics_adjust */ + hvf_size_reset_height /* FT_Size_Reset_Func size_reset */ + ) + +#endif /* TT_CONFIG_OPTION_GX_VAR_SUPPORT */ + + +#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT + FT_DEFINE_SERVICEDESCREC3( + hvf_services, + + FT_SERVICE_ID_FONT_FORMAT, FT_FONT_FORMAT_HVF, + FT_SERVICE_ID_MULTI_MASTERS, &hvf_service_gx_multi_masters, + FT_SERVICE_ID_METRICS_VARIATIONS, &hvf_service_metrics_variations ) +#else + FT_DEFINE_SERVICEDESCREC1( + hvf_services, + + FT_SERVICE_ID_FONT_FORMAT, FT_FONT_FORMAT_HVF ) +#endif + + + FT_CALLBACK_DEF( FT_Module_Interface ) + hvf_get_interface( FT_Module driver, /* HVF_Driver */ + const char* hvf_interface ) + { + FT_Library library; + FT_Module_Interface result; + FT_Module sfntd; + SFNT_Service sfnt; + + + FT_TRACE5(( "hvf_get_interface: Looking up service %s\n", + hvf_interface )); + + result = ft_service_list_lookup( hvf_services, hvf_interface ); + if ( result ) + return result; + + FT_TRACE3(( "hvf_get_interface: Did not find service %s; falling back\n", + hvf_interface )); + + if ( !driver ) + return NULL; + + library = driver->library; + if ( !library ) + return NULL; + + /* Only return the default interface from the SFNT module. */ + sfntd = FT_Get_Module( library, "sfnt" ); + if ( sfntd ) + { + sfnt = (SFNT_Service)( sfntd->clazz->module_interface ); + if ( sfnt ) + return sfnt->get_interface( driver, hvf_interface ); + } + + return NULL; + } + +#endif /* FT_CONFIG_OPTION_HVF */ + + + /************************************************************************** + * + * DRIVER INTERFACE + * + */ + +#ifdef FT_CONFIG_OPTION_HVF +#define PUT_HVF_MODULE( a ) a +#else +#define PUT_HVF_MODULE( a ) NULL +#endif + + FT_DEFINE_DRIVER( + hvf_driver_class, + + FT_MODULE_FONT_DRIVER | + FT_MODULE_DRIVER_SCALABLE | + FT_MODULE_DRIVER_HAS_HINTER, + + sizeof ( FT_DriverRec ), + "hvf", /* driver name */ + 0x10000L, /* driver version == 1.0 */ + 0x20000L, /* driver requires FreeType 2.0 or above */ + + NULL, /* module-specific interface */ + + NULL, /* FT_Module_Constructor module_init */ + NULL, /* FT_Module_Destructor module_done */ + PUT_HVF_MODULE( hvf_get_interface ), + /* FT_Module_Requester get_interface */ + + sizeof ( HVF_FaceRec ), + sizeof ( FT_SizeRec ), + sizeof ( FT_GlyphSlotRec ), + + hvf_face_init, /* FT_Face_InitFunc init_face */ + PUT_HVF_MODULE( hvf_face_done ), /* FT_Face_DoneFunc done_face */ + NULL, /* FT_Size_InitFunc init_size */ + NULL, /* FT_Size_DoneFunc done_size */ + NULL, /* FT_Slot_InitFunc init_slot */ + NULL, /* FT_Slot_DoneFunc done_slot */ + + hvf_slot_load_glyph, /* FT_Slot_LoadFunc load_glyph */ + + PUT_HVF_MODULE( hvf_get_kerning ), + /* FT_Face_GetKerningFunc get_kerning */ + NULL, /* FT_Face_AttachFunc attach_file */ + PUT_HVF_MODULE( hvf_get_advances ), + /* FT_Face_GetAdvancesFunc get_advances */ + + NULL, /* FT_Size_RequestFunc request_size */ + NULL /* FT_Size_SelectFunc select_size */ + ) + + +/* END */ diff --git a/vendor/freetype/src/hvf/hvfdrv.h b/vendor/freetype/src/hvf/hvfdrv.h new file mode 100644 index 00000000000..c27d7fcaa19 --- /dev/null +++ b/vendor/freetype/src/hvf/hvfdrv.h @@ -0,0 +1,37 @@ +/**************************************************************************** + * + * hvfdrv.h + * + * Apple Hierarchical Variable Font (HVF) driver interface + * (specification only). + * + * Copyright (C) 2025-2026 by + * Apple Inc. + * written by Deborah Goldsmith + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + +#ifndef HVFDRV_H_ +#define HVFDRV_H_ + + +#include + + +FT_BEGIN_HEADER + + FT_DECLARE_DRIVER( hvf_driver_class ) + +FT_END_HEADER + +#endif /* HVFDRV_H_ */ + + +/* END */ diff --git a/vendor/freetype/src/hvf/hvferror.h b/vendor/freetype/src/hvf/hvferror.h new file mode 100644 index 00000000000..6d474d292cf --- /dev/null +++ b/vendor/freetype/src/hvf/hvferror.h @@ -0,0 +1,43 @@ +/**************************************************************************** + * + * hvferror.h + * + * HVF error codes (specification only). + * + * Copyright (C) 2025-2026 by + * Apple Inc. + * written by Deborah Goldsmith + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + + /************************************************************************** + * + * This file is used to define the HVF error enumeration constants. + * + */ + +#ifndef HVFERROR_H_ +#define HVFERROR_H_ + +#include + +#undef FTERRORS_H_ + +#undef FT_ERR_PREFIX +#define FT_ERR_PREFIX HVF_Err_ +#define FT_ERR_BASE FT_Mod_Err_HVF + + +#include + +#endif /* HVFERROR_H_ */ + + +/* END */ diff --git a/vendor/freetype/src/hvf/hvfload.c b/vendor/freetype/src/hvf/hvfload.c new file mode 100644 index 00000000000..a02d363c1da --- /dev/null +++ b/vendor/freetype/src/hvf/hvfload.c @@ -0,0 +1,610 @@ +/**************************************************************************** + * + * hvfload.c + * + * HVF glyph loading (body). + * + * Copyright (C) 2025-2026 by + * Apple Inc. + * written by Deborah Goldsmith + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + +#include +#include +#include +#include + +#include "hvfload.h" +#include "hvfobjs.h" +#include "hvferror.h" + + +#undef FT_COMPONENT +#define FT_COMPONENT hvfload + + +#ifdef FT_CONFIG_OPTION_HVF + + /************************************************************************** + * + * HVF Coordinate Conversion Macros + * + */ + + /* Convert HVF coordinates to FreeType 26.6 fixed point */ + /* using a pre-calculated scale factor. */ +#define HVF_COORD_TO_FIXED( coord, scale_fixed ) \ + ( (FT_F26Dot6)( (coord) * (scale_fixed) ) ) + + /* Pre-calculate scale factor for efficient coordinate conversion. */ + /* FreeType scale factors are 16.16 fixed point; convert to floating */ + /* point for HVF. */ +#define FT_SCALE_TO_HVF_SCALE_FIXED( scale, apply_scaling ) \ + ( (apply_scaling) ? (HVFXYCoord)(scale) / 65536.0 \ + : (HVFXYCoord)64.0 ) + + /* Cache management: clear cache after this many glyph loads. */ + /* TODO: Future enhancement: make this a settable property on */ + /* the HVF driver. */ +#define HVF_CACHE_CLEAR_COUNT 17 + + + /************************************************************************** + * + * HVF axis values setup with TrueType integration + * + */ + static FT_Error + hvf_set_variation_axes( HVF_Face face ) + { + FT_Error error = FT_Err_Ok; + + int axis_count; + + FT_UInt i; + FT_UInt max_axes; + + HVFAxisValue axis_value; + + + /* Only the HVF API calls need `@available` protection. */ + if ( HVF_IS_AVAILABLE ) + { + /* Get HVF axis count for current part. */ + axis_count = + HVF_render_part_axis_count( (HVFPartRenderer*)face->renderer ); + if ( axis_count <= 0 ) + { + /* No axes for this part - this is normal for non-variable glyphs. */ + return FT_Err_Ok; + } + + /* Calculate maximum axes to set - only set axes that have */ + /* pre-stored coordinates. */ + /* */ + /* Note: `HVF_set_render_part` already sets all axes to */ + /* default (0.0), so we only need to override axes */ + /* that have actual variation coordinates. */ + max_axes = 0; + if ( face->axis_coords && face->num_axes > 0 ) + { + max_axes = face->num_axes; + if ( max_axes > (FT_UInt)axis_count ) + max_axes = (FT_UInt)axis_count; + } + + /* Set only axes with pre-stored coordinates */ + /* (`HVF_set_render_part` handles defaults). */ + for ( i = 0; i < max_axes; i++ ) + { + int hvf_result; + + + /* Use pre-converted HVF axis coordinate directly */ + /* (no conversion needed). */ + axis_value = ((HVFAxisValue*)face->axis_coords)[i]; + FT_TRACE5(( "hvf_set_variation_axes:" + " axis %u = %f (pre-converted HVF coord)\n", + i, axis_value )); + + /* Set the axis value in HVF renderer. */ + hvf_result = HVF_set_axis_value( (HVFPartRenderer*)face->renderer, + (int)i, + axis_value ); +#ifdef FT_DEBUG_LEVEL_TRACE + if ( hvf_result != 0 ) + { + /* Continue with other axes even if one fails. */ + FT_TRACE1(( "hvf_set_variation_axes:" + " HVF_set_axis_value failed for axis %u (error %d)\n", + i, hvf_result )); + } +#else + FT_UNUSED( hvf_result ); +#endif + } + + /* Remaining axes already set to defaults by `HVF_set_render_part` - */ + /* no action needed. */ + FT_TRACE3(( "hvf_set_variation_axes:" + " configured %u of %d axis value%s\n" + " " + " using pre-converted HVF coordinates\n", + max_axes, axis_count, axis_count == 1 ? "" : "s" )); + } + else + { + FT_TRACE3(( "hvf_set_variation_axes:" + " HVF not available at runtime\n" )); + return FT_THROW( Unimplemented_Feature ); + } + + return error; + } + + + /************************************************************************** + * + * HVF instruction callback - using `FT_GlyphLoader` + * + */ + static HVFPartRenderAction + hvf_render_callback( HVFPartRenderInstruction instruction, + const HVFPartRenderParameters* params, + void* user_data ) + { + HVF_RenderContext* ctx = (HVF_RenderContext*)user_data; + + FT_Error error; + + + switch ( instruction ) + { + case HVFPartRenderInstructionBeginPart: + FT_TRACE5(( "hvf_render: BeginPart (part %zu)\n", + params->beginPart.partInfo.partId )); + return HVFPartRenderActionContinue; + + case HVFPartRenderInstructionBeginPath: + FT_TRACE5(( "hvf_render: BeginPath\n" )); + ctx->path_begun = 1; + return HVFPartRenderActionContinue; + + case HVFPartRenderInstructionAddPoint: + { + FT_Int n; + + + /* Move-to or line-to point with pre-calculated scaling factors. */ + error = FT_GLYPHLOADER_CHECK_POINTS( ctx->loader, 1, 0 ); + if ( error ) + return HVFPartRenderActionStop; + + n = ctx->outline->n_points; + + ctx->outline->points[n].x = + HVF_COORD_TO_FIXED( params->addPoint.pt.x, ctx->x_scale_fixed ); + ctx->outline->points[n].y = + HVF_COORD_TO_FIXED( params->addPoint.pt.y, ctx->y_scale_fixed ); + ctx->outline->tags[n] = FT_CURVE_TAG_ON; + ctx->outline->n_points++; + + FT_TRACE5(( "hvf_render: AddPoint (%.2f, %.2f)\n", + (double)ctx->outline->points[n].x / 64, + (double)ctx->outline->points[n].y / 64 )); + return HVFPartRenderActionContinue; + } + + case HVFPartRenderInstructionAddQuad: + { + FT_Int n; + + + /* Quadratic curve with pre-calculated scaling factors. */ + error = FT_GLYPHLOADER_CHECK_POINTS( ctx->loader, 2, 0 ); + if ( error ) + return HVFPartRenderActionStop; + + n = ctx->outline->n_points; + + /* Control point. */ + ctx->outline->points[n].x = + HVF_COORD_TO_FIXED( params->addQuad.offpt.x, ctx->x_scale_fixed ); + ctx->outline->points[n].y = + HVF_COORD_TO_FIXED( params->addQuad.offpt.y, ctx->y_scale_fixed ); + ctx->outline->tags[n] = FT_CURVE_TAG_CONIC; + + /* End point. */ + ctx->outline->points[n + 1].x = + HVF_COORD_TO_FIXED( params->addQuad.onpt.x, ctx->x_scale_fixed ); + ctx->outline->points[n + 1].y = + HVF_COORD_TO_FIXED( params->addQuad.onpt.y, ctx->y_scale_fixed ); + ctx->outline->tags[n + 1] = FT_CURVE_TAG_ON; + + ctx->outline->n_points += 2; + + FT_TRACE5(( "hvf_render: AddQuad (%.2f,%.2f) (%.2f,%.2f)\n", + (double)ctx->outline->points[n].x / 64, + (double)ctx->outline->points[n].y / 64, + (double)ctx->outline->points[n + 1].x / 64, + (double)ctx->outline->points[n + 1].y / 64 )); + return HVFPartRenderActionContinue; + } + + case HVFPartRenderInstructionAddCubic: + { + FT_Int n; + + + /* Cubic curve with pre-calculated scaling factors. */ + error = FT_GLYPHLOADER_CHECK_POINTS( ctx->loader, 3, 0 ); + if ( error ) + return HVFPartRenderActionStop; + + n = ctx->outline->n_points; + + /* First control point */ + ctx->outline->points[n].x = + HVF_COORD_TO_FIXED( params->addCubic.cp1.x, ctx->x_scale_fixed ); + ctx->outline->points[n].y = + HVF_COORD_TO_FIXED( params->addCubic.cp1.y, ctx->y_scale_fixed ); + ctx->outline->tags[n] = FT_CURVE_TAG_CUBIC; + + /* Second control point */ + ctx->outline->points[n + 1].x = + HVF_COORD_TO_FIXED( params->addCubic.cp2.x, ctx->x_scale_fixed ); + ctx->outline->points[n + 1].y = + HVF_COORD_TO_FIXED( params->addCubic.cp2.y, ctx->y_scale_fixed ); + ctx->outline->tags[n + 1] = FT_CURVE_TAG_CUBIC; + + /* End point */ + ctx->outline->points[n + 2].x = + HVF_COORD_TO_FIXED( params->addCubic.onpt.x, ctx->x_scale_fixed ); + ctx->outline->points[n + 2].y = + HVF_COORD_TO_FIXED( params->addCubic.onpt.y, ctx->y_scale_fixed ); + ctx->outline->tags[n + 2] = FT_CURVE_TAG_ON; + + ctx->outline->n_points += 3; + + FT_TRACE5(( "hvf_render:" + " AddCubic (%.2f,%.2f) (%.2f,%.2f) (%.2f,%.2f)\n", + (double)ctx->outline->points[n].x / 64, + (double)ctx->outline->points[n].y / 64, + (double)ctx->outline->points[n + 1].x / 64, + (double)ctx->outline->points[n + 1].y / 64, + (double)ctx->outline->points[n + 2].x / 64, + (double)ctx->outline->points[n + 2].y / 64 )); + return HVFPartRenderActionContinue; + } + + case HVFPartRenderInstructionClosePath: + if ( ctx->path_begun && ctx->outline->n_points > 0 ) + { + /* Check space for contour. */ + error = FT_GLYPHLOADER_CHECK_POINTS( ctx->loader, 0, 1 ); + if ( error ) + return HVFPartRenderActionStop; + + /* Close current contour. */ + ctx->outline->contours[ctx->outline->n_contours++] = + (FT_UShort)( ctx->outline->n_points - 1 ); + + ctx->path_begun = 0; + } + + FT_TRACE5(( "hvf_render: ClosePath\n" )); + return HVFPartRenderActionContinue; + + case HVFPartRenderInstructionEndPath: + FT_TRACE5(( "hvf_render: EndPath\n" )); + return HVFPartRenderActionContinue; + + case HVFPartRenderInstructionEndPart: + FT_TRACE5(( "hvf_render: EndPart (part %zu)\n", + params->endPart.partInfo.partId )); + return HVFPartRenderActionContinue; + + case HVFPartRenderInstructionStop: + FT_TRACE5(( "hvf_render: Stop\n" )); + return HVFPartRenderActionStop; + + default: + FT_TRACE1(( "hvf_render: Unknown instruction %d\n", instruction )); + return HVFPartRenderActionStop; + } + } + + + /************************************************************************** + * + * @Function: + * hvf_slot_load_glyph + * + * @Description: + * Load a glyph using HVF rendering with TrueType integration. + * + * @Input: + * glyph :: + * The glyph slot. + * + * size :: + * The size object. + * + * glyph_index :: + * The glyph index. + * + * load_flags :: + * Load flags. + * + * @Return: + * FreeType error code. 0 means success. + */ + FT_LOCAL_DEF( FT_Error ) + hvf_slot_load_glyph( FT_GlyphSlot glyph, + FT_Size size, + FT_UInt glyph_index, + FT_Int32 load_flags ) + { + HVF_Face face = (HVF_Face)glyph->face; + FT_GlyphLoader loader = glyph->internal->loader; + HVF_RenderContext context; + + FT_Error error = FT_Err_Ok; + + FT_Bool apply_scaling = !( load_flags & FT_LOAD_NO_SCALE ); + + + if ( !face->renderer ) + { + FT_ERROR(( "hvf_slot_load_glyph: HVF renderer not initialized\n" )); + return FT_THROW( Invalid_Handle ); + } + + if ( glyph_index >= (FT_UInt)face->root.root.num_glyphs ) + return FT_THROW( Invalid_Glyph_Index ); + + /* Initialize render context. */ + context.loader = loader; + context.path_begun = 0; + + /* Pre-calculate scaling factors based on `FT_LOAD_NO_SCALE` flag. */ + context.x_scale_fixed = + FT_SCALE_TO_HVF_SCALE_FIXED( size->metrics.x_scale, apply_scaling ); + context.y_scale_fixed = + FT_SCALE_TO_HVF_SCALE_FIXED( size->metrics.y_scale, apply_scaling ); + + FT_TRACE3(( "hvf_slot_load_glyph:" + " %s\n" + " " + " (x_scale_fixed=%.1f, y_scale_fixed=%.1f)\n", + apply_scaling ? "scaling enabled" + : "FT_LOAD_NO_SCALE - no scaling applied", + context.x_scale_fixed, + context.y_scale_fixed )); + + /* Initialize glyph loader. */ + FT_GlyphLoader_Rewind( loader ); + context.outline = &loader->current.outline; + + /* Only the HVF API calls need `@available` protection. */ + if ( HVF_IS_AVAILABLE ) + { + int hvf_result; + + + /* Configure HVF renderer for this glyph. */ + hvf_result = HVF_set_render_part( (HVFPartRenderer*)face->renderer, + (HVFPartIndex)glyph_index ); + if ( hvf_result != 0 ) + { + FT_TRACE1(( "hvf_slot_load_glyph:" + " HVF_set_render_part failed (error %d)\n", + hvf_result )); + return FT_THROW( Invalid_Glyph_Index ); + } + + /* Set variation axis values for this glyph */ + /* (using TT_Face infrastructure). */ + error = hvf_set_variation_axes( face ); +#ifdef FT_DEBUG_LEVEL_TRACE + if ( error ) + { + /* Continue with rendering even if axis setting fails. */ + FT_TRACE1(( "hvf_slot_load_glyph:" + " hvf_set_variation_axes failed (error %d)\n", error )); + } +#endif + error = FT_Err_Ok; /* axis failure is non-fatal */ + + /* Render the glyph using HVF. */ + hvf_result = HVF_render_current_part( (HVFPartRenderer*)face->renderer, + hvf_render_callback, + &context ); + if ( hvf_result != 0 ) + { + FT_TRACE1(( "hvf_slot_load_glyph:" + " HVF_render_current_part failed (%d)\n", hvf_result )); + return FT_THROW( Invalid_Glyph_Index ); + } + } + else + { + FT_TRACE3(( "hvf_slot_load_glyph: HVF not available at runtime\n" )); + return FT_THROW( Unimplemented_Feature ); + } + + /* Close any open path. */ + if ( context.path_begun && context.outline->n_points > 0 ) + { + /* Check space for contour. */ + error = FT_GLYPHLOADER_CHECK_POINTS( loader, 0, 1 ); + if ( !error ) + { + context.outline->contours[context.outline->n_contours++] = + (FT_UShort)( context.outline->n_points - 1 ); + } + } + + /* Finalize glyph data with `FT_GlyphLoader`. */ + FT_GlyphLoader_Add( loader ); + + /* Set up glyph slot. */ + glyph->format = FT_GLYPH_FORMAT_OUTLINE; + glyph->outline = loader->base.outline; + + /* Nearly all HVF glyphs have overlapping contours, */ + /* since it is a stroke-based format */ + glyph->outline.flags |= FT_OUTLINE_OVERLAP; + + /* Set glyph metrics - get from TrueType infrastructure when possible. */ + { + FT_BBox bbox; + FT_UShort advance_width = 0; + FT_Short left_bearing = 0; + + TT_Face tt_face = (TT_Face)face; + SFNT_Service sfnt = (SFNT_Service)tt_face->sfnt; + + FT_Bool has_vertical_info; + FT_Pos top; /* vertical top side bearing */ + FT_Pos advance; /* vertical advance height */ + + + /* Get horizontal metrics from TrueType tables if available. */ + if ( sfnt && glyph_index < (FT_UInt)face->root.root.num_glyphs ) + sfnt->get_metrics( tt_face, 0, glyph_index, + &left_bearing, &advance_width ); + else + { + /* Fallback to reasonable defaults. */ + advance_width = (FT_UShort)( size->metrics.x_ppem ); + left_bearing = 0; + } + + glyph->metrics.horiAdvance = advance_width; + glyph->linearHoriAdvance = advance_width; + + /* Get vertical metrics from vmtx table or synthesize them, */ + /* consistent with TrueType and CFF drivers for SFNT-based fonts. */ + has_vertical_info = + FT_BOOL( tt_face->vertical_info && + tt_face->vertical.number_Of_VMetrics > 0 ); + + if ( has_vertical_info ) + { + FT_Short tsb = 0; + FT_UShort ah = 0; + + + sfnt->get_metrics( tt_face, 1, glyph_index, &tsb, &ah ); + + top = tsb; + advance = ah; + } + else + { + /* Use OS/2 or horizontal header for vertical advance. */ + if ( tt_face->os2.version != 0xFFFFU ) + advance = (FT_Pos)( tt_face->os2.sTypoAscender - + tt_face->os2.sTypoDescender ); + else + advance = (FT_Pos)( tt_face->horizontal.Ascender - + tt_face->horizontal.Descender ); + + top = 0; /* computed after bbox is known */ + } + + glyph->linearVertAdvance = advance; + + /* Scale table-derived metrics if needed. */ + /* Outline coordinates are already in the target coordinate */ + /* space (scaled in callback, or 26.6 font units for NO_SCALE) */ + /* so bbox-derived metrics need no additional scaling. */ + if ( apply_scaling ) + { + FT_Fixed x_scale = size->metrics.x_scale; + FT_Fixed y_scale = size->metrics.y_scale; + + + glyph->metrics.horiAdvance = FT_MulFix( glyph->metrics.horiAdvance, + x_scale ); + top = FT_MulFix( top, y_scale ); + advance = FT_MulFix( advance, y_scale ); + } + + /* Compute width, height, and bearing metrics from the glyph */ + /* outline bounding box, consistent with TrueType and CFF */ + /* drivers. */ + FT_Outline_Get_CBox( &glyph->outline, &bbox ); + + glyph->metrics.width = bbox.xMax - bbox.xMin; + glyph->metrics.height = bbox.yMax - bbox.yMin; + glyph->metrics.horiBearingX = bbox.xMin; + glyph->metrics.horiBearingY = bbox.yMax; + + /* Finalize vertical metrics. */ + /* vertBearingX centers the glyph horizontally for vertical */ + /* layout, matching both TrueType and CFF drivers. */ + /* When no vmtx data is available, vertBearingY centers the */ + /* glyph vertically within the advance height. */ + if ( !has_vertical_info ) + top = ( advance - glyph->metrics.height ) / 2; + + glyph->metrics.vertBearingX = glyph->metrics.horiBearingX - + glyph->metrics.horiAdvance / 2; + glyph->metrics.vertBearingY = top; + glyph->metrics.vertAdvance = advance; + } + + /* Cache management - clear cache every */ + /* `HVF_CACHE_CLEAR_COUNT` glyphs. */ + face->cache_count++; + if ( face->cache_count >= HVF_CACHE_CLEAR_COUNT ) + { + if ( HVF_IS_AVAILABLE ) + { + HVF_clear_part_cache( (HVFPartRenderer*)face->renderer ); + face->cache_count = 0; + FT_TRACE3(( "hvf_slot_load_glyph: cleared HVF cache\n" )); + } +#ifdef FT_DEBUG_LEVEL_TRACE + else + FT_TRACE3(( "hvf_slot_load_glyph:" + " HVF not available for cache clearing\n" )); +#endif + } + + FT_TRACE2(( "hvf_slot_load_glyph: glyph %u loaded successfully\n", + glyph_index )); + + return error; + } + +#else /* !FT_CONFIG_OPTION_HVF */ + + FT_LOCAL_DEF( FT_Error ) + hvf_slot_load_glyph( FT_GlyphSlot glyph, + FT_Size size, + FT_UInt glyph_index, + FT_Int32 load_flags ) + { + FT_UNUSED( glyph ); + FT_UNUSED( size ); + FT_UNUSED( glyph_index ); + FT_UNUSED( load_flags ); + + return FT_THROW( Unimplemented_Feature ); + } + +#endif /* !FT_CONFIG_OPTION_HVF */ + + +/* END */ diff --git a/vendor/freetype/src/hvf/hvfload.h b/vendor/freetype/src/hvf/hvfload.h new file mode 100644 index 00000000000..0207a55e5ff --- /dev/null +++ b/vendor/freetype/src/hvf/hvfload.h @@ -0,0 +1,42 @@ +/**************************************************************************** + * + * hvfload.h + * + * HVF glyph loading (specification). + * + * Copyright (C) 2025-2026 by + * Apple Inc. + * written by Deborah Goldsmith + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + +#ifndef HVFLOAD_H_ +#define HVFLOAD_H_ + + +#include +#include + + +FT_BEGIN_HEADER + + FT_LOCAL( FT_Error ) + hvf_slot_load_glyph( FT_GlyphSlot glyph, + FT_Size size, + FT_UInt glyph_index, + FT_Int32 load_flags ); + + +FT_END_HEADER + +#endif /* HVFLOAD_H_ */ + + +/* END */ diff --git a/vendor/freetype/src/hvf/hvfobjs.c b/vendor/freetype/src/hvf/hvfobjs.c new file mode 100644 index 00000000000..96536b8ef15 --- /dev/null +++ b/vendor/freetype/src/hvf/hvfobjs.c @@ -0,0 +1,510 @@ +/**************************************************************************** + * + * hvfobjs.c + * + * HVF objects manager (body). + * + * Copyright (C) 2025-2026 by + * Apple Inc. + * written by Deborah Goldsmith + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + +#include +#include +#include +#include +#include + +#include "hvfobjs.h" +#include "hvferror.h" + + + /************************************************************************** + * + * The macro FT_COMPONENT is used in trace mode. It is an implicit + * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log + * messages during execution. + */ +#undef FT_COMPONENT +#define FT_COMPONENT hvfobjs + + +#ifdef FT_CONFIG_OPTION_HVF + + /************************************************************************** + * + * FACE MANAGEMENT + * + */ + + static FT_Error + hvf_load_tables( HVF_Face face ) + { + FT_Error error; + FT_Stream stream; + TT_Face tt_face = (TT_Face)face; /* Cast to access TT_Face members. */ + + + /* Use the stream from TT_Face root. */ + stream = FT_FACE_STREAM( face ); + + /* Load required 'hvgl' table using memory mapping. */ + error = tt_face->goto_table( tt_face, TTAG_hvgl, + stream, &face->hvgl_size ); + if ( error ) + { + FT_TRACE2(( "hvf_load_tables: missing required 'hvgl' table\n" )); + return error; + } + + /* Memory-map the 'hvgl' table data instead of copying it. */ + if ( FT_FRAME_EXTRACT( face->hvgl_size, face->hvgl_data ) ) + { + face->hvgl_size = 0; + FT_TRACE2(( "hvf_load_tables: failed to extract 'hvgl' table\n" )); + return FT_THROW( Invalid_Table ); + } + + FT_TRACE2(( "hvf_load_tables: memory-mapped 'hvgl' table (%lu bytes)\n", + face->hvgl_size )); + + /* Load optional 'hvpm' table using memory mapping. */ + error = tt_face->goto_table( tt_face, TTAG_hvpm, + stream, &face->hvpm_size ); + if ( error ) + { + face->hvpm_data = NULL; /* Ensure NULL for pointer check. */ + face->hvpm_size = 0; + FT_TRACE2(( "hvf_load_tables: no 'hvpm' table found (optional)\n" )); + } + else + { + /* Memory-map the 'hvpm' table data instead of copying it. */ + if ( FT_FRAME_EXTRACT( face->hvpm_size, face->hvpm_data ) ) + { + face->hvpm_data = NULL; + face->hvpm_size = 0; + FT_TRACE2(( "hvf_load_tables: failed to extract 'hvpm' table\n" )); + } +#ifdef FT_DEBUG_LEVEL_TRACE + else + FT_TRACE2(( "hvf_load_tables:" + " memory-mapped 'hvpm' table (%lu bytes)\n", + face->hvpm_size )); +#endif + } + + return FT_Err_Ok; + } + + + static FT_Error + hvf_init_renderer( HVF_Face face ) + { + FT_Error error = FT_Err_Ok; + FT_Memory memory = FT_FACE_MEMORY( face ); + + size_t storage_size; + + + if ( !face->hvgl_data ) + return FT_THROW( Invalid_Table ); + + /* Create HVF renderer - only once per face. */ + if ( !face->renderer ) + { + if ( HVF_IS_AVAILABLE ) + { + int hvf_result; + + + /* Get required storage size. */ + storage_size = HVF_part_renderer_storage_size(); + if ( storage_size == 0 ) + { + FT_TRACE1(( "hvf_init_renderer:" + " HVF_part_renderer_storage_size failed\n" )); + return FT_THROW( Invalid_Table ); + } + + /* Allocate storage for renderer. */ + if ( FT_ALLOC( face->renderer, storage_size ) ) + return error; + + /* Initialize HVF renderer with 'hvgl' and optional 'hvpm' */ + /* table data. */ + hvf_result = + HVF_open_part_renderer( face->hvgl_data, + face->hvgl_size, + face->hvpm_data, /* NULL if missing */ + face->hvpm_size, /* 0 if missing */ + face->renderer, + storage_size ); + if ( hvf_result != 0 ) + { + FT_TRACE1(( "hvf_init_renderer:" + " HVF_open_part_renderer failed (error %d)\n", + hvf_result )); + FT_FREE( face->renderer ); + return FT_THROW( Invalid_Table ); + } + + face->cache_count = 0; + FT_TRACE2(( "hvf_init_renderer:" + " HVF renderer initialized (%s hvpm)\n", + face->hvpm_data ? "with" : "without" )); + } + else + { + FT_TRACE3(( "hvf_init_renderer: HVF not available at runtime\n" )); + return FT_THROW( Invalid_Table ); + } + } + + return error; + } + + + static FT_Error + hvf_init_axis_coordinates( HVF_Face face ) + { + FT_Error error = FT_Err_Ok; + FT_Memory memory = FT_FACE_MEMORY( face ); + FT_MM_Var* mm_var = NULL; + + + /* Initialize axis data. */ + face->num_axes = 0; + face->axis_coords = NULL; + + /* Check whether this is a variable font and get axis information. */ + error = FT_Get_MM_Var( (FT_Face)face, &mm_var ); + if ( error ) + { + /* Not a variable font or error getting variation info - */ + /* that's fine. */ + FT_TRACE3(( "hvf_init_axis_coordinates:" + " not a variable font or no MM info (error %x)\n", + error )); + return FT_Err_Ok; + } + + if ( mm_var && mm_var->num_axis > 0 ) + { + face->num_axes = mm_var->num_axis; + + /* Allocate storage for HVF axis coordinates. */ + if ( FT_QNEW_ARRAY( *(HVFAxisValue**)&face->axis_coords, + face->num_axes ) ) + { + face->num_axes = 0; + goto Cleanup; + } + + /* Initialize coordinates using the shared refresh function. */ + error = hvf_refresh_axis_coordinates( face ); + if ( error ) + { + FT_FREE( face->axis_coords ); + face->num_axes = 0; + goto Cleanup; + } + } + + Cleanup: + if ( mm_var ) + FT_Done_MM_Var( FT_FACE_LIBRARY( face ), mm_var ); + + return error; + } + + + FT_LOCAL_DEF( FT_Error ) + hvf_refresh_axis_coordinates( HVF_Face face ) + { + FT_Error error = FT_Err_Ok; + FT_Memory memory = FT_FACE_MEMORY( face ); + + FT_Fixed* ft_coords = NULL; + FT_UInt i; + + + /* Only refresh if we have cached coordinates. */ + if ( !face->axis_coords || face->num_axes == 0 ) + return FT_Err_Ok; + + /* Allocate temporary storage for current FreeType coordinates. */ + if ( FT_QNEW_ARRAY( ft_coords, face->num_axes ) ) + return error; + + /* Get current variation coordinates. */ + error = FT_Get_Var_Blend_Coordinates( (FT_Face)face, + face->num_axes, ft_coords ); + if ( error ) + { + /* If we can't get coordinates, set to defaults. */ + FT_ARRAY_ZERO( (HVFAxisValue*)face->axis_coords, face->num_axes ); + FT_TRACE3(( "hvf_refresh_axis_coordinates:" + " could not get blend coordinates, using defaults\n" )); + error = FT_Err_Ok; /* Not fatal. */ + } + else + { + /* Convert FreeType coordinates to HVF coordinates. */ + for ( i = 0; i < face->num_axes; i++ ) + { + ((HVFAxisValue*)face->axis_coords)[i] = + FT_COORD_TO_HVF_AXIS( ft_coords[i] ); + FT_TRACE5(( "hvf_refresh_axis_coordinates:" + " axis %u: FT coord %ld -> HVF coord %f\n", + i, ft_coords[i], + ((HVFAxisValue*)face->axis_coords)[i] )); + } + FT_TRACE3(( "hvf_refresh_axis_coordinates:" + " refreshed %u axis coordinates\n", face->num_axes )); + + /* Clear HVF renderer cache since axis coordinates changed. */ + /* Cached parts were rendered with old axis values and are */ + /* now invalid. */ + if ( face->renderer ) + { + if ( HVF_IS_AVAILABLE ) + { + HVF_clear_part_cache( (HVFPartRenderer*)face->renderer ); + face->cache_count = 0; + FT_TRACE4(( "hvf_refresh_axis_coordinates:" + " cleared HVF cache due to axis change\n" )); + } +#ifdef FT_DEBUG_LEVEL_TRACE + else + FT_TRACE3(( "hvf_refresh_axis_coordinates:" + " HVF not available at runtime\n" )); +#endif + } + } + + /* Free temporary FreeType coordinate storage. */ + FT_FREE( ft_coords ); + + return error; + } + + + /************************************************************************** + * + * @Function: + * hvf_face_init + * + * @Description: + * Initialize a given HVF face object. + * + * @Input: + * stream :: + * The source font stream. + * + * face_index :: + * The index of the font face in the resource. + * + * num_params :: + * Number of additional generic parameters. Ignored. + * + * params :: + * Additional generic parameters. Ignored. + * + * @InOut: + * face :: + * The newly built face object. + * + * @Return: + * FreeType error code. 0 means success. + */ + FT_LOCAL_DEF( FT_Error ) + hvf_face_init( FT_Stream stream, + FT_Face face, + FT_Int typeface_index, + FT_Int num_params, + FT_Parameter* parameters ) + { + FT_Error error; + + FT_Library library = FT_FACE_LIBRARY( face ); + SFNT_Service sfnt; + + TT_Face tt_face = (TT_Face)face; /* Cast to access TT_Face members. */ + + + FT_TRACE2(( "HVF driver\n" )); + + /* Check HVF availability at runtime (Apple platforms only). */ + if ( HVF_IS_AVAILABLE ) + ; /* `HVF_IS_AVAILABLE` must not be negated for strange reasons. */ + else + { + FT_TRACE2(( "hvf_face_init: HVF not available at runtime\n" )); + return FT_THROW( Unknown_File_Format ); + } + + /* Check for SFNT wrapper. */ + sfnt = (SFNT_Service)FT_Get_Module_Interface( library, "sfnt" ); + if ( !sfnt ) + { + FT_ERROR(( "hvf_face_init: cannot access 'sfnt' module\n" )); + error = FT_THROW( Missing_Module ); + goto Exit; + } + + /* Create input stream from resource. */ + if ( FT_STREAM_SEEK( 0 ) ) + goto Exit; + + FT_TRACE2(( " " )); + + /* Check that we have a valid HVF font. */ + error = sfnt->init_face( stream, tt_face, typeface_index, + num_params, parameters ); + if ( error ) + { + FT_TRACE1(( "hvf_face_init: sfnt initialization failed (%d)\n", + error )); + goto Exit; + } + + /* Verify this is actually an HVF font by checking for 'hvgl' table. */ + error = tt_face->goto_table( tt_face, TTAG_hvgl, stream, NULL ); + if ( error ) + { + FT_TRACE1(( "hvf_face_init:" + " not an HVF font (missing 'hvgl' table)\n" )); + error = FT_THROW( Unknown_File_Format ); + goto Exit; + } + + /* Mark face as scalable. */ + face->face_flags |= FT_FACE_FLAG_SCALABLE; + + /* If we are performing a simple font format check, exit immediately. */ + if ( typeface_index < 0 ) + return FT_Err_Ok; + + /* Load font directory. */ + error = sfnt->load_face( stream, tt_face, typeface_index, + num_params, parameters ); + if ( error ) + goto Exit; + + /* Load HVF-specific tables. */ + error = hvf_load_tables( (HVF_Face)face ); + if ( error ) + goto Exit; + + /* Initialize HVF renderer. */ + error = hvf_init_renderer( (HVF_Face)face ); + if ( error ) + goto Exit; + + /* Get variation axis information once during face initialization. */ + error = hvf_init_axis_coordinates( (HVF_Face)face ); + if ( error ) + goto Exit; + + FT_TRACE2(( "hvf_face_init: HVF face initialized successfully\n" )); + + Exit: + return error; + } + + + /************************************************************************** + * + * @Function: + * hvf_face_done + * + * @Description: + * Finalize a given face object. + * + * @Input: + * face :: + * A pointer to the face object to destroy. + */ + FT_LOCAL_DEF( void ) + hvf_face_done( FT_Face face ) + { + FT_Memory memory; + FT_Stream stream; + + TT_Face tt_face; + HVF_Face hvf_face; + + SFNT_Service sfnt; + + + if ( !face ) + return; + + memory = FT_FACE_MEMORY( face ); + stream = FT_FACE_STREAM( face ); + + hvf_face = (HVF_Face)face; + tt_face = (TT_Face)face; + + /* Use inherited SFNT service pointer */ + sfnt = (SFNT_Service)tt_face->sfnt; + + /* Clean up HVF renderer. */ + if ( hvf_face->renderer ) + { + if ( HVF_IS_AVAILABLE ) + HVF_close_part_renderer( (HVFPartRenderer*)hvf_face->renderer ); +#ifdef FT_DEBUG_LEVEL_TRACE + else + FT_TRACE3(( "hvf_face_done: HVF not available at runtime\n" )); +#endif + + FT_FREE( hvf_face->renderer ); + } + + /* Release axis coordinates storage. */ + if ( hvf_face->axis_coords ) + FT_FREE( hvf_face->axis_coords ); + + /* Release memory-mapped table data. */ + if ( hvf_face->hvgl_data ) + FT_FRAME_RELEASE( hvf_face->hvgl_data ); + if ( hvf_face->hvpm_data ) + FT_FRAME_RELEASE( hvf_face->hvpm_data ); + + /* Clean up SFNT (this will clean up the TT_Face base class). */ + if ( sfnt ) + sfnt->done_face( tt_face ); + } + +#else /* !FT_CONFIG_OPTION_HVF */ + + FT_LOCAL_DEF( FT_Error ) + hvf_face_init( FT_Stream stream, + FT_Face face, + FT_Int typeface_index, + FT_Int num_params, + FT_Parameter* parameters ) + { + FT_UNUSED( stream ); + FT_UNUSED( face ); + FT_UNUSED( typeface_index ); + FT_UNUSED( num_params ); + FT_UNUSED( parameters ); + + return FT_THROW( Unknown_File_Format ); + } + +#endif /* !FT_CONFIG_OPTION_HVF */ + + +/* END */ diff --git a/vendor/freetype/src/hvf/hvfobjs.h b/vendor/freetype/src/hvf/hvfobjs.h new file mode 100644 index 00000000000..ae9c90595e8 --- /dev/null +++ b/vendor/freetype/src/hvf/hvfobjs.h @@ -0,0 +1,154 @@ +/**************************************************************************** + * + * hvfobjs.h + * + * HVF objects manager (specification). + * + * Copyright (C) 2025-2026 by + * Apple Inc. + * written by Deborah Goldsmith + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + +#ifndef HVFOBJS_H_ +#define HVFOBJS_H_ + +#include +#include +#include +#include /* For TT_FaceRec. */ + + +FT_BEGIN_HEADER + + + /************************************************************************** + * + * @type: + * HVF_Face + * + * @description: + * A handle to an HVF face object. Always available for compatibility. + */ + typedef struct HVF_FaceRec_* HVF_Face; + + + /************************************************************************** + * + * @struct: + * HVF_FaceRec + * + * @description: + + * HVF face record. This structure inherits from `TT_FaceRec` instead of + * `FT_FaceRec` because HVF fonts are TrueType/OpenType fonts with + * additional HVF tables, and the HVF driver calls into SFNT functions + * that require `TT_Face` access. + * + * NOTE: Structure is always available with all fields always present. + * Only the implementation functions are conditionally compiled. + */ + typedef struct HVF_FaceRec_ + { + TT_FaceRec root; /* Inherit from `TT_FaceRec`. */ + + void* renderer; /* `HVFPartRenderer` storage or NULL. */ + + /* HVF-specific table data (memory-mapped). */ + FT_Byte* hvgl_data; /* 'hvgl' table data */ + FT_ULong hvgl_size; + FT_Byte* hvpm_data; /* 'hvpm' table data, NULL if not present. */ + FT_ULong hvpm_size; + + /* Cache management. */ + FT_UInt cache_count; /* Clear cache every N glyphs. */ + + /* Variation axis data (allocated once in `hvf_face_init`). */ + FT_UInt num_axes; /* Number of variation axes. */ + void* axis_coords; /* Pre-converted HVF axis coordinates */ + /* (HVFAxisValue* when configured). */ + + } HVF_FaceRec; + + + /* Conditional declarations - only when HVF is enabled. */ +#ifdef FT_CONFIG_OPTION_HVF + +#include + + /* Runtime availability checking for Apple platforms. */ +#ifdef HVF_RUNTIME_AVAILABLE + + /* Single macro that encapsulates the `__builtin_available` */ + /* check for C/C++. */ + /* */ + /* BEWARE: Only use this as `if ( HVS_IS_AVAILABLE ) ...` */ + /* Any deviation from this form (also including */ + /* negation) causes `clang` to emit a warning. */ +#define HVF_IS_AVAILABLE __builtin_available( macOS 15.4, iOS 18.4, * ) + +#else + + /* Non-Apple platforms: No runtime check needed. */ +#define HVF_IS_AVAILABLE ( 1 ) + +#endif /* HVF_RUNTIME_AVAILABLE */ + + + /************************************************************************** + * + * @struct: + * HVF_RenderContext + * + * @description: + * Context for HVF rendering callbacks. + */ + typedef struct HVF_RenderContext_ + { + FT_GlyphLoader loader; /* Standard FreeType loader. */ + FT_Outline* outline; /* Points to `loader->current.outline`. */ + FT_Bool path_begun; /* Path state tracking. */ + + /* Pre-calculated scaling factors for efficient coordinate conversion. */ + HVFXYCoord x_scale_fixed; /* x_scale * 65536.0 (or just 65536.0) */ + HVFXYCoord y_scale_fixed; /* y_scale * 65536.0 (or just 65536.0) */ + + } HVF_RenderContext; + + + /* Function declarations. */ + FT_LOCAL( void ) + hvf_face_done( FT_Face face ); + + FT_LOCAL( FT_Error ) + hvf_refresh_axis_coordinates( HVF_Face face ); + + + /* Convert FreeType normalized coordinates to HVF axis values. */ +#define FT_COORD_TO_HVF_AXIS( coord ) \ + ( (HVFAxisValue)(coord) / 65536.0 ) + +#endif /* FT_CONFIG_OPTION_HVF */ + + + FT_LOCAL( FT_Error ) + hvf_face_init( FT_Stream stream, + FT_Face face, + FT_Int typeface_index, + FT_Int num_params, + FT_Parameter* parameters ); + + +FT_END_HEADER + +#endif /* HVFOBJS_H_ */ + + +/* END */ diff --git a/vendor/freetype/src/hvf/module.mk b/vendor/freetype/src/hvf/module.mk new file mode 100644 index 00000000000..b404119e881 --- /dev/null +++ b/vendor/freetype/src/hvf/module.mk @@ -0,0 +1,23 @@ +# +# FreeType 2 HVF module definition +# + +# Copyright (C) 2025-2026 by +# Apple Inc. +# written by Deborah Goldsmith +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +FTMODULE_H_COMMANDS += HVF_DRIVER + +define HVF_DRIVER +$(OPEN_DRIVER) FT_Driver_ClassRec, hvf_driver_class $(CLOSE_DRIVER) +$(ECHO_DRIVER)hvf $(ECHO_DRIVER_DESC)Apple HVF fonts$(ECHO_DRIVER_DONE) +endef + +# EOF diff --git a/vendor/freetype/src/hvf/rules.mk b/vendor/freetype/src/hvf/rules.mk new file mode 100644 index 00000000000..7083ecefb0b --- /dev/null +++ b/vendor/freetype/src/hvf/rules.mk @@ -0,0 +1,73 @@ +# +# FreeType 2 HVF driver configuration rules +# + + +# Copyright (C) 2025-2026 by +# Apple Inc. +# written by Deborah Goldsmith +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +# HVF driver directory. +# +HVF_DIR := $(SRC_DIR)/hvf + + +# Compilation flags for the driver. +# +HVF_COMPILE := $(CC) $(ANSIFLAGS) \ + $I$(subst /,$(COMPILER_SEP),$(HVF_DIR)) \ + $(INCLUDE_FLAGS) \ + $(FT_CFLAGS) + +# HVF driver sources (i.e., C files). +# +HVF_DRV_SRC := $(HVF_DIR)/hvfdrv.c \ + $(HVF_DIR)/hvfload.c \ + $(HVF_DIR)/hvfobjs.c + +# HVF driver headers. +# +HVF_DRV_H := $(HVF_DRV_SRC:%.c=%.h) \ + $(HVF_DIR)/hvferror.h + + +# HVF driver object(s). +# +# HVF_DRV_OBJ_M is used during `multi' builds. +# HVF_DRV_OBJ_S is used during `single' builds. +# +HVF_DRV_OBJ_M := $(HVF_DRV_SRC:$(HVF_DIR)/%.c=$(OBJ_DIR)/%.$O) +HVF_DRV_OBJ_S := $(OBJ_DIR)/hvf.$O + + +# HVF driver source file for single build. +# +HVF_DRV_SRC_S := $(HVF_DIR)/hvf.c + + +# HVF driver - single object. +# +$(HVF_DRV_OBJ_S): $(HVF_DRV_SRC_S) $(HVF_DRV_SRC) $(FREETYPE_H) $(HVF_DRV_H) + $(HVF_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $(HVF_DRV_SRC_S)) + + +# HVF driver - multiple objects +# +$(OBJ_DIR)/%.$O: $(HVF_DIR)/%.c $(FREETYPE_H) $(HVF_DRV_H) + $(HVF_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<) + + +# Update main driver object lists. +# +DRV_OBJS_S += $(HVF_DRV_OBJ_S) +DRV_OBJS_M += $(HVF_DRV_OBJ_M) + + +# EOF diff --git a/vendor/freetype/src/lzw/ftlzw.c b/vendor/freetype/src/lzw/ftlzw.c index 09de4a10f54..ce5070d75fa 100644 --- a/vendor/freetype/src/lzw/ftlzw.c +++ b/vendor/freetype/src/lzw/ftlzw.c @@ -8,7 +8,7 @@ * be used to parse compressed PCF fonts, as found with many X11 server * distributions. * - * Copyright (C) 2004-2025 by + * Copyright (C) 2004-2026 by * Albert Chin-A-Young. * * based on code in `src/gzip/ftgzip.c' diff --git a/vendor/freetype/src/lzw/ftzopen.c b/vendor/freetype/src/lzw/ftzopen.c index 1dffedd03d6..3a42824902f 100644 --- a/vendor/freetype/src/lzw/ftzopen.c +++ b/vendor/freetype/src/lzw/ftzopen.c @@ -8,7 +8,7 @@ * be used to parse compressed PCF fonts, as found with many X11 server * distributions. * - * Copyright (C) 2005-2025 by + * Copyright (C) 2005-2026 by * David Turner. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/lzw/ftzopen.h b/vendor/freetype/src/lzw/ftzopen.h index e362a5366d2..9c06b367d86 100644 --- a/vendor/freetype/src/lzw/ftzopen.h +++ b/vendor/freetype/src/lzw/ftzopen.h @@ -8,7 +8,7 @@ * be used to parse compressed PCF fonts, as found with many X11 server * distributions. * - * Copyright (C) 2005-2025 by + * Copyright (C) 2005-2026 by * David Turner. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/lzw/rules.mk b/vendor/freetype/src/lzw/rules.mk index 9d29b0b60c7..ec996bb918a 100644 --- a/vendor/freetype/src/lzw/rules.mk +++ b/vendor/freetype/src/lzw/rules.mk @@ -3,7 +3,7 @@ # -# Copyright (C) 2004-2025 by +# Copyright (C) 2004-2026 by # Albert Chin-A-Young. # # based on `src/lzw/rules.mk' diff --git a/vendor/freetype/src/otvalid/module.mk b/vendor/freetype/src/otvalid/module.mk index a025a5418b2..dadc349f3a7 100644 --- a/vendor/freetype/src/otvalid/module.mk +++ b/vendor/freetype/src/otvalid/module.mk @@ -3,7 +3,7 @@ # -# Copyright (C) 2004-2025 by +# Copyright (C) 2004-2026 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/vendor/freetype/src/otvalid/otvalid.c b/vendor/freetype/src/otvalid/otvalid.c index 6ca90581ef3..e68a0823fe7 100644 --- a/vendor/freetype/src/otvalid/otvalid.c +++ b/vendor/freetype/src/otvalid/otvalid.c @@ -4,7 +4,7 @@ * * FreeType validator for OpenType tables (body only). * - * Copyright (C) 2004-2025 by + * Copyright (C) 2004-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/otvalid/otvalid.h b/vendor/freetype/src/otvalid/otvalid.h index 2b5598e0cd2..6ab7c65cb42 100644 --- a/vendor/freetype/src/otvalid/otvalid.h +++ b/vendor/freetype/src/otvalid/otvalid.h @@ -4,7 +4,7 @@ * * OpenType table validation (specification only). * - * Copyright (C) 2004-2025 by + * Copyright (C) 2004-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/otvalid/otvbase.c b/vendor/freetype/src/otvalid/otvbase.c index cbaf4c27ce0..8cea1319395 100644 --- a/vendor/freetype/src/otvalid/otvbase.c +++ b/vendor/freetype/src/otvalid/otvbase.c @@ -4,7 +4,7 @@ * * OpenType BASE table validation (body). * - * Copyright (C) 2004-2025 by + * Copyright (C) 2004-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/otvalid/otvcommn.c b/vendor/freetype/src/otvalid/otvcommn.c index d6ca7eefe0a..a6771c78265 100644 --- a/vendor/freetype/src/otvalid/otvcommn.c +++ b/vendor/freetype/src/otvalid/otvcommn.c @@ -4,7 +4,7 @@ * * OpenType common tables validation (body). * - * Copyright (C) 2004-2025 by + * Copyright (C) 2004-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -390,7 +390,7 @@ } - /* uses valid->lookup_count */ + /* sets otvalid->lookup_count */ FT_LOCAL_DEF( void ) otv_LookupList_validate( FT_Bytes table, @@ -488,7 +488,7 @@ OTV_TRACE(( " (FeatureCount = %u)\n", FeatureCount )); - OTV_LIMIT_CHECK( FeatureCount * 2 ); + OTV_LIMIT_CHECK( FeatureCount * 6 ); otvalid->lookup_count = otv_LookupList_get_count( lookups ); @@ -846,7 +846,7 @@ } - /* sets otvalid->extra1 (valid->lookup_count) */ + /* sets otvalid->extra1 (otvalid->lookup_count) */ FT_LOCAL_DEF( void ) otv_u_O_O_x_Onx( FT_Bytes table, @@ -874,7 +874,7 @@ OTV_LIMIT_CHECK( ClassSetCount * 2 ); otvalid->nesting_level++; - func = otvalid->func[otvalid->nesting_level]; + func = otvalid->func[otvalid->nesting_level]; otvalid->extra1 = otvalid->lookup_count; for ( ; ClassSetCount > 0; ClassSetCount-- ) @@ -931,7 +931,7 @@ } - /* sets otvalid->extra1 (valid->lookup_count) */ + /* sets otvalid->extra1 (otvalid->lookup_count) */ FT_LOCAL_DEF( void ) otv_u_O_O_O_O_x_Onx( FT_Bytes table, @@ -966,7 +966,7 @@ OTV_LIMIT_CHECK( ChainClassSetCount * 2 ); otvalid->nesting_level++; - func = otvalid->func[otvalid->nesting_level]; + func = otvalid->func[otvalid->nesting_level]; otvalid->extra1 = otvalid->lookup_count; for ( ; ChainClassSetCount > 0; ChainClassSetCount-- ) diff --git a/vendor/freetype/src/otvalid/otvcommn.h b/vendor/freetype/src/otvalid/otvcommn.h index 20f38b495b8..4648e70dee2 100644 --- a/vendor/freetype/src/otvalid/otvcommn.h +++ b/vendor/freetype/src/otvalid/otvcommn.h @@ -4,7 +4,7 @@ * * OpenType common tables validation (specification). * - * Copyright (C) 2004-2025 by + * Copyright (C) 2004-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/otvalid/otverror.h b/vendor/freetype/src/otvalid/otverror.h index 17fb5fb840d..d1c2c4b56cf 100644 --- a/vendor/freetype/src/otvalid/otverror.h +++ b/vendor/freetype/src/otvalid/otverror.h @@ -4,7 +4,7 @@ * * OpenType validation module error codes (specification only). * - * Copyright (C) 2004-2025 by + * Copyright (C) 2004-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/otvalid/otvgdef.c b/vendor/freetype/src/otvalid/otvgdef.c index cee0601485f..08d0a68d684 100644 --- a/vendor/freetype/src/otvalid/otvgdef.c +++ b/vendor/freetype/src/otvalid/otvgdef.c @@ -4,7 +4,7 @@ * * OpenType GDEF table validation (body). * - * Copyright (C) 2004-2025 by + * Copyright (C) 2004-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -41,7 +41,7 @@ #define AttachListFunc otv_O_x_Ox #define LigCaretListFunc otv_O_x_Ox - /* sets valid->extra1 (0) */ + /* sets otvalid->extra1 (0) */ static void otv_O_x_Ox( FT_Bytes table, diff --git a/vendor/freetype/src/otvalid/otvgpos.c b/vendor/freetype/src/otvalid/otvgpos.c index e0d860801ef..b9e36bd833b 100644 --- a/vendor/freetype/src/otvalid/otvgpos.c +++ b/vendor/freetype/src/otvalid/otvgpos.c @@ -4,7 +4,7 @@ * * OpenType GPOS table validation (body). * - * Copyright (C) 2002-2025 by + * Copyright (C) 2002-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -33,11 +33,11 @@ static void otv_Anchor_validate( FT_Bytes table, - OTV_Validator valid ); + OTV_Validator otvalid ); static void otv_MarkArray_validate( FT_Bytes table, - OTV_Validator valid ); + OTV_Validator otvalid ); /*************************************************************************/ @@ -52,8 +52,8 @@ #define LigatureAttachFunc otv_x_sxy #define Mark2ArrayFunc otv_x_sxy - /* uses valid->extra1 (counter) */ - /* uses valid->extra2 (boolean to handle NULL anchor field) */ + /* uses otvalid->extra1 (counter) */ + /* uses otvalid->extra2 (boolean to handle NULL anchor field) */ static void otv_x_sxy( FT_Bytes table, diff --git a/vendor/freetype/src/otvalid/otvgpos.h b/vendor/freetype/src/otvalid/otvgpos.h index 2fc1309e1c2..8539801fd93 100644 --- a/vendor/freetype/src/otvalid/otvgpos.h +++ b/vendor/freetype/src/otvalid/otvgpos.h @@ -4,7 +4,7 @@ * * OpenType GPOS table validator (specification). * - * Copyright (C) 2004-2025 by + * Copyright (C) 2004-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/otvalid/otvgsub.c b/vendor/freetype/src/otvalid/otvgsub.c index 0df97d8dbb1..2669be37c9f 100644 --- a/vendor/freetype/src/otvalid/otvgsub.c +++ b/vendor/freetype/src/otvalid/otvgsub.c @@ -4,7 +4,7 @@ * * OpenType GSUB table validation (body). * - * Copyright (C) 2004-2025 by + * Copyright (C) 2004-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/otvalid/otvjstf.c b/vendor/freetype/src/otvalid/otvjstf.c index 8909612d9fc..6706e1a7f88 100644 --- a/vendor/freetype/src/otvalid/otvjstf.c +++ b/vendor/freetype/src/otvalid/otvjstf.c @@ -4,7 +4,7 @@ * * OpenType JSTF table validation (body). * - * Copyright (C) 2004-2025 by + * Copyright (C) 2004-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/otvalid/otvmath.c b/vendor/freetype/src/otvalid/otvmath.c index 78e6c669261..80d78890bee 100644 --- a/vendor/freetype/src/otvalid/otvmath.c +++ b/vendor/freetype/src/otvalid/otvmath.c @@ -4,7 +4,7 @@ * * OpenType MATH table validation (body). * - * Copyright (C) 2007-2025 by + * Copyright (C) 2007-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * Written by George Williams. diff --git a/vendor/freetype/src/otvalid/otvmod.c b/vendor/freetype/src/otvalid/otvmod.c index d2456cb58f1..946c81902fd 100644 --- a/vendor/freetype/src/otvalid/otvmod.c +++ b/vendor/freetype/src/otvalid/otvmod.c @@ -4,7 +4,7 @@ * * FreeType's OpenType validation module implementation (body). * - * Copyright (C) 2004-2025 by + * Copyright (C) 2004-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/otvalid/otvmod.h b/vendor/freetype/src/otvalid/otvmod.h index aec6f66574c..f00f98f1250 100644 --- a/vendor/freetype/src/otvalid/otvmod.h +++ b/vendor/freetype/src/otvalid/otvmod.h @@ -5,7 +5,7 @@ * FreeType's OpenType validation module implementation * (specification). * - * Copyright (C) 2004-2025 by + * Copyright (C) 2004-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/otvalid/rules.mk b/vendor/freetype/src/otvalid/rules.mk index e2546499757..83c426829d6 100644 --- a/vendor/freetype/src/otvalid/rules.mk +++ b/vendor/freetype/src/otvalid/rules.mk @@ -3,7 +3,7 @@ # -# Copyright (C) 2004-2025 by +# Copyright (C) 2004-2026 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/vendor/freetype/src/pcf/pcfdrivr.c b/vendor/freetype/src/pcf/pcfdrivr.c index ecd68495163..11977c51edb 100644 --- a/vendor/freetype/src/pcf/pcfdrivr.c +++ b/vendor/freetype/src/pcf/pcfdrivr.c @@ -378,6 +378,8 @@ THE SOFTWARE. } error = FT_CMap_New( &pcf_cmap_class, NULL, &charmap, NULL ); + if ( error ) + PCF_Face_Done( face ); } } @@ -456,6 +458,7 @@ THE SOFTWARE. PCF_Face face = (PCF_Face)size->face; FT_Stream stream; FT_Error error = FT_Err_Ok; + FT_Int width, height; FT_Bitmap* bitmap = &slot->bitmap; PCF_Metric metric; FT_ULong bytes; @@ -479,29 +482,36 @@ THE SOFTWARE. metric = face->metrics + glyph_index; - bitmap->rows = (unsigned int)( metric->ascent + - metric->descent ); - bitmap->width = (unsigned int)( metric->rightSideBearing - - metric->leftSideBearing ); + height = metric->ascent + metric->descent; + width = metric->rightSideBearing - metric->leftSideBearing; + + /* sanity checks against reasonable size */ + if ( height < 0 || height > 4 * size->metrics.y_ppem ) + height = 0; + if ( width < 0 || width > 4 * size->metrics.x_ppem ) + width = 0; + + bitmap->rows = (unsigned int)height; + bitmap->width = (unsigned int)width; bitmap->num_grays = 1; bitmap->pixel_mode = FT_PIXEL_MODE_MONO; switch ( PCF_GLYPH_PAD( face->bitmapsFormat ) ) { case 1: - bitmap->pitch = (int)( ( bitmap->width + 7 ) >> 3 ); + bitmap->pitch = ( width + 7 ) >> 3; break; case 2: - bitmap->pitch = (int)( ( ( bitmap->width + 15 ) >> 4 ) << 1 ); + bitmap->pitch = ( ( width + 15 ) >> 4 ) << 1; break; case 4: - bitmap->pitch = (int)( ( ( bitmap->width + 31 ) >> 5 ) << 2 ); + bitmap->pitch = ( ( width + 31 ) >> 5 ) << 2; break; case 8: - bitmap->pitch = (int)( ( ( bitmap->width + 63 ) >> 6 ) << 3 ); + bitmap->pitch = ( ( width + 63 ) >> 6 ) << 3; break; default: @@ -515,9 +525,8 @@ THE SOFTWARE. slot->metrics.horiAdvance = (FT_Pos)( metric->characterWidth * 64 ); slot->metrics.horiBearingX = (FT_Pos)( metric->leftSideBearing * 64 ); slot->metrics.horiBearingY = (FT_Pos)( metric->ascent * 64 ); - slot->metrics.width = (FT_Pos)( ( metric->rightSideBearing - - metric->leftSideBearing ) * 64 ); - slot->metrics.height = (FT_Pos)( bitmap->rows * 64 ); + slot->metrics.width = (FT_Pos)( width * 64 ); + slot->metrics.height = (FT_Pos)( height * 64 ); ft_synthesize_vertical_metrics( &slot->metrics, ( face->accel.fontAscent + @@ -527,12 +536,12 @@ THE SOFTWARE. goto Exit; /* XXX: to do: are there cases that need repadding the bitmap? */ - bytes = (FT_ULong)bitmap->pitch * bitmap->rows; - - error = ft_glyphslot_alloc_bitmap( slot, (FT_ULong)bytes ); + error = ft_glyphslot_alloc_bitmap( slot ); if ( error ) goto Exit; + bytes = (FT_ULong)bitmap->pitch * bitmap->rows; + if ( FT_STREAM_SEEK( metric->bits ) || FT_STREAM_READ( bitmap->buffer, bytes ) ) goto Exit; diff --git a/vendor/freetype/src/pcf/pcfread.c b/vendor/freetype/src/pcf/pcfread.c index 9c250c84649..49d5171630d 100644 --- a/vendor/freetype/src/pcf/pcfread.c +++ b/vendor/freetype/src/pcf/pcfread.c @@ -783,22 +783,6 @@ THE SOFTWARE. if ( error ) break; - - /* sanity checks -- those values are used in `PCF_Glyph_Load' to */ - /* compute a glyph's bitmap dimensions, thus setting them to zero in */ - /* case of an error disables this particular glyph only */ - if ( metrics->rightSideBearing < metrics->leftSideBearing || - metrics->ascent < -metrics->descent ) - { - metrics->characterWidth = 0; - metrics->leftSideBearing = 0; - metrics->rightSideBearing = 0; - metrics->ascent = 0; - metrics->descent = 0; - - FT_TRACE0(( "pcf_get_metrics:" - " invalid metrics for glyph %lu\n", i )); - } } if ( error ) diff --git a/vendor/freetype/src/pfr/module.mk b/vendor/freetype/src/pfr/module.mk index d08c5cfb995..9d57e36bb5d 100644 --- a/vendor/freetype/src/pfr/module.mk +++ b/vendor/freetype/src/pfr/module.mk @@ -3,7 +3,7 @@ # -# Copyright (C) 2002-2025 by +# Copyright (C) 2002-2026 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/vendor/freetype/src/pfr/pfr.c b/vendor/freetype/src/pfr/pfr.c index ecfc4f22c88..260c2703cef 100644 --- a/vendor/freetype/src/pfr/pfr.c +++ b/vendor/freetype/src/pfr/pfr.c @@ -4,7 +4,7 @@ * * FreeType PFR driver component. * - * Copyright (C) 2002-2025 by + * Copyright (C) 2002-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/pfr/pfrcmap.c b/vendor/freetype/src/pfr/pfrcmap.c index 489b1a5ddd3..786aaa1163e 100644 --- a/vendor/freetype/src/pfr/pfrcmap.c +++ b/vendor/freetype/src/pfr/pfrcmap.c @@ -4,7 +4,7 @@ * * FreeType PFR cmap handling (body). * - * Copyright (C) 2002-2025 by + * Copyright (C) 2002-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/pfr/pfrcmap.h b/vendor/freetype/src/pfr/pfrcmap.h index acf4b508da2..9ebb3f23daf 100644 --- a/vendor/freetype/src/pfr/pfrcmap.h +++ b/vendor/freetype/src/pfr/pfrcmap.h @@ -4,7 +4,7 @@ * * FreeType PFR cmap handling (specification). * - * Copyright (C) 2002-2025 by + * Copyright (C) 2002-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/pfr/pfrdrivr.c b/vendor/freetype/src/pfr/pfrdrivr.c index 268924b5062..31f3509bb7d 100644 --- a/vendor/freetype/src/pfr/pfrdrivr.c +++ b/vendor/freetype/src/pfr/pfrdrivr.c @@ -4,7 +4,7 @@ * * FreeType PFR driver interface (body). * - * Copyright (C) 2002-2025 by + * Copyright (C) 2002-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/pfr/pfrdrivr.h b/vendor/freetype/src/pfr/pfrdrivr.h index 61aadb97382..2c75a14d789 100644 --- a/vendor/freetype/src/pfr/pfrdrivr.h +++ b/vendor/freetype/src/pfr/pfrdrivr.h @@ -4,7 +4,7 @@ * * High-level Type PFR driver interface (specification). * - * Copyright (C) 2002-2025 by + * Copyright (C) 2002-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/pfr/pfrerror.h b/vendor/freetype/src/pfr/pfrerror.h index 479e3728f46..78cbac32f88 100644 --- a/vendor/freetype/src/pfr/pfrerror.h +++ b/vendor/freetype/src/pfr/pfrerror.h @@ -4,7 +4,7 @@ * * PFR error codes (specification only). * - * Copyright (C) 2002-2025 by + * Copyright (C) 2002-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/pfr/pfrgload.c b/vendor/freetype/src/pfr/pfrgload.c index a694ba18109..68849b4a113 100644 --- a/vendor/freetype/src/pfr/pfrgload.c +++ b/vendor/freetype/src/pfr/pfrgload.c @@ -4,7 +4,7 @@ * * FreeType PFR glyph loader (body). * - * Copyright (C) 2002-2025 by + * Copyright (C) 2002-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/pfr/pfrgload.h b/vendor/freetype/src/pfr/pfrgload.h index 5886ed364e7..81a05327835 100644 --- a/vendor/freetype/src/pfr/pfrgload.h +++ b/vendor/freetype/src/pfr/pfrgload.h @@ -4,7 +4,7 @@ * * FreeType PFR glyph loader (specification). * - * Copyright (C) 2002-2025 by + * Copyright (C) 2002-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/pfr/pfrload.c b/vendor/freetype/src/pfr/pfrload.c index 07867b45da4..1105ba4812b 100644 --- a/vendor/freetype/src/pfr/pfrload.c +++ b/vendor/freetype/src/pfr/pfrload.c @@ -4,7 +4,7 @@ * * FreeType PFR loader (body). * - * Copyright (C) 2002-2025 by + * Copyright (C) 2002-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/pfr/pfrload.h b/vendor/freetype/src/pfr/pfrload.h index f530a0a5838..a2f3bcc3df9 100644 --- a/vendor/freetype/src/pfr/pfrload.h +++ b/vendor/freetype/src/pfr/pfrload.h @@ -4,7 +4,7 @@ * * FreeType PFR loader (specification). * - * Copyright (C) 2002-2025 by + * Copyright (C) 2002-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/pfr/pfrobjs.c b/vendor/freetype/src/pfr/pfrobjs.c index 39ad3cc7dfd..9fdd84a86d9 100644 --- a/vendor/freetype/src/pfr/pfrobjs.c +++ b/vendor/freetype/src/pfr/pfrobjs.c @@ -4,7 +4,7 @@ * * FreeType PFR object methods (body). * - * Copyright (C) 2002-2025 by + * Copyright (C) 2002-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/pfr/pfrobjs.h b/vendor/freetype/src/pfr/pfrobjs.h index 850bf5b4a68..3ad74e97d37 100644 --- a/vendor/freetype/src/pfr/pfrobjs.h +++ b/vendor/freetype/src/pfr/pfrobjs.h @@ -4,7 +4,7 @@ * * FreeType PFR object methods (specification). * - * Copyright (C) 2002-2025 by + * Copyright (C) 2002-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/pfr/pfrsbit.c b/vendor/freetype/src/pfr/pfrsbit.c index 08db4c45930..515089a65b6 100644 --- a/vendor/freetype/src/pfr/pfrsbit.c +++ b/vendor/freetype/src/pfr/pfrsbit.c @@ -4,7 +4,7 @@ * * FreeType PFR bitmap loader (body). * - * Copyright (C) 2002-2025 by + * Copyright (C) 2002-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -785,20 +785,15 @@ goto Exit1; /* Allocate and read bitmap data */ - { - FT_ULong len = (FT_ULong)glyph->root.bitmap.pitch * ysize; - - - error = ft_glyphslot_alloc_bitmap( &glyph->root, len ); - if ( !error ) - error = pfr_load_bitmap_bits( + error = ft_glyphslot_alloc_bitmap( &glyph->root ); + if ( !error ) + error = pfr_load_bitmap_bits( p, stream->limit, format, FT_BOOL( face->header.color_flags & PFR_FLAG_INVERT_BITMAP ), &glyph->root.bitmap ); - } } Exit1: diff --git a/vendor/freetype/src/pfr/pfrsbit.h b/vendor/freetype/src/pfr/pfrsbit.h index c5c27e36b15..639f8c8182a 100644 --- a/vendor/freetype/src/pfr/pfrsbit.h +++ b/vendor/freetype/src/pfr/pfrsbit.h @@ -4,7 +4,7 @@ * * FreeType PFR bitmap loader (specification). * - * Copyright (C) 2002-2025 by + * Copyright (C) 2002-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/pfr/pfrtypes.h b/vendor/freetype/src/pfr/pfrtypes.h index 83461cb16b7..54cc09ca395 100644 --- a/vendor/freetype/src/pfr/pfrtypes.h +++ b/vendor/freetype/src/pfr/pfrtypes.h @@ -4,7 +4,7 @@ * * FreeType PFR data structures (specification only). * - * Copyright (C) 2002-2025 by + * Copyright (C) 2002-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/pfr/rules.mk b/vendor/freetype/src/pfr/rules.mk index 56af03bcdff..842d88eac60 100644 --- a/vendor/freetype/src/pfr/rules.mk +++ b/vendor/freetype/src/pfr/rules.mk @@ -3,7 +3,7 @@ # -# Copyright (C) 2002-2025 by +# Copyright (C) 2002-2026 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/vendor/freetype/src/psaux/afmparse.c b/vendor/freetype/src/psaux/afmparse.c index b813efde4eb..1cc8ab29d46 100644 --- a/vendor/freetype/src/psaux/afmparse.c +++ b/vendor/freetype/src/psaux/afmparse.c @@ -4,7 +4,7 @@ * * AFM parser (body). * - * Copyright (C) 2006-2025 by + * Copyright (C) 2006-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/psaux/afmparse.h b/vendor/freetype/src/psaux/afmparse.h index add8597717d..02a9617b8dc 100644 --- a/vendor/freetype/src/psaux/afmparse.h +++ b/vendor/freetype/src/psaux/afmparse.h @@ -4,7 +4,7 @@ * * AFM parser (specification). * - * Copyright (C) 2006-2025 by + * Copyright (C) 2006-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/psaux/cffdecode.c b/vendor/freetype/src/psaux/cffdecode.c index 17bdd23c7d4..908a8112615 100644 --- a/vendor/freetype/src/psaux/cffdecode.c +++ b/vendor/freetype/src/psaux/cffdecode.c @@ -4,7 +4,7 @@ * * PostScript CFF (Type 2) decoding routines (body). * - * Copyright (C) 2017-2025 by + * Copyright (C) 2017-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/psaux/cffdecode.h b/vendor/freetype/src/psaux/cffdecode.h index e72ec043baa..0836a642b2f 100644 --- a/vendor/freetype/src/psaux/cffdecode.h +++ b/vendor/freetype/src/psaux/cffdecode.h @@ -4,7 +4,7 @@ * * PostScript CFF (Type 2) decoding routines (specification). * - * Copyright (C) 2017-2025 by + * Copyright (C) 2017-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/psaux/module.mk b/vendor/freetype/src/psaux/module.mk index b9598f43451..2c6ddacb967 100644 --- a/vendor/freetype/src/psaux/module.mk +++ b/vendor/freetype/src/psaux/module.mk @@ -3,7 +3,7 @@ # -# Copyright (C) 1996-2025 by +# Copyright (C) 1996-2026 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/vendor/freetype/src/psaux/psaux.c b/vendor/freetype/src/psaux/psaux.c index 37b5f8b2c69..f0c3c2ef97b 100644 --- a/vendor/freetype/src/psaux/psaux.c +++ b/vendor/freetype/src/psaux/psaux.c @@ -4,7 +4,7 @@ * * FreeType auxiliary PostScript driver component (body only). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/psaux/psauxerr.h b/vendor/freetype/src/psaux/psauxerr.h index 0d7fe2b6121..5766482d1b7 100644 --- a/vendor/freetype/src/psaux/psauxerr.h +++ b/vendor/freetype/src/psaux/psauxerr.h @@ -4,7 +4,7 @@ * * PS auxiliary module error codes (specification only). * - * Copyright (C) 2001-2025 by + * Copyright (C) 2001-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/psaux/psauxmod.c b/vendor/freetype/src/psaux/psauxmod.c index 942804190c5..2f9eb87484c 100644 --- a/vendor/freetype/src/psaux/psauxmod.c +++ b/vendor/freetype/src/psaux/psauxmod.c @@ -4,7 +4,7 @@ * * FreeType auxiliary PostScript module implementation (body). * - * Copyright (C) 2000-2025 by + * Copyright (C) 2000-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/psaux/psauxmod.h b/vendor/freetype/src/psaux/psauxmod.h index 4a5ebc1b607..e7fa15c34b7 100644 --- a/vendor/freetype/src/psaux/psauxmod.h +++ b/vendor/freetype/src/psaux/psauxmod.h @@ -4,7 +4,7 @@ * * FreeType auxiliary PostScript module implementation (specification). * - * Copyright (C) 2000-2025 by + * Copyright (C) 2000-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/psaux/psconv.c b/vendor/freetype/src/psaux/psconv.c index 4567d3f3c06..3a054cbbf6d 100644 --- a/vendor/freetype/src/psaux/psconv.c +++ b/vendor/freetype/src/psaux/psconv.c @@ -4,7 +4,7 @@ * * Some convenience conversions (body). * - * Copyright (C) 2006-2025 by + * Copyright (C) 2006-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/psaux/psconv.h b/vendor/freetype/src/psaux/psconv.h index 63735af411f..fc123faea4d 100644 --- a/vendor/freetype/src/psaux/psconv.h +++ b/vendor/freetype/src/psaux/psconv.h @@ -4,7 +4,7 @@ * * Some convenience conversions (specification). * - * Copyright (C) 2006-2025 by + * Copyright (C) 2006-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/psaux/psintrp.c b/vendor/freetype/src/psaux/psintrp.c index 7e3475e6f58..4db0a544aed 100644 --- a/vendor/freetype/src/psaux/psintrp.c +++ b/vendor/freetype/src/psaux/psintrp.c @@ -415,7 +415,7 @@ /* Blend numOperands on the stack, */ /* store results into the first numBlends values, */ /* then pop remaining arguments. */ - static void + static FT_Error cf2_doBlend( const CFF_Blend blend, CF2_Stack opStack, CF2_UInt numBlends ) @@ -424,9 +424,13 @@ CF2_UInt base; CF2_UInt i, j; CF2_UInt numOperands = (CF2_UInt)( numBlends * blend->lenBV ); + CF2_UInt count = cf2_stack_count( opStack ); + + if ( numOperands > count ) + return FT_THROW( Stack_Underflow ); - base = cf2_stack_count( opStack ) - numOperands; + base = count - numOperands; delta = base + numBlends; FT_TRACE6(( " (" )); @@ -455,6 +459,8 @@ /* leave only `numBlends' results on stack */ cf2_stack_pop( opStack, numOperands - numBlends ); + + return FT_Err_Ok; } @@ -769,13 +775,10 @@ /* do the blend */ numBlends = (FT_UInt)cf2_stack_popInt( opStack ); - if ( numBlends > stackSize ) - { - lastError = FT_THROW( Invalid_Glyph_Format ); - goto exit; - } - cf2_doBlend( &font->blend, opStack, numBlends ); + lastError = cf2_doBlend( &font->blend, opStack, numBlends ); + if ( lastError ) + goto exit; font->blend.usedBV = TRUE; } @@ -985,8 +988,8 @@ FT_TRACE4(( "%s", op1 == cf2_cmdCALLGSUBR ? " callgsubr" : " callsubr" )); - if ( ( !font->isT1 && charstringIndex > CF2_MAX_SUBR ) || - ( font->isT1 && charstringIndex > T1_MAX_SUBRS_CALLS ) ) + if ( ( !font->isT1 && charstringIndex >= CF2_MAX_SUBR ) || + ( font->isT1 && charstringIndex >= T1_MAX_SUBRS_CALLS ) ) { /* max subr plus one for charstring */ lastError = FT_THROW( Invalid_Glyph_Format ); diff --git a/vendor/freetype/src/psaux/psobjs.c b/vendor/freetype/src/psaux/psobjs.c index 8159fd6ef15..5019f9925c1 100644 --- a/vendor/freetype/src/psaux/psobjs.c +++ b/vendor/freetype/src/psaux/psobjs.c @@ -4,7 +4,7 @@ * * Auxiliary functions for PostScript fonts (body). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/psaux/psobjs.h b/vendor/freetype/src/psaux/psobjs.h index 277aa1247c5..04205f891b1 100644 --- a/vendor/freetype/src/psaux/psobjs.h +++ b/vendor/freetype/src/psaux/psobjs.h @@ -4,7 +4,7 @@ * * Auxiliary functions for PostScript fonts (specification). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/psaux/psstack.c b/vendor/freetype/src/psaux/psstack.c index 797486588a3..1360ba30dab 100644 --- a/vendor/freetype/src/psaux/psstack.c +++ b/vendor/freetype/src/psaux/psstack.c @@ -211,7 +211,7 @@ CF2_UInt idx, CF2_Fixed val ) { - if ( idx > cf2_stack_count( stack ) ) + if ( idx >= cf2_stack_count( stack ) ) { CF2_SET_ERROR( stack->error, Stack_Overflow ); return; @@ -245,6 +245,7 @@ CF2_StackNumber last = { { 0 }, CF2_NumberInt }; CF2_Int start_idx, idx, i; + CF2_Int offset; if ( count < 2 ) @@ -256,6 +257,8 @@ return; } + offset = (CF2_Int)cf2_stack_count( stack ) - count; + /* before C99 it is implementation-defined whether */ /* the result of `%' is negative if the first operand */ /* is negative */ @@ -303,7 +306,7 @@ { start_idx++; idx = start_idx; - last = stack->buffer[idx]; + last = stack->buffer[idx + offset]; } idx += shift; @@ -312,9 +315,9 @@ else if ( idx < 0 ) idx += count; - tmp = stack->buffer[idx]; - stack->buffer[idx] = last; - last = tmp; + tmp = stack->buffer[idx + offset]; + stack->buffer[idx + offset] = last; + last = tmp; } } diff --git a/vendor/freetype/src/psaux/rules.mk b/vendor/freetype/src/psaux/rules.mk index cc4215fc5fe..ace45afb467 100644 --- a/vendor/freetype/src/psaux/rules.mk +++ b/vendor/freetype/src/psaux/rules.mk @@ -3,7 +3,7 @@ # -# Copyright (C) 1996-2025 by +# Copyright (C) 1996-2026 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/vendor/freetype/src/psaux/t1cmap.c b/vendor/freetype/src/psaux/t1cmap.c index 66493b68123..686ca7abdfa 100644 --- a/vendor/freetype/src/psaux/t1cmap.c +++ b/vendor/freetype/src/psaux/t1cmap.c @@ -4,7 +4,7 @@ * * Type 1 character map support (body). * - * Copyright (C) 2002-2025 by + * Copyright (C) 2002-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/psaux/t1cmap.h b/vendor/freetype/src/psaux/t1cmap.h index 114bfbb0410..be66a0c7f6f 100644 --- a/vendor/freetype/src/psaux/t1cmap.h +++ b/vendor/freetype/src/psaux/t1cmap.h @@ -4,7 +4,7 @@ * * Type 1 character map support (specification). * - * Copyright (C) 2002-2025 by + * Copyright (C) 2002-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/psaux/t1decode.c b/vendor/freetype/src/psaux/t1decode.c index c3fb343d4c9..ece512412da 100644 --- a/vendor/freetype/src/psaux/t1decode.c +++ b/vendor/freetype/src/psaux/t1decode.c @@ -4,7 +4,7 @@ * * PostScript Type 1 decoding routines (body). * - * Copyright (C) 2000-2025 by + * Copyright (C) 2000-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -458,6 +458,7 @@ FT_Bool large_int; FT_Fixed seed; + FT_UInt len_buildchar; T1_Hints_Funcs hinter; #ifdef FT_DEBUG_LEVEL_TRACE @@ -483,13 +484,16 @@ hinter = (T1_Hints_Funcs)builder->hints_funcs; - /* a font that reads BuildCharArray without setting */ - /* its values first is buggy, but ... */ - FT_ASSERT( ( decoder->len_buildchar == 0 ) == - ( decoder->buildchar == NULL ) ); + /* Cache `len_buildchar` locally so that a stray write to the */ + /* decoder structure during charstring processing cannot bypass */ + /* the bounds checks in callothersubr 19/24/25 handlers. */ + len_buildchar = decoder->len_buildchar; - if ( decoder->buildchar && decoder->len_buildchar > 0 ) - FT_ARRAY_ZERO( decoder->buildchar, decoder->len_buildchar ); + FT_ASSERT( ( len_buildchar == 0 ) == + ( decoder->buildchar == NULL ) ); + + if ( decoder->buildchar && len_buildchar > 0 ) + FT_ARRAY_ZERO( decoder->buildchar, len_buildchar ); zone->base = charstring_base; limit = zone->limit = charstring_base + charstring_len; @@ -969,8 +973,8 @@ idx = Fix2Int( top[0] ); - if ( idx < 0 || - (FT_UInt)idx + blend->num_designs > decoder->len_buildchar ) + if ( idx < 0 || + (FT_UInt)idx + blend->num_designs > len_buildchar ) goto Unexpected_OtherSubr; ft_memcpy( &decoder->buildchar[idx], @@ -1037,7 +1041,7 @@ idx = Fix2UInt( top[1] ); - if ( idx >= decoder->len_buildchar ) + if ( idx >= len_buildchar ) goto Unexpected_OtherSubr; decoder->buildchar[idx] = top[0]; @@ -1058,7 +1062,7 @@ idx = Fix2UInt( top[0] ); - if ( idx >= decoder->len_buildchar ) + if ( idx >= len_buildchar ) goto Unexpected_OtherSubr; top[0] = decoder->buildchar[idx]; @@ -1204,14 +1208,14 @@ #ifdef FT_DEBUG_LEVEL_TRACE - if ( decoder->len_buildchar > 0 ) + if ( len_buildchar > 0 ) { FT_UInt i; FT_TRACE4(( "BuildCharArray = [ " )); - for ( i = 0; i < decoder->len_buildchar; i++ ) + for ( i = 0; i < len_buildchar; i++ ) FT_TRACE4(( "%ld ", decoder->buildchar[i] )); FT_TRACE4(( "]\n" )); @@ -1523,6 +1527,15 @@ goto Syntax_Error; } + /* Ensure that popping an unknown 'othersubr' result does not */ + /* push the stack pointer past the end of the stack array. */ + if ( top - decoder->stack >= T1_MAX_CHARSTRINGS_OPERANDS ) + { + FT_ERROR(( "t1_decoder_parse_charstrings:" + " stack overflow in pop\n" )); + goto Syntax_Error; + } + unknown_othersubr_result_cnt--; top++; /* `push' the operand to callothersubr onto the stack */ break; diff --git a/vendor/freetype/src/psaux/t1decode.h b/vendor/freetype/src/psaux/t1decode.h index 7b913f55dff..1b5d5205a86 100644 --- a/vendor/freetype/src/psaux/t1decode.h +++ b/vendor/freetype/src/psaux/t1decode.h @@ -4,7 +4,7 @@ * * PostScript Type 1 decoding routines (specification). * - * Copyright (C) 2000-2025 by + * Copyright (C) 2000-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/pshinter/module.mk b/vendor/freetype/src/pshinter/module.mk index 0238368a337..96aa535228a 100644 --- a/vendor/freetype/src/pshinter/module.mk +++ b/vendor/freetype/src/pshinter/module.mk @@ -3,7 +3,7 @@ # -# Copyright (C) 1996-2025 by +# Copyright (C) 1996-2026 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/vendor/freetype/src/pshinter/pshalgo.c b/vendor/freetype/src/pshinter/pshalgo.c index ca30702321d..f169fc3459d 100644 --- a/vendor/freetype/src/pshinter/pshalgo.c +++ b/vendor/freetype/src/pshinter/pshalgo.c @@ -4,7 +4,7 @@ * * PostScript hinting algorithm (body). * - * Copyright (C) 2001-2025 by + * Copyright (C) 2001-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used @@ -35,10 +35,6 @@ #endif -#define COMPUTE_INFLEXS /* compute inflection points to optimize `S' */ - /* and similar glyphs */ - - /*************************************************************************/ /*************************************************************************/ /***** *****/ @@ -920,117 +916,6 @@ #define psh_corner_orientation ft_corner_orientation -#ifdef COMPUTE_INFLEXS - - /* compute all inflex points in a given glyph */ - static void - psh_glyph_compute_inflections( PSH_Glyph glyph ) - { - FT_UInt n; - - - for ( n = 0; n < glyph->num_contours; n++ ) - { - PSH_Point first, start, end, before, after; - FT_Pos in_x, in_y, out_x, out_y; - FT_Int orient_prev, orient_cur; - FT_Int finished = 0; - - - /* we need at least 4 points to create an inflection point */ - if ( glyph->contours[n].count < 4 ) - continue; - - /* compute first segment in contour */ - first = glyph->contours[n].start; - - start = end = first; - do - { - end = end->next; - if ( end == first ) - goto Skip; - - in_x = end->org_u - start->org_u; - in_y = end->org_v - start->org_v; - - } while ( in_x == 0 && in_y == 0 ); - - /* extend the segment start whenever possible */ - before = start; - do - { - do - { - start = before; - before = before->prev; - if ( before == first ) - goto Skip; - - out_x = start->org_u - before->org_u; - out_y = start->org_v - before->org_v; - - } while ( out_x == 0 && out_y == 0 ); - - orient_prev = psh_corner_orientation( in_x, in_y, out_x, out_y ); - - } while ( orient_prev == 0 ); - - first = start; - in_x = out_x; - in_y = out_y; - - /* now, process all segments in the contour */ - do - { - /* first, extend current segment's end whenever possible */ - after = end; - do - { - do - { - end = after; - after = after->next; - if ( after == first ) - finished = 1; - - out_x = after->org_u - end->org_u; - out_y = after->org_v - end->org_v; - - } while ( out_x == 0 && out_y == 0 ); - - orient_cur = psh_corner_orientation( in_x, in_y, out_x, out_y ); - - } while ( orient_cur == 0 ); - - if ( ( orient_cur ^ orient_prev ) < 0 ) - { - do - { - psh_point_set_inflex( start ); - start = start->next; - } - while ( start != end ); - - psh_point_set_inflex( start ); - } - - start = end; - end = after; - orient_prev = orient_cur; - in_x = out_x; - in_y = out_y; - - } while ( !finished ); - - Skip: - ; - } - } - -#endif /* COMPUTE_INFLEXS */ - - static void psh_glyph_done( PSH_Glyph glyph ) { @@ -1258,11 +1143,6 @@ glyph->outline = outline; glyph->globals = globals; -#ifdef COMPUTE_INFLEXS - psh_glyph_load_points( glyph, 0 ); - psh_glyph_compute_inflections( glyph ); -#endif /* COMPUTE_INFLEXS */ - /* now deal with hints tables */ error = psh_hint_table_init( &glyph->hint_tables [0], &ps_hints->dimension[0].hints, @@ -1285,122 +1165,47 @@ } - /* compute all extrema in a glyph for a given dimension */ + /* compute all extreme and inflection points */ + /* in a glyph for a given dimension */ static void psh_glyph_compute_extrema( PSH_Glyph glyph ) { FT_UInt n; - /* first of all, compute all local extrema */ for ( n = 0; n < glyph->num_contours; n++ ) { - PSH_Point first = glyph->contours[n].start; - PSH_Point point, before, after; + PSH_Point first, point, before, after; - if ( glyph->contours[n].count == 0 ) + /* we need at least 3 points to create an extremum */ + if ( glyph->contours[n].count < 3 ) continue; - point = first; - before = point; + first = glyph->contours[n].start; + point = first->prev; + after = first; do { - before = before->prev; - if ( before == first ) - goto Skip; - - } while ( before->org_u == point->org_u ); - - first = point = before->next; - - for (;;) - { - after = point; - do - { - after = after->next; - if ( after == first ) - goto Next; - - } while ( after->org_u == point->org_u ); - - if ( before->org_u < point->org_u ) - { - if ( after->org_u < point->org_u ) - { - /* local maximum */ - goto Extremum; - } - } - else /* before->org_u > point->org_u */ - { - if ( after->org_u > point->org_u ) - { - /* local minimum */ - Extremum: - do - { - psh_point_set_extremum( point ); - point = point->next; - - } while ( point != after ); - } - } - - before = after->prev; + before = point; point = after; + after = point->next; - } /* for */ - - Next: - ; - } - - /* for each extremum, determine its direction along the */ - /* orthogonal axis */ - for ( n = 0; n < glyph->num_points; n++ ) - { - PSH_Point point, before, after; - - - point = &glyph->points[n]; - before = point; - after = point; - - if ( psh_point_is_extremum( point ) ) - { - do - { - before = before->prev; - if ( before == point ) - goto Skip; - - } while ( before->org_v == point->org_v ); - - do - { - after = after->next; - if ( after == point ) - goto Skip; + if ( ( before->org_u < point->org_u && point->org_u < after->org_u ) || + ( before->org_u > point->org_u && point->org_u > after->org_u ) ) + continue; - } while ( after->org_v == point->org_v ); - } + /* otherwise this is either extremum or inflection point */ + psh_point_set_extremum( point ); - if ( before->org_v < point->org_v && - after->org_v > point->org_v ) - { - psh_point_set_positive( point ); - } - else if ( before->org_v > point->org_v && - after->org_v < point->org_v ) - { - psh_point_set_negative( point ); - } + /* also note its direction */ + if ( before->org_v < after->org_v ) + psh_point_set_positive( point ); + else if ( before->org_v > after->org_v ) + psh_point_set_negative( point ); - Skip: - ; + } while ( after != first ); } } @@ -1836,8 +1641,7 @@ point->dir_in != point->dir_out ) continue; - if ( !psh_point_is_extremum( point ) && - !psh_point_is_inflex( point ) ) + if ( !psh_point_is_extremum( point ) ) continue; point->flags &= ~PSH_POINT_SMOOTH; diff --git a/vendor/freetype/src/pshinter/pshalgo.h b/vendor/freetype/src/pshinter/pshalgo.h index f4aa8540559..95d41b49aaf 100644 --- a/vendor/freetype/src/pshinter/pshalgo.h +++ b/vendor/freetype/src/pshinter/pshalgo.h @@ -4,7 +4,7 @@ * * PostScript hinting algorithm (specification). * - * Copyright (C) 2001-2025 by + * Copyright (C) 2001-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/pshinter/pshglob.c b/vendor/freetype/src/pshinter/pshglob.c index 521a5ff6c5c..2e4efea068c 100644 --- a/vendor/freetype/src/pshinter/pshglob.c +++ b/vendor/freetype/src/pshinter/pshglob.c @@ -5,7 +5,7 @@ * PostScript hinter global hinting management (body). * Inspired by the new auto-hinter module. * - * Copyright (C) 2001-2025 by + * Copyright (C) 2001-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used @@ -376,36 +376,24 @@ /* not. We simply need to compare the vertical scale */ /* parameter to the raw bluescale value. Here is why: */ /* */ - /* We need to suppress overshoots for all pointsizes. */ - /* At 300dpi that satisfies: */ + /* The specs explain how the bluescale is calculated */ + /* from the desired maximum rounded pointsize at 300 dpi */ + /* and assuming upem of 1000. */ /* */ - /* pointsize < 240*bluescale + 0.49 */ + /* bluescale = ( pointsize - 0.49 ) / 240 */ /* */ - /* This corresponds to: */ + /* For unrounded pointsize in general terms */ /* */ - /* pixelsize < 1000*bluescale + 49/24 */ + /* bluescale = ( pointsize * dpi / 72 ) / upem */ /* */ - /* scale*EM_Size < 1000*bluescale + 49/24 */ + /* which is */ /* */ - /* However, for normal Type 1 fonts, EM_Size is 1000! */ - /* We thus only check: */ + /* bluescale = pixelsize / upem */ /* */ - /* scale < bluescale + 49/24000 */ + /* Therefore, the bluescale value can be used directly */ + /* as a scale limit, now that it is in comparable units */ /* */ - /* which we shorten to */ - /* */ - /* "scale < bluescale" */ - /* */ - /* Note that `blue_scale' is stored 1000 times its real */ - /* value, and that `scale' converts from font units to */ - /* fractional pixels. */ - /* */ - - /* 1000 / 64 = 125 / 8 */ - if ( scale >= 0x20C49BAL ) - blues->no_overshoots = FT_BOOL( scale < blues->blue_scale * 8 / 125 ); - else - blues->no_overshoots = FT_BOOL( scale * 125 < blues->blue_scale * 8 ); + blues->no_overshoots = FT_BOOL( scale < blues->blue_scale ); /* */ /* The blue threshold is the font units distance under */ @@ -420,8 +408,8 @@ FT_Int threshold = blues->blue_shift; - while ( threshold > 0 && FT_MulFix( threshold, scale ) > 32 ) - threshold--; + if ( threshold > 0 && FT_MulFix( threshold, scale ) > 32 ) + threshold = 32 * 0x10000L / scale; blues->blue_threshold = threshold; } @@ -708,7 +696,6 @@ /* limit the BlueScale value to `1 / max_of_blue_zone_heights' */ { - FT_Fixed max_scale; FT_Short max_height = 1; @@ -725,11 +712,12 @@ priv->family_other_blues, max_height ); - /* BlueScale is scaled 1000 times */ - max_scale = FT_DivFix( 1000, max_height ); - globals->blues.blue_scale = priv->blue_scale < max_scale - ? priv->blue_scale - : max_scale; + /* restrict BlueScale value that is amplified 1000-fold and */ + /* rescale it to be comparable to the metrics scale */ + if ( FT_MulFix( max_height, priv->blue_scale ) < 1000 ) + globals->blues.blue_scale = priv->blue_scale * 8 / 125; + else + globals->blues.blue_scale = 64 * 0x10000L / max_height; } globals->blues.blue_shift = priv->blue_shift; diff --git a/vendor/freetype/src/pshinter/pshglob.h b/vendor/freetype/src/pshinter/pshglob.h index 555e99facb2..0158b92ab9d 100644 --- a/vendor/freetype/src/pshinter/pshglob.h +++ b/vendor/freetype/src/pshinter/pshglob.h @@ -4,7 +4,7 @@ * * PostScript hinter global hinting management. * - * Copyright (C) 2001-2025 by + * Copyright (C) 2001-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/pshinter/pshinter.c b/vendor/freetype/src/pshinter/pshinter.c index 140c7b2f92f..f22de34bd4a 100644 --- a/vendor/freetype/src/pshinter/pshinter.c +++ b/vendor/freetype/src/pshinter/pshinter.c @@ -4,7 +4,7 @@ * * FreeType PostScript Hinting module * - * Copyright (C) 2001-2025 by + * Copyright (C) 2001-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/pshinter/pshmod.c b/vendor/freetype/src/pshinter/pshmod.c index c9f4a94fe98..f6b2e2df94c 100644 --- a/vendor/freetype/src/pshinter/pshmod.c +++ b/vendor/freetype/src/pshinter/pshmod.c @@ -4,7 +4,7 @@ * * FreeType PostScript hinter module implementation (body). * - * Copyright (C) 2001-2025 by + * Copyright (C) 2001-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/pshinter/pshmod.h b/vendor/freetype/src/pshinter/pshmod.h index de9c398e9fb..d68ef9a8736 100644 --- a/vendor/freetype/src/pshinter/pshmod.h +++ b/vendor/freetype/src/pshinter/pshmod.h @@ -4,7 +4,7 @@ * * PostScript hinter module interface (specification). * - * Copyright (C) 2001-2025 by + * Copyright (C) 2001-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/pshinter/pshnterr.h b/vendor/freetype/src/pshinter/pshnterr.h index 7076664ddde..96bc3a31756 100644 --- a/vendor/freetype/src/pshinter/pshnterr.h +++ b/vendor/freetype/src/pshinter/pshnterr.h @@ -4,7 +4,7 @@ * * PS Hinter error codes (specification only). * - * Copyright (C) 2003-2025 by + * Copyright (C) 2003-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/pshinter/pshrec.c b/vendor/freetype/src/pshinter/pshrec.c index 13754313fbb..f14c9c7cbda 100644 --- a/vendor/freetype/src/pshinter/pshrec.c +++ b/vendor/freetype/src/pshinter/pshrec.c @@ -4,7 +4,7 @@ * * FreeType PostScript hints recorder (body). * - * Copyright (C) 2001-2025 by + * Copyright (C) 2001-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/pshinter/pshrec.h b/vendor/freetype/src/pshinter/pshrec.h index a79069f98d2..0b644f5b964 100644 --- a/vendor/freetype/src/pshinter/pshrec.h +++ b/vendor/freetype/src/pshinter/pshrec.h @@ -4,7 +4,7 @@ * * Postscript (Type1/Type2) hints recorder (specification). * - * Copyright (C) 2001-2025 by + * Copyright (C) 2001-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/pshinter/rules.mk b/vendor/freetype/src/pshinter/rules.mk index 6c3066b83d8..7a3b8f5e33b 100644 --- a/vendor/freetype/src/pshinter/rules.mk +++ b/vendor/freetype/src/pshinter/rules.mk @@ -3,7 +3,7 @@ # -# Copyright (C) 2001-2025 by +# Copyright (C) 2001-2026 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/vendor/freetype/src/psnames/module.mk b/vendor/freetype/src/psnames/module.mk index 9a645532a5e..bcda0067c82 100644 --- a/vendor/freetype/src/psnames/module.mk +++ b/vendor/freetype/src/psnames/module.mk @@ -3,7 +3,7 @@ # -# Copyright (C) 1996-2025 by +# Copyright (C) 1996-2026 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/vendor/freetype/src/psnames/psmodule.c b/vendor/freetype/src/psnames/psmodule.c index c5d71edad88..5409c61fafa 100644 --- a/vendor/freetype/src/psnames/psmodule.c +++ b/vendor/freetype/src/psnames/psmodule.c @@ -4,7 +4,7 @@ * * psnames module implementation (body). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/psnames/psmodule.h b/vendor/freetype/src/psnames/psmodule.h index 482fd0a36d1..7a619d83fb3 100644 --- a/vendor/freetype/src/psnames/psmodule.h +++ b/vendor/freetype/src/psnames/psmodule.h @@ -4,7 +4,7 @@ * * High-level psnames module interface (specification). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/psnames/psnamerr.h b/vendor/freetype/src/psnames/psnamerr.h index 17987f9cd4f..bef9e797c80 100644 --- a/vendor/freetype/src/psnames/psnamerr.h +++ b/vendor/freetype/src/psnames/psnamerr.h @@ -4,7 +4,7 @@ * * PS names module error codes (specification only). * - * Copyright (C) 2001-2025 by + * Copyright (C) 2001-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/psnames/psnames.c b/vendor/freetype/src/psnames/psnames.c index 77ea42c5168..b0ade9874da 100644 --- a/vendor/freetype/src/psnames/psnames.c +++ b/vendor/freetype/src/psnames/psnames.c @@ -4,7 +4,7 @@ * * FreeType psnames module component (body only). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/psnames/pstables.h b/vendor/freetype/src/psnames/pstables.h index 65ce6c0b47f..8a32aac325f 100644 --- a/vendor/freetype/src/psnames/pstables.h +++ b/vendor/freetype/src/psnames/pstables.h @@ -4,7 +4,7 @@ * * PostScript glyph names. * - * Copyright (C) 2005-2025 by + * Copyright (C) 2005-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/psnames/rules.mk b/vendor/freetype/src/psnames/rules.mk index 71bfd64e198..7b0f1d6b47f 100644 --- a/vendor/freetype/src/psnames/rules.mk +++ b/vendor/freetype/src/psnames/rules.mk @@ -3,7 +3,7 @@ # -# Copyright (C) 1996-2025 by +# Copyright (C) 1996-2026 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/vendor/freetype/src/raster/ftmisc.h b/vendor/freetype/src/raster/ftmisc.h index 9d97223e94e..cf96cd09ed5 100644 --- a/vendor/freetype/src/raster/ftmisc.h +++ b/vendor/freetype/src/raster/ftmisc.h @@ -5,7 +5,7 @@ * Miscellaneous macros for stand-alone rasterizer (specification * only). * - * Copyright (C) 2005-2025 by + * Copyright (C) 2005-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used diff --git a/vendor/freetype/src/raster/ftraster.c b/vendor/freetype/src/raster/ftraster.c index 807d444e7aa..cf1f7f9dc55 100644 --- a/vendor/freetype/src/raster/ftraster.c +++ b/vendor/freetype/src/raster/ftraster.c @@ -4,7 +4,7 @@ * * The FreeType glyph rasterizer (body). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -546,7 +546,7 @@ * */ - if ( High ) + if ( High && ras.bTop + ras.bRight < 256 ) { ras.precision_bits = 12; ras.precision_step = 256; @@ -1351,17 +1351,9 @@ /* this arc has no given direction, split it! */ Split_Conic( arc ); arc += 2; + continue; } - else if ( y1 == y3 ) - { - /* this arc is flat, advance position */ - /* and pop it from the Bezier stack */ - arc -= 2; - - ras.lastX = x3; - ras.lastY = y3; - } - else + else if ( y1 != y3 ) { /* the arc is y-monotonous, either ascending or descending */ /* detect a change of direction */ @@ -1389,13 +1381,16 @@ if ( Bezier_Down( RAS_VARS 2, arc, Split_Conic, ras.minY, ras.maxY ) ) goto Fail; - arc -= 2; - - ras.lastX = x3; - ras.lastY = y3; } - } while ( arc >= arcs ); + ras.lastX = x3; + ras.lastY = y3; + + if ( arc == arcs ) + break; + arc -= 2; + + } while ( 1 ); return SUCCESS; @@ -1498,17 +1493,9 @@ /* this arc has no given direction, split it! */ Split_Cubic( arc ); arc += 3; + continue; } - else if ( y1 == y4 ) - { - /* this arc is flat, advance position */ - /* and pop it from the Bezier stack */ - arc -= 3; - - ras.lastX = x4; - ras.lastY = y4; - } - else + else if ( y1 != y4 ) { state_bez = y1 < y4 ? Ascending_State : Descending_State; @@ -1535,13 +1522,16 @@ if ( Bezier_Down( RAS_VARS 3, arc, Split_Cubic, ras.minY, ras.maxY ) ) goto Fail; - arc -= 3; - - ras.lastX = x4; - ras.lastY = y4; } - } while ( arc >= arcs ); + ras.lastX = x4; + ras.lastY = y4; + + if ( arc == arcs ) + break; + arc -= 3; + + } while ( 1 ); return SUCCESS; @@ -2457,9 +2447,8 @@ Int y_min, Int y_max ) { - Int y_mid; - Int band_top = 0; - Int band_stack[32]; /* enough to bisect 32-bit int bands */ + Int band_stack[32]; /* enough to bisect 32-bit int bands */ + Int* band = band_stack; FT_TRACE6(( "%s pass [%d..%d]\n", @@ -2486,10 +2475,8 @@ FT_TRACE6(( "band [%d..%d]: to be bisected\n", y_min, y_max )); - y_mid = ( y_min + y_max ) >> 1; - - band_stack[band_top++] = y_min; - y_min = y_mid + 1; + *band++ = y_min; + y_min = ( y_min + y_max + 1 ) >> 1; } else { @@ -2500,11 +2487,11 @@ if ( ras.fProfile ) Draw_Sweep( RAS_VAR ); - if ( --band_top < 0 ) - break; + if ( band == band_stack ) + break; /* done */ y_max = y_min - 1; - y_min = band_stack[band_top]; + y_min = *--band; } } @@ -2527,12 +2514,8 @@ Render_Glyph( RAS_ARG ) { FT_Error error; - Long buffer[FT_MAX_BLACK_POOL]; - ras.buff = buffer; - ras.sizeBuff = (&buffer)[1]; /* Points to right after buffer. */ - Set_High_Precision( RAS_VARS ras.outline.flags & FT_OUTLINE_HIGH_PRECISION ); @@ -2675,6 +2658,9 @@ const FT_Outline* outline = (const FT_Outline*)params->source; const FT_Bitmap* target_map = params->target; + FT_ULong estimate; + int ret; + #ifndef FT_STATIC_RASTER black_TWorker worker[1]; #endif @@ -2722,7 +2708,36 @@ if ( ras.bPitch > 0 ) ras.bOrigin += ras.bTop * ras.bPitch; - return Render_Glyph( RAS_VAR ); + /* allocate memory based on empirical estimate from CJK fonts */ + estimate = ( ras.bTop + ras.bRight ) * 8UL + + 80UL * sizeof ( TProfile ) / sizeof ( Long ); + if ( estimate > FT_MAX_BLACK_POOL ) + { + FT_Error error; + FT_Memory memory = (FT_Memory)((black_PRaster)raster)->memory; + + + if ( FT_QNEW_ARRAY( ras.buff, estimate ) ) + ret = error; + else + { + ras.sizeBuff = ras.buff + estimate; + ret = Render_Glyph( RAS_VAR ); + FT_FREE( ras.buff ); + } + } + else + { + Long buffer[FT_MAX_BLACK_POOL]; /* stack allocation */ + + + ras.buff = buffer; + ras.sizeBuff = (&buffer)[1]; /* Points to right after buffer. */ + + ret = Render_Glyph( RAS_VAR ); + } + + return ret; } diff --git a/vendor/freetype/src/raster/ftraster.h b/vendor/freetype/src/raster/ftraster.h index 64499bf955b..e20184ddc8e 100644 --- a/vendor/freetype/src/raster/ftraster.h +++ b/vendor/freetype/src/raster/ftraster.h @@ -4,7 +4,7 @@ * * The FreeType glyph rasterizer (specification). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used diff --git a/vendor/freetype/src/raster/ftrend1.c b/vendor/freetype/src/raster/ftrend1.c index 3fa008704e5..6b28cb0bf8d 100644 --- a/vendor/freetype/src/raster/ftrend1.c +++ b/vendor/freetype/src/raster/ftrend1.c @@ -4,7 +4,7 @@ * * The FreeType glyph rasterizer interface (body). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/raster/ftrend1.h b/vendor/freetype/src/raster/ftrend1.h index d838a942b04..92249a0cb9f 100644 --- a/vendor/freetype/src/raster/ftrend1.h +++ b/vendor/freetype/src/raster/ftrend1.h @@ -4,7 +4,7 @@ * * The FreeType glyph rasterizer interface (specification). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/raster/module.mk b/vendor/freetype/src/raster/module.mk index 7292b72d9a8..7f7567c07ea 100644 --- a/vendor/freetype/src/raster/module.mk +++ b/vendor/freetype/src/raster/module.mk @@ -3,7 +3,7 @@ # -# Copyright (C) 1996-2025 by +# Copyright (C) 1996-2026 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/vendor/freetype/src/raster/raster.c b/vendor/freetype/src/raster/raster.c index 1b1be144a5a..df2ec38d42e 100644 --- a/vendor/freetype/src/raster/raster.c +++ b/vendor/freetype/src/raster/raster.c @@ -4,7 +4,7 @@ * * FreeType monochrome rasterer module component (body only). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/raster/rasterrs.h b/vendor/freetype/src/raster/rasterrs.h index 39d82a8051a..744d179cd8c 100644 --- a/vendor/freetype/src/raster/rasterrs.h +++ b/vendor/freetype/src/raster/rasterrs.h @@ -4,7 +4,7 @@ * * monochrome renderer error codes (specification only). * - * Copyright (C) 2001-2025 by + * Copyright (C) 2001-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/raster/rules.mk b/vendor/freetype/src/raster/rules.mk index 0ae560e8a97..90af6d1852a 100644 --- a/vendor/freetype/src/raster/rules.mk +++ b/vendor/freetype/src/raster/rules.mk @@ -3,7 +3,7 @@ # -# Copyright (C) 1996-2025 by +# Copyright (C) 1996-2026 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/vendor/freetype/src/sdf/ftbsdf.c b/vendor/freetype/src/sdf/ftbsdf.c index d4c5115ea60..d70ebbf1732 100644 --- a/vendor/freetype/src/sdf/ftbsdf.c +++ b/vendor/freetype/src/sdf/ftbsdf.c @@ -4,7 +4,7 @@ * * Signed Distance Field support for bitmap fonts (body only). * - * Copyright (C) 2020-2025 by + * Copyright (C) 2020-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * Written by Anuj Verma. @@ -113,6 +113,7 @@ * // copy SDF data to the target bitmap * copy(dm to t); * } + * ``` * */ diff --git a/vendor/freetype/src/sdf/ftsdf.c b/vendor/freetype/src/sdf/ftsdf.c index 1076b1b4ee7..48deb54690e 100644 --- a/vendor/freetype/src/sdf/ftsdf.c +++ b/vendor/freetype/src/sdf/ftsdf.c @@ -4,7 +4,7 @@ * * Signed Distance Field support for outline fonts (body). * - * Copyright (C) 2020-2025 by + * Copyright (C) 2020-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * Written by Anuj Verma. @@ -655,12 +655,6 @@ FT_Memory memory = shape->memory; - if ( !to || !user ) - { - error = FT_THROW( Invalid_Argument ); - goto Exit; - } - FT_CALL( sdf_contour_new( memory, &contour ) ); contour->last_pos = *to; @@ -679,21 +673,14 @@ sdf_line_to( const FT_26D6_Vec* to, void* user ) { - SDF_Shape* shape = ( SDF_Shape* )user; - SDF_Edge* edge = NULL; - SDF_Contour* contour = NULL; - - FT_Error error = FT_Err_Ok; - FT_Memory memory = shape->memory; + SDF_Shape* shape = ( SDF_Shape* )user; + SDF_Edge* edge = NULL; + SDF_Contour* contour = shape->contours; + FT_Error error = FT_Err_Ok; + FT_Memory memory = shape->memory; - if ( !to || !user ) - { - error = FT_THROW( Invalid_Argument ); - goto Exit; - } - contour = shape->contours; if ( contour->last_pos.x == to->x && contour->last_pos.y == to->y ) @@ -722,22 +709,14 @@ const FT_26D6_Vec* to, void* user ) { - SDF_Shape* shape = ( SDF_Shape* )user; - SDF_Edge* edge = NULL; - SDF_Contour* contour = NULL; + SDF_Shape* shape = ( SDF_Shape* )user; + SDF_Edge* edge = NULL; + SDF_Contour* contour = shape->contours; FT_Error error = FT_Err_Ok; FT_Memory memory = shape->memory; - if ( !control_1 || !to || !user ) - { - error = FT_THROW( Invalid_Argument ); - goto Exit; - } - - contour = shape->contours; - /* If the control point coincides with any of the end points */ /* then it is a line and should be treated as one to avoid */ /* unnecessary complexity later in the algorithm. */ @@ -778,20 +757,12 @@ { SDF_Shape* shape = ( SDF_Shape* )user; SDF_Edge* edge = NULL; - SDF_Contour* contour = NULL; + SDF_Contour* contour = shape->contours; FT_Error error = FT_Err_Ok; FT_Memory memory = shape->memory; - if ( !control_2 || !control_1 || !to || !user ) - { - error = FT_THROW( Invalid_Argument ); - goto Exit; - } - - contour = shape->contours; - FT_CALL( sdf_edge_new( memory, &edge ) ); edge->edge_type = SDF_EDGE_CUBIC; @@ -3281,8 +3252,12 @@ goto Exit; } - if ( FT_ALLOC( dists, - bitmap->width * bitmap->rows * sizeof ( *dists ) ) ) + if ( bitmap->rows > FT_INT_MAX / bitmap->width ) + { + error = FT_THROW( Array_Too_Large ); + goto Exit; + } + if ( FT_NEW_ARRAY( dists, bitmap->rows * bitmap->width ) ) goto Exit; contours = shape->contours; @@ -3597,13 +3572,11 @@ } /* allocate the bitmaps to generate SDF for separate contours */ - if ( FT_ALLOC( bitmaps, - (FT_UInt)num_contours * sizeof ( *bitmaps ) ) ) + if ( FT_NEW_ARRAY( bitmaps, num_contours ) ) goto Exit; /* allocate array to hold orientation for all contours */ - if ( FT_ALLOC( orientations, - (FT_UInt)num_contours * sizeof ( *orientations ) ) ) + if ( FT_NEW_ARRAY( orientations, num_contours ) ) goto Exit; contour = shape->contours; @@ -3621,8 +3594,7 @@ bitmaps[i].pixel_mode = bitmap->pixel_mode; /* allocate memory for the buffer */ - if ( FT_ALLOC( bitmaps[i].buffer, - bitmap->rows * (FT_UInt)bitmap->pitch ) ) + if ( FT_ALLOC_MULT( bitmaps[i].buffer, bitmap->rows, bitmap->pitch ) ) goto Exit; /* determine the orientation */ diff --git a/vendor/freetype/src/sdf/ftsdf.h b/vendor/freetype/src/sdf/ftsdf.h index fb175803623..9bf17d1d911 100644 --- a/vendor/freetype/src/sdf/ftsdf.h +++ b/vendor/freetype/src/sdf/ftsdf.h @@ -4,7 +4,7 @@ * * Signed Distance Field support (specification). * - * Copyright (C) 2020-2025 by + * Copyright (C) 2020-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * Written by Anuj Verma. diff --git a/vendor/freetype/src/sdf/ftsdfcommon.c b/vendor/freetype/src/sdf/ftsdfcommon.c index fa99944f84e..ffbf7a46a4a 100644 --- a/vendor/freetype/src/sdf/ftsdfcommon.c +++ b/vendor/freetype/src/sdf/ftsdfcommon.c @@ -4,7 +4,7 @@ * * Auxiliary data for Signed Distance Field support (body). * - * Copyright (C) 2020-2025 by + * Copyright (C) 2020-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * Written by Anuj Verma. diff --git a/vendor/freetype/src/sdf/ftsdfcommon.h b/vendor/freetype/src/sdf/ftsdfcommon.h index b87e97ed38f..d62e00fa393 100644 --- a/vendor/freetype/src/sdf/ftsdfcommon.h +++ b/vendor/freetype/src/sdf/ftsdfcommon.h @@ -4,7 +4,7 @@ * * Auxiliary data for Signed Distance Field support (specification). * - * Copyright (C) 2020-2025 by + * Copyright (C) 2020-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * Written by Anuj Verma. diff --git a/vendor/freetype/src/sdf/ftsdferrs.h b/vendor/freetype/src/sdf/ftsdferrs.h index e28e2e1cad1..5bb8f05bbe2 100644 --- a/vendor/freetype/src/sdf/ftsdferrs.h +++ b/vendor/freetype/src/sdf/ftsdferrs.h @@ -4,7 +4,7 @@ * * Signed Distance Field error codes (specification only). * - * Copyright (C) 2020-2025 by + * Copyright (C) 2020-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * Written by Anuj Verma. diff --git a/vendor/freetype/src/sdf/ftsdfrend.c b/vendor/freetype/src/sdf/ftsdfrend.c index e24b3b614bf..1f50ec447a2 100644 --- a/vendor/freetype/src/sdf/ftsdfrend.c +++ b/vendor/freetype/src/sdf/ftsdfrend.c @@ -4,7 +4,7 @@ * * Signed Distance Field renderer interface (body). * - * Copyright (C) 2020-2025 by + * Copyright (C) 2020-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * Written by Anuj Verma. diff --git a/vendor/freetype/src/sdf/ftsdfrend.h b/vendor/freetype/src/sdf/ftsdfrend.h index ab98a79632d..bb362949af6 100644 --- a/vendor/freetype/src/sdf/ftsdfrend.h +++ b/vendor/freetype/src/sdf/ftsdfrend.h @@ -4,7 +4,7 @@ * * Signed Distance Field renderer interface (specification). * - * Copyright (C) 2020-2025 by + * Copyright (C) 2020-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * Written by Anuj Verma. diff --git a/vendor/freetype/src/sdf/module.mk b/vendor/freetype/src/sdf/module.mk index 2585c7d098f..d8d0d49f6f9 100644 --- a/vendor/freetype/src/sdf/module.mk +++ b/vendor/freetype/src/sdf/module.mk @@ -3,7 +3,7 @@ # -# Copyright (C) 2020-2025 by +# Copyright (C) 2020-2026 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/vendor/freetype/src/sdf/rules.mk b/vendor/freetype/src/sdf/rules.mk index 689ed8fcfcb..92ed750664f 100644 --- a/vendor/freetype/src/sdf/rules.mk +++ b/vendor/freetype/src/sdf/rules.mk @@ -3,7 +3,7 @@ # -# Copyright (C) 2020-2025 by +# Copyright (C) 2020-2026 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/vendor/freetype/src/sdf/sdf.c b/vendor/freetype/src/sdf/sdf.c index 7f02d9a59d2..21dfe6650b4 100644 --- a/vendor/freetype/src/sdf/sdf.c +++ b/vendor/freetype/src/sdf/sdf.c @@ -4,7 +4,7 @@ * * FreeType Signed Distance Field renderer module component (body only). * - * Copyright (C) 2020-2025 by + * Copyright (C) 2020-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * Written by Anuj Verma. diff --git a/vendor/freetype/src/sfnt/module.mk b/vendor/freetype/src/sfnt/module.mk index 845fb999718..5ed9ce0aa84 100644 --- a/vendor/freetype/src/sfnt/module.mk +++ b/vendor/freetype/src/sfnt/module.mk @@ -3,7 +3,7 @@ # -# Copyright (C) 1996-2025 by +# Copyright (C) 1996-2026 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/vendor/freetype/src/sfnt/pngshim.c b/vendor/freetype/src/sfnt/pngshim.c index 9df75dc3acc..e588e6b380b 100644 --- a/vendor/freetype/src/sfnt/pngshim.c +++ b/vendor/freetype/src/sfnt/pngshim.c @@ -4,7 +4,7 @@ * * PNG Bitmap glyph support. * - * Copyright (C) 2013-2025 by + * Copyright (C) 2013-2026 by * Google, Inc. * Written by Stuart Gill and Behdad Esfahbod. * @@ -420,10 +420,7 @@ if ( populate_map_and_metrics ) { /* this doesn't overflow: 0x7FFF * 0x7FFF * 4 < 2^32 */ - FT_ULong size = map->rows * (FT_ULong)map->pitch; - - - error = ft_glyphslot_alloc_bitmap( slot, size ); + error = ft_glyphslot_alloc_bitmap( slot ); if ( error ) goto DestroyExit; } diff --git a/vendor/freetype/src/sfnt/pngshim.h b/vendor/freetype/src/sfnt/pngshim.h index c59199e60df..f187b639a11 100644 --- a/vendor/freetype/src/sfnt/pngshim.h +++ b/vendor/freetype/src/sfnt/pngshim.h @@ -4,7 +4,7 @@ * * PNG Bitmap glyph support. * - * Copyright (C) 2013-2025 by + * Copyright (C) 2013-2026 by * Google, Inc. * Written by Stuart Gill and Behdad Esfahbod. * diff --git a/vendor/freetype/src/sfnt/rules.mk b/vendor/freetype/src/sfnt/rules.mk index 8e353ed2b52..791d329a094 100644 --- a/vendor/freetype/src/sfnt/rules.mk +++ b/vendor/freetype/src/sfnt/rules.mk @@ -3,7 +3,7 @@ # -# Copyright (C) 1996-2025 by +# Copyright (C) 1996-2026 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/vendor/freetype/src/sfnt/sfdriver.c b/vendor/freetype/src/sfnt/sfdriver.c index ec78247aa56..4046b1a0cdb 100644 --- a/vendor/freetype/src/sfnt/sfdriver.c +++ b/vendor/freetype/src/sfnt/sfdriver.c @@ -4,7 +4,7 @@ * * High-level SFNT driver interface (body). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -1142,12 +1142,7 @@ FT_Error error; - /* XXX: I don't know whether this is correct, since - * tt_face_find_bdf_prop only returns something correct if we have - * previously selected a size that is listed in the BDF table. - * Should we change the BDF table format to include single offsets - * for `CHARSET_REGISTRY' and `CHARSET_ENCODING'? - */ + /* We expect that a bitmap strike has been selected. */ error = tt_face_find_bdf_prop( face, "CHARSET_REGISTRY", ®istry ); if ( !error ) { diff --git a/vendor/freetype/src/sfnt/sfdriver.h b/vendor/freetype/src/sfnt/sfdriver.h index be4e33166c1..e9eed184b7f 100644 --- a/vendor/freetype/src/sfnt/sfdriver.h +++ b/vendor/freetype/src/sfnt/sfdriver.h @@ -4,7 +4,7 @@ * * High-level SFNT driver interface (specification). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/sfnt/sferrors.h b/vendor/freetype/src/sfnt/sferrors.h index 2da4ac776b0..05b259c1bfc 100644 --- a/vendor/freetype/src/sfnt/sferrors.h +++ b/vendor/freetype/src/sfnt/sferrors.h @@ -4,7 +4,7 @@ * * SFNT error codes (specification only). * - * Copyright (C) 2001-2025 by + * Copyright (C) 2001-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/sfnt/sfnt.c b/vendor/freetype/src/sfnt/sfnt.c index 84f6ad51562..2eab87f2fd3 100644 --- a/vendor/freetype/src/sfnt/sfnt.c +++ b/vendor/freetype/src/sfnt/sfnt.c @@ -4,7 +4,7 @@ * * Single object library component. * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/sfnt/sfobjs.c b/vendor/freetype/src/sfnt/sfobjs.c index 6af35787e85..55172061324 100644 --- a/vendor/freetype/src/sfnt/sfobjs.c +++ b/vendor/freetype/src/sfnt/sfobjs.c @@ -4,7 +4,7 @@ * * SFNT object management (base). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -723,6 +723,7 @@ /* note that `glyf' or `CFF2' have precedence */ if ( face->goto_table( face, TTAG_glyf, stream, 0 ) && face->goto_table( face, TTAG_CFF2, stream, 0 ) && + face->goto_table( face, TTAG_hvgl, stream, 0 ) && !face->goto_table( face, TTAG_CFF, stream, 0 ) ) num_instances = 0; diff --git a/vendor/freetype/src/sfnt/sfobjs.h b/vendor/freetype/src/sfnt/sfobjs.h index 8c38b727950..a27ad7064ac 100644 --- a/vendor/freetype/src/sfnt/sfobjs.h +++ b/vendor/freetype/src/sfnt/sfobjs.h @@ -4,7 +4,7 @@ * * SFNT object management (specification). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/sfnt/sfwoff.c b/vendor/freetype/src/sfnt/sfwoff.c index 015c7b78b4d..b8a3030d9cb 100644 --- a/vendor/freetype/src/sfnt/sfwoff.c +++ b/vendor/freetype/src/sfnt/sfwoff.c @@ -4,7 +4,7 @@ * * WOFF format management (base). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/sfnt/sfwoff.h b/vendor/freetype/src/sfnt/sfwoff.h index df7ace5c209..a563fcc682a 100644 --- a/vendor/freetype/src/sfnt/sfwoff.h +++ b/vendor/freetype/src/sfnt/sfwoff.h @@ -4,7 +4,7 @@ * * WOFFF format management (specification). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/sfnt/sfwoff2.c b/vendor/freetype/src/sfnt/sfwoff2.c index 5acbbaa2a77..013e30fc520 100644 --- a/vendor/freetype/src/sfnt/sfwoff2.c +++ b/vendor/freetype/src/sfnt/sfwoff2.c @@ -4,7 +4,7 @@ * * WOFF2 format management (base). * - * Copyright (C) 2019-2025 by + * Copyright (C) 2019-2026 by * Nikhil Ramakrishnan, David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -1043,7 +1043,6 @@ FT_ULong total_n_points = 0; FT_UShort n_points_contour; FT_UInt j; - FT_ULong flag_size; FT_ULong triplet_size; FT_ULong triplet_bytes_used; FT_Bool have_overlap = FALSE; @@ -1088,8 +1087,8 @@ } substreams[N_POINTS_STREAM].offset = FT_STREAM_POS(); - flag_size = total_n_points; - if ( flag_size > substreams[FLAG_STREAM].size ) + points_size += total_n_points; + if ( points_size > substreams[FLAG_STREAM].size ) goto Fail; flags_buf = stream->base + substreams[FLAG_STREAM].offset; @@ -1106,8 +1105,7 @@ triplet_bytes_used = 0; /* Create array to store point information. */ - points_size = total_n_points; - if ( FT_QNEW_ARRAY( points, points_size ) ) + if ( FT_QNEW_ARRAY( points, total_n_points ) ) goto Fail; if ( triplet_decode( flags_buf, @@ -1118,7 +1116,7 @@ &triplet_bytes_used ) ) goto Fail; - substreams[FLAG_STREAM].offset += flag_size; + substreams[FLAG_STREAM].offset += total_n_points; substreams[GLYPH_STREAM].offset += triplet_bytes_used; if ( FT_STREAM_SEEK( substreams[GLYPH_STREAM].offset ) || diff --git a/vendor/freetype/src/sfnt/sfwoff2.h b/vendor/freetype/src/sfnt/sfwoff2.h index 588761d0c8e..e0296d82603 100644 --- a/vendor/freetype/src/sfnt/sfwoff2.h +++ b/vendor/freetype/src/sfnt/sfwoff2.h @@ -4,7 +4,7 @@ * * WOFFF2 format management (specification). * - * Copyright (C) 2019-2025 by + * Copyright (C) 2019-2026 by * Nikhil Ramakrishnan, David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/sfnt/ttbdf.c b/vendor/freetype/src/sfnt/ttbdf.c index 78a33fa30e2..9fa12c099f0 100644 --- a/vendor/freetype/src/sfnt/ttbdf.c +++ b/vendor/freetype/src/sfnt/ttbdf.c @@ -4,7 +4,7 @@ * * TrueType and OpenType embedded BDF properties (body). * - * Copyright (C) 2005-2025 by + * Copyright (C) 2005-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -16,6 +16,12 @@ */ + /* + * The 'BDF ' SFNT table is described in the FontForge documentation, see + * + * https://fontforge.org/docs/techref/non-standard.html#non-standard-bdf + */ + #include #include #include @@ -80,21 +86,19 @@ bdf->table_end = bdf->table + length; { - FT_Byte* p = bdf->table; - FT_UInt version = FT_NEXT_USHORT( p ); - FT_UInt num_strikes = FT_NEXT_USHORT( p ); - FT_ULong strings = FT_NEXT_ULONG ( p ); - FT_UInt count; - FT_Byte* strike; + FT_Byte* p = bdf->table; + FT_UInt version = FT_NEXT_USHORT( p ); + FT_UInt num_strikes = FT_NEXT_USHORT( p ); + FT_ULong strings = FT_NEXT_ULONG ( p ); + FT_UInt count; + FT_Byte* strike; if ( version != 0x0001 || strings < 8 || ( strings - 8 ) / 4 < num_strikes || - strings + 1 > length ) - { + strings >= length ) goto BadTable; - } bdf->num_strikes = num_strikes; bdf->strings = bdf->table + strings; @@ -104,15 +108,14 @@ p = bdf->table + 8; strike = p + count * 4; - + /* Check table length. */ for ( ; count > 0; count-- ) { FT_UInt num_items = FT_PEEK_USHORT( p + 2 ); - /* - * We don't need to check the value sets themselves, since this - * is done later. - */ + + /* We don't check the value sets themselves; */ + /* this is done while accessing a property. */ strike += 10 * num_items; p += 4; @@ -200,6 +203,7 @@ FT_UInt32 name_offset = FT_PEEK_ULONG( p ); FT_UInt32 value = FT_PEEK_ULONG( p + 6 ); + /* be a bit paranoid for invalid entries here */ if ( name_offset < bdf->strings_size && property_len < bdf->strings_size - name_offset && @@ -212,7 +216,7 @@ case 0x00: /* string */ case 0x01: /* atoms */ /* check that the content is really 0-terminated */ - if ( value < bdf->strings_size && + if ( value < bdf->strings_size && ft_memchr( bdf->strings + value, 0, bdf->strings_size ) ) { aprop->type = BDF_PROPERTY_TYPE_ATOM; diff --git a/vendor/freetype/src/sfnt/ttbdf.h b/vendor/freetype/src/sfnt/ttbdf.h index abcce2cc6e2..87d210e52f7 100644 --- a/vendor/freetype/src/sfnt/ttbdf.h +++ b/vendor/freetype/src/sfnt/ttbdf.h @@ -4,7 +4,7 @@ * * TrueType and OpenType embedded BDF properties (specification). * - * Copyright (C) 2005-2025 by + * Copyright (C) 2005-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/sfnt/ttcmap.c b/vendor/freetype/src/sfnt/ttcmap.c index 91b02344224..f5837e65e86 100644 --- a/vendor/freetype/src/sfnt/ttcmap.c +++ b/vendor/freetype/src/sfnt/ttcmap.c @@ -4,7 +4,7 @@ * * TrueType character mapping table (cmap) support (body). * - * Copyright (C) 2002-2025 by + * Copyright (C) 2002-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/sfnt/ttcmap.h b/vendor/freetype/src/sfnt/ttcmap.h index 645e9e37e0c..fdb34f525e3 100644 --- a/vendor/freetype/src/sfnt/ttcmap.h +++ b/vendor/freetype/src/sfnt/ttcmap.h @@ -4,7 +4,7 @@ * * TrueType character mapping table (cmap) support (specification). * - * Copyright (C) 2002-2025 by + * Copyright (C) 2002-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/sfnt/ttcmapc.h b/vendor/freetype/src/sfnt/ttcmapc.h index 65807bb7378..c17ac5bba15 100644 --- a/vendor/freetype/src/sfnt/ttcmapc.h +++ b/vendor/freetype/src/sfnt/ttcmapc.h @@ -4,7 +4,7 @@ * * TT CMAP classes definitions (specification only). * - * Copyright (C) 2009-2025 by + * Copyright (C) 2009-2026 by * Oran Agra and Mickey Gabel. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/sfnt/ttcolr.c b/vendor/freetype/src/sfnt/ttcolr.c index ad9ad6f2710..b22e279b346 100644 --- a/vendor/freetype/src/sfnt/ttcolr.c +++ b/vendor/freetype/src/sfnt/ttcolr.c @@ -4,7 +4,7 @@ * * TrueType and OpenType colored glyph layer support (body). * - * Copyright (C) 2018-2025 by + * Copyright (C) 2018-2026 by * David Turner, Robert Wilhelm, Dominik Röttsches, and Werner Lemberg. * * Originally written by Shao Yu Zhang . @@ -236,8 +236,10 @@ p1 = (FT_Byte*)( table + base_glyphs_offset_v1 ); num_base_glyphs_v1 = FT_PEEK_ULONG( p1 ); - if ( ( table_size - base_glyphs_offset_v1 ) / BASE_GLYPH_PAINT_RECORD_SIZE - < num_base_glyphs_v1 ) + /* Account for 4 byte numBaseGlyphPaintRecords at the beginning of */ + /* the BaseGlyphPaintRecord array. */ + if ( ( table_size - base_glyphs_offset_v1 - 4 ) / + BASE_GLYPH_PAINT_RECORD_SIZE < num_base_glyphs_v1 ) goto InvalidTable; colr->num_base_glyphs_v1 = num_base_glyphs_v1; @@ -451,20 +453,14 @@ FT_UInt *acolor_index, FT_LayerIterator* iterator ) { - Colr* colr = (Colr*)face->colr; - BaseGlyphRecord glyph_record; - - - if ( !colr ) - return 0; - - if ( !iterator->p ) + if ( !iterator->p ) /* first call to function */ { - FT_ULong offset; + Colr* colr = (Colr*)face->colr; + BaseGlyphRecord glyph_record; - /* first call to function */ - iterator->layer = 0; + if ( !colr ) + return 0; if ( !find_base_glyph_record( colr->base_glyphs, colr->num_base_glyphs, @@ -472,21 +468,18 @@ &glyph_record ) ) return 0; - if ( glyph_record.num_layers ) - iterator->num_layers = glyph_record.num_layers; - else - return 0; - - offset = LAYER_SIZE * glyph_record.first_layer_index; - if ( offset + LAYER_SIZE * glyph_record.num_layers > colr->table_size ) + if ( glyph_record.num_layers == 0 || + glyph_record.first_layer_index + glyph_record.num_layers > + colr->num_layers ) return 0; - iterator->p = colr->layers + offset; + iterator->num_layers = glyph_record.num_layers; + iterator->layer = 0; + iterator->p = colr->layers + + LAYER_SIZE * glyph_record.first_layer_index; } - if ( iterator->layer >= iterator->num_layers || - iterator->p < colr->layers || - iterator->p >= ( (FT_Byte*)colr->table + colr->table_size ) ) + if ( iterator->layer >= iterator->num_layers ) return 0; *aglyph_index = FT_NEXT_USHORT( iterator->p ); @@ -1749,7 +1742,6 @@ FT_UInt x, y; FT_Byte b, g, r, alpha; - FT_ULong size; FT_Byte* src; FT_Byte* dst; @@ -1767,13 +1759,9 @@ dstSlot->bitmap.pitch = (int)dstSlot->bitmap.width * 4; dstSlot->bitmap.num_grays = 256; - size = dstSlot->bitmap.rows * (unsigned int)dstSlot->bitmap.pitch; - - error = ft_glyphslot_alloc_bitmap( dstSlot, size ); + error = ft_glyphslot_alloc_bitmap( dstSlot ); if ( error ) return error; - - FT_MEM_ZERO( dstSlot->bitmap.buffer, size ); } else { @@ -1805,8 +1793,7 @@ FT_Byte* q; - size = rows * pitch; - if ( FT_ALLOC( buf, size ) ) + if ( FT_ALLOC_MULT( buf, rows, pitch ) ) return error; p = dstSlot->bitmap.buffer; diff --git a/vendor/freetype/src/sfnt/ttcolr.h b/vendor/freetype/src/sfnt/ttcolr.h index 3913acc74d5..c7bf1f2a4a7 100644 --- a/vendor/freetype/src/sfnt/ttcolr.h +++ b/vendor/freetype/src/sfnt/ttcolr.h @@ -4,7 +4,7 @@ * * TrueType and OpenType colored glyph layer support (specification). * - * Copyright (C) 2018-2025 by + * Copyright (C) 2018-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * Originally written by Shao Yu Zhang . diff --git a/vendor/freetype/src/sfnt/ttcpal.c b/vendor/freetype/src/sfnt/ttcpal.c index 6d1208f6af2..04e2db1eab5 100644 --- a/vendor/freetype/src/sfnt/ttcpal.c +++ b/vendor/freetype/src/sfnt/ttcpal.c @@ -4,7 +4,7 @@ * * TrueType and OpenType color palette support (body). * - * Copyright (C) 2018-2025 by + * Copyright (C) 2018-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * Originally written by Shao Yu Zhang . diff --git a/vendor/freetype/src/sfnt/ttcpal.h b/vendor/freetype/src/sfnt/ttcpal.h index a0b4c9d927f..5c2e660e13d 100644 --- a/vendor/freetype/src/sfnt/ttcpal.h +++ b/vendor/freetype/src/sfnt/ttcpal.h @@ -4,7 +4,7 @@ * * TrueType and OpenType color palette support (specification). * - * Copyright (C) 2018-2025 by + * Copyright (C) 2018-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * Originally written by Shao Yu Zhang . diff --git a/vendor/freetype/src/sfnt/ttgpos.c b/vendor/freetype/src/sfnt/ttgpos.c index 4ff54933f47..6f9bddf34ad 100644 --- a/vendor/freetype/src/sfnt/ttgpos.c +++ b/vendor/freetype/src/sfnt/ttgpos.c @@ -4,7 +4,7 @@ * * Routines to parse and access the 'GPOS' table for simple kerning (body). * - * Copyright (C) 2025 by + * Copyright (C) 2025-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -55,7 +55,7 @@ FT_Byte* p = table; FT_Byte* limit; - FT_Long last_id = -1; + FT_UInt next_id = 0; if ( table_limit < p + 4 ) @@ -79,9 +79,9 @@ FT_UInt id = FT_NEXT_USHORT( p ); - if ( last_id >= id ) + if ( next_id > id ) return FALSE; - last_id = id; + next_id = id + 1; } } else if ( format == 2 ) @@ -103,9 +103,9 @@ if ( startGlyphID > endGlyphID ) return FALSE; - if ( last_id >= startGlyphID ) + if ( next_id > startGlyphID ) return FALSE; - last_id = endGlyphID; + next_id = endGlyphID + 1; /* XXX: Is this modulo 65536 arithmetic? */ if ( startCoverageIndex + endGlyphID - startGlyphID >= @@ -164,7 +164,7 @@ else if ( format == 2 ) { FT_UInt classRangeCount; - FT_Long last_id = -1; + FT_UInt next_id = 0; if ( table_limit < p + 2 ) @@ -185,9 +185,9 @@ if ( startGlyphID > endGlyphID ) return FALSE; - if ( last_id >= startGlyphID ) + if ( next_id > startGlyphID ) return FALSE; - last_id = endGlyphID; + next_id = endGlyphID + 1; if ( class_value > max_class_value ) max_class_value = class_value; @@ -291,7 +291,7 @@ FT_Byte* p = table; FT_Byte* limit; - FT_Long last_id = -1; + FT_UInt next_id = 0; if ( table_limit < p + 2 ) @@ -311,10 +311,10 @@ FT_UInt id = FT_NEXT_USHORT( p ); - if ( last_id >= id ) + if ( next_id > id ) return FALSE; - last_id = id; + next_id = id + 1; p += 2; /* Skip `valueRecord1`. */ } @@ -408,6 +408,8 @@ FT_UInt class1Count; FT_UInt class2Count; + FT_UInt max_size; + /* The number of coverage indices is not relevant here. */ if ( !tt_face_validate_coverage( coverage, table_limit, FT_UINT_MAX ) ) @@ -432,7 +434,11 @@ /* For our purposes, the first value record only contains */ /* X advances while the second one is empty. */ - limit = p + class1Count * class2Count * 2; + max_size = class1Count * class2Count; + if ( max_size > FT_UINT_MAX / 2 ) + return FALSE; + + limit = p + max_size * 2; if ( table_limit < limit ) return FALSE; @@ -443,8 +449,9 @@ } - /* The return value is the number of fitting subtables. */ - static FT_UInt + /* The return value is the number of fitting subtables. It is negative */ + /* if there is a validation error. */ + static FT_Int tt_face_validate_lookup_table( FT_Byte* table, FT_Byte* table_limit ) { @@ -459,7 +466,7 @@ if ( table_limit < p + 6 ) - return 0; + return -1; lookupType = FT_NEXT_USHORT( p ); @@ -468,7 +475,7 @@ subtableCount = FT_NEXT_USHORT( p ); limit = p + subtableCount * 2; if ( table_limit < limit ) - return 0; + return -1; while ( p < limit ) { @@ -485,15 +492,15 @@ if ( table_limit < q + 8 ) - return 0; + return -1; if ( FT_NEXT_USHORT( q ) != 1 ) /* format */ - return 0; + return -1; if ( real_lookupType == 0 ) real_lookupType = FT_NEXT_USHORT( q ); else if ( real_lookupType != FT_NEXT_USHORT( q ) ) - return 0; + return -1; subtable += FT_PEEK_ULONG( q ); } @@ -502,7 +509,7 @@ /* Ensure the first eight bytes of the subtable formats. */ if ( table_limit < subtable + 8 ) - return 0; + return -1; format = FT_PEEK_USHORT( subtable ); @@ -513,20 +520,20 @@ if ( !tt_face_validate_pair_pos1( subtable, table_limit, &is_fitting ) ) - return 0; + return -1; } else if ( format == 2 ) { if ( !tt_face_validate_pair_pos2( subtable, table_limit, &is_fitting ) ) - return 0; + return -1; } else - return 0; + return -1; } else - return 0; + return -1; if ( is_fitting ) num_fitting_subtables++; @@ -657,6 +664,7 @@ for ( i = 0; i < lookupCount; i++ ) { FT_UInt lookupOffset; + FT_Int fits; if ( !use_lookup_table[i] ) @@ -664,10 +672,12 @@ lookupOffset = FT_PEEK_USHORT( p + i * 2 ); - num_fitting_subtables += - tt_face_validate_lookup_table( lookup_list + lookupOffset, - gpos_limit ); + fits = tt_face_validate_lookup_table( lookup_list + lookupOffset, + gpos_limit ); + if ( fits < 0 ) + goto Fail; + num_fitting_subtables += (FT_UInt)fits; } /* Loop again over all lookup tables and */ @@ -709,7 +719,7 @@ return error; Fail: - FT_FREE( gpos ); + FT_FRAME_RELEASE( gpos ); FT_FREE( gpos_lookups_kerning ); FT_FREE( use_lookup_table ); @@ -813,7 +823,7 @@ /* XXX: Is this modulo 65536 arithmetic? */ if ( startGlyphID <= glyph_index && - startGlyphID + glyphCount >= glyph_index ) + startGlyphID + glyphCount > glyph_index ) return FT_PEEK_USHORT( p + ( glyph_index - startGlyphID ) * 2 ); } else @@ -880,7 +890,7 @@ if ( second_glyph > mid_index ) - min = max + 1; + min = mid + 1; else if ( second_glyph < mid_index ) max = mid; else diff --git a/vendor/freetype/src/sfnt/ttgpos.h b/vendor/freetype/src/sfnt/ttgpos.h index eebc22e9ecf..3c227445bac 100644 --- a/vendor/freetype/src/sfnt/ttgpos.h +++ b/vendor/freetype/src/sfnt/ttgpos.h @@ -5,7 +5,7 @@ * Routines to parse and access the 'GPOS' table for simple kerning * (specification). * - * Copyright (C) 2024-2025 by + * Copyright (C) 2024-2026 by * David Saltzman * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/sfnt/ttkern.c b/vendor/freetype/src/sfnt/ttkern.c index 76618b0d3bb..65b249ff4cd 100644 --- a/vendor/freetype/src/sfnt/ttkern.c +++ b/vendor/freetype/src/sfnt/ttkern.c @@ -4,7 +4,7 @@ * * Routines to parse and access the 'kern' table for kerning (body). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/sfnt/ttkern.h b/vendor/freetype/src/sfnt/ttkern.h index e0075dce61d..8cc912a79e5 100644 --- a/vendor/freetype/src/sfnt/ttkern.h +++ b/vendor/freetype/src/sfnt/ttkern.h @@ -5,7 +5,7 @@ * Routines to parse and access the 'kern' table for kerning * (specification). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/sfnt/ttload.c b/vendor/freetype/src/sfnt/ttload.c index 0c257ce4d31..e17d07a971c 100644 --- a/vendor/freetype/src/sfnt/ttload.c +++ b/vendor/freetype/src/sfnt/ttload.c @@ -5,7 +5,7 @@ * Load the basic TrueType tables, i.e., tables that can be either in * TTF or OTF fonts (body). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/sfnt/ttload.h b/vendor/freetype/src/sfnt/ttload.h index e3666c901b1..0a0aab24ce6 100644 --- a/vendor/freetype/src/sfnt/ttload.h +++ b/vendor/freetype/src/sfnt/ttload.h @@ -5,7 +5,7 @@ * Load the basic TrueType tables, i.e., tables that can be either in * TTF or OTF fonts (specification). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/sfnt/ttmtx.c b/vendor/freetype/src/sfnt/ttmtx.c index 541d8447470..60dce87d841 100644 --- a/vendor/freetype/src/sfnt/ttmtx.c +++ b/vendor/freetype/src/sfnt/ttmtx.c @@ -4,7 +4,7 @@ * * Load the metrics tables common to TTF and OTF fonts (body). * - * Copyright (C) 2006-2025 by + * Copyright (C) 2006-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/sfnt/ttmtx.h b/vendor/freetype/src/sfnt/ttmtx.h index 1ee84507f15..618e04ffd29 100644 --- a/vendor/freetype/src/sfnt/ttmtx.h +++ b/vendor/freetype/src/sfnt/ttmtx.h @@ -4,7 +4,7 @@ * * Load the metrics tables common to TTF and OTF fonts (specification). * - * Copyright (C) 2006-2025 by + * Copyright (C) 2006-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/sfnt/ttpost.c b/vendor/freetype/src/sfnt/ttpost.c index 4246b6c8eff..98603e115ea 100644 --- a/vendor/freetype/src/sfnt/ttpost.c +++ b/vendor/freetype/src/sfnt/ttpost.c @@ -5,7 +5,7 @@ * PostScript name table processing for TrueType and OpenType fonts * (body). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/sfnt/ttpost.h b/vendor/freetype/src/sfnt/ttpost.h index a11b6696854..896118015e1 100644 --- a/vendor/freetype/src/sfnt/ttpost.h +++ b/vendor/freetype/src/sfnt/ttpost.h @@ -5,7 +5,7 @@ * PostScript name table processing for TrueType and OpenType fonts * (specification). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/sfnt/ttsbit.c b/vendor/freetype/src/sfnt/ttsbit.c index 9f9013bf39b..d479b6a0b78 100644 --- a/vendor/freetype/src/sfnt/ttsbit.c +++ b/vendor/freetype/src/sfnt/ttsbit.c @@ -4,7 +4,7 @@ * * TrueType and OpenType embedded bitmap support (body). * - * Copyright (C) 2005-2025 by + * Copyright (C) 2005-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * Copyright 2013 by Google, Inc. @@ -547,7 +547,6 @@ FT_Error error = FT_Err_Ok; FT_UInt width, height; FT_Bitmap* map = decoder->bitmap; - FT_ULong size; if ( !decoder->metrics_loaded ) @@ -599,17 +598,11 @@ goto Exit; } - size = map->rows * (FT_ULong)map->pitch; - - /* check that there is no empty image */ - if ( size == 0 ) - goto Exit; /* exit successfully! */ - if ( metrics_only ) goto Exit; /* only metrics are requested */ - error = ft_glyphslot_alloc_bitmap( decoder->face->root.glyph, size ); - if ( error ) + error = ft_glyphslot_alloc_bitmap( decoder->face->root.glyph ); + if ( error || !map->buffer ) goto Exit; decoder->bitmap_allocated = 1; @@ -1609,9 +1602,10 @@ metrics->horiBearingY = (FT_Short)( originOffsetY + metrics->height ); metrics->vertBearingY = (FT_Short)originOffsetY; - metrics->horiAdvance = (FT_UShort)( aadvance * - face->root.size->metrics.x_ppem / - face->header.Units_Per_EM ); + metrics->horiAdvance = + (FT_UShort)FT_MulDiv( aadvance, + face->root.size->metrics.x_ppem, + face->header.Units_Per_EM ); if ( face->vertical_info ) tt_face_get_metrics( face, TRUE, glyph_index, &abearing, &aadvance ); @@ -1622,9 +1616,10 @@ aadvance = (FT_UShort)FT_ABS( face->horizontal.Ascender - face->horizontal.Descender ); - metrics->vertAdvance = (FT_UShort)( aadvance * - face->root.size->metrics.x_ppem / - face->header.Units_Per_EM ); + metrics->vertAdvance = + (FT_UShort)FT_MulDiv( aadvance, + face->root.size->metrics.x_ppem, + face->header.Units_Per_EM ); } return error; diff --git a/vendor/freetype/src/sfnt/ttsbit.h b/vendor/freetype/src/sfnt/ttsbit.h index 7427149d68f..8fd45223264 100644 --- a/vendor/freetype/src/sfnt/ttsbit.h +++ b/vendor/freetype/src/sfnt/ttsbit.h @@ -4,7 +4,7 @@ * * TrueType and OpenType embedded bitmap support (specification). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/sfnt/ttsvg.c b/vendor/freetype/src/sfnt/ttsvg.c index c7b83b2b7d3..79cf531d054 100644 --- a/vendor/freetype/src/sfnt/ttsvg.c +++ b/vendor/freetype/src/sfnt/ttsvg.c @@ -4,7 +4,7 @@ * * OpenType SVG Color (specification). * - * Copyright (C) 2022-2025 by + * Copyright (C) 2022-2026 by * David Turner, Robert Wilhelm, Werner Lemberg, and Moazin Khatti. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/sfnt/ttsvg.h b/vendor/freetype/src/sfnt/ttsvg.h index d2e127d6dfa..6253ed1d499 100644 --- a/vendor/freetype/src/sfnt/ttsvg.h +++ b/vendor/freetype/src/sfnt/ttsvg.h @@ -4,7 +4,7 @@ * * OpenType SVG Color (specification). * - * Copyright (C) 2022-2025 by + * Copyright (C) 2022-2026 by * David Turner, Robert Wilhelm, Werner Lemberg, and Moazin Khatti. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/sfnt/woff2tags.c b/vendor/freetype/src/sfnt/woff2tags.c index 0f9e3889aab..1c3779d9f34 100644 --- a/vendor/freetype/src/sfnt/woff2tags.c +++ b/vendor/freetype/src/sfnt/woff2tags.c @@ -4,7 +4,7 @@ * * WOFF2 Font table tags (base). * - * Copyright (C) 2019-2025 by + * Copyright (C) 2019-2026 by * Nikhil Ramakrishnan, David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/sfnt/woff2tags.h b/vendor/freetype/src/sfnt/woff2tags.h index e223022962e..200262d3863 100644 --- a/vendor/freetype/src/sfnt/woff2tags.h +++ b/vendor/freetype/src/sfnt/woff2tags.h @@ -4,7 +4,7 @@ * * WOFF2 Font table tags (specification). * - * Copyright (C) 2019-2025 by + * Copyright (C) 2019-2026 by * Nikhil Ramakrishnan, David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/smooth/ftgrays.c b/vendor/freetype/src/smooth/ftgrays.c index 365fbad42ad..53948d2777e 100644 --- a/vendor/freetype/src/smooth/ftgrays.c +++ b/vendor/freetype/src/smooth/ftgrays.c @@ -4,7 +4,7 @@ * * A new `perfect' anti-aliasing renderer (body). * - * Copyright (C) 2000-2025 by + * Copyright (C) 2000-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -68,11 +68,14 @@ * * This renderer has the following advantages: * - * - It doesn't need an intermediate bitmap. Instead, one can supply a - * callback function that will be called by the renderer to draw gray - * spans on any target surface. You can thus do direct composition on - * any kind of bitmap, provided that you give the renderer the right - * callback. + * - It doesn't need an intermediate bitmap. Instead, linked lists + * of cells (pixels visited by an outline) are stored, which requires + * less memory and can be maintained on the stack for small glyphs. + * + * - One can supply a callback function that will be called by the + * renderer to draw gray spans on any target surface. You can thus + * do direct composition on any kind of bitmap, provided that you give + * the renderer the right callback. * * - A perfect anti-aliaser, i.e., it computes the _exact_ coverage on * each pixel cell by straight segments. @@ -464,7 +467,10 @@ typedef ptrdiff_t FT_PtrDist; } TPixmap; - /* maximum number of gray cells in the buffer */ + /* Maximum number of gray cells in the stack buffer; */ + /* for example, a buffer of 680 cells can accommodate */ + /* a glyph with the taxicab perimeter of 680 pixels. */ + /* A larger buffer can be allocated when necessary. */ #if FT_RENDER_POOL_SIZE > 2048 #define FT_MAX_GRAY_POOL ( FT_RENDER_POOL_SIZE / sizeof ( TCell ) ) #else @@ -485,16 +491,14 @@ typedef ptrdiff_t FT_PtrDist; typedef struct gray_TWorker_ { - FT_BBox cbox; - - TCoord min_ex, max_ex; /* min and max integer pixel coordinates */ - TCoord min_ey, max_ey; - TCoord count_ey; /* same as (max_ey - min_ey) */ + TCoord min_ex, min_ey; /* min and max integer pixel coordinates */ + TCoord max_ex, max_ey; int error; /* pool overflow exception */ + PCell buffer; /* buffer */ + PCell cell_null; /* last cell, used as dumpster and limit */ PCell cell; /* current cell */ PCell cell_free; /* call allocation next free slot */ - PCell cell_null; /* last cell, used as dumpster and limit */ PCell* ycells; /* array of cell linked-lists; one per */ /* vertical coordinate in the current band */ @@ -581,14 +585,11 @@ typedef ptrdiff_t FT_PtrDist; /* Note that if a cell is to the left of the clipping region, it is */ /* actually set to the (min_ex-1) horizontal position. */ - TCoord ey_index = ey - ras.min_ey; - - - if ( ey_index < 0 || ey_index >= ras.count_ey || ex >= ras.max_ex ) + if ( ey < ras.min_ey || ey >= ras.max_ey || ex >= ras.max_ex ) ras.cell = ras.cell_null; else { - PCell* pcell = ras.ycells + ey_index; + PCell* pcell = ras.ycells + ( ey - ras.min_ey ); PCell cell; @@ -1861,101 +1862,75 @@ typedef ptrdiff_t FT_PtrDist; static int gray_convert_glyph( RAS_ARG ) { - TCell buffer[FT_MAX_GRAY_POOL]; - size_t height = (size_t)( ras.cbox.yMax - ras.cbox.yMin ); - size_t n = FT_MAX_GRAY_POOL / 8; - TCoord y; TCoord bands[32]; /* enough to accommodate bisections */ - TCoord* band; + TCoord* band = bands; int continued = 0; int error = Smooth_Err_Ok; /* Initialize the null cell at the end of the poll. */ - ras.cell_null = buffer + FT_MAX_GRAY_POOL - 1; ras.cell_null->x = CELL_MAX_X_VALUE; ras.cell_null->area = 0; ras.cell_null->cover = 0; ras.cell_null->next = NULL; /* set up vertical bands */ - ras.ycells = (PCell*)buffer; + ras.ycells = (PCell*)ras.buffer; - if ( height > n ) + while ( 1 ) { - /* two divisions rounded up */ - n = ( height + n - 1 ) / n; - height = ( height + n - 1 ) / n; - } - - for ( y = ras.cbox.yMin; y < ras.cbox.yMax; ) - { - ras.min_ey = y; - y += height; - ras.max_ey = FT_MIN( y, ras.cbox.yMax ); - - ras.count_ey = ras.max_ey - ras.min_ey; + size_t n; + TCoord i, count = ras.max_ey - ras.min_ey; - band = bands; - band[1] = ras.cbox.xMin; - band[0] = ras.cbox.xMax; - - do - { - TCoord i; + /* memory management: zero out and skip ycells */ + for ( i = 0; i < count; ++i ) + ras.ycells[i] = ras.cell_null; - ras.min_ex = band[1]; - ras.max_ex = band[0]; + n = ( (size_t)count * sizeof ( PCell ) + sizeof ( TCell ) - 1 ) + / sizeof ( TCell ); - /* memory management: zero out and skip ycells */ - for ( i = 0; i < ras.count_ey; ++i ) - ras.ycells[i] = ras.cell_null; + ras.cell_free = ras.buffer + n; + ras.cell = ras.cell_null; + ras.error = Smooth_Err_Ok; - n = ( (size_t)ras.count_ey * sizeof ( PCell ) + sizeof ( TCell ) - 1 ) - / sizeof ( TCell ); + error = gray_convert_glyph_inner( RAS_VAR_ continued ); + continued = 1; - ras.cell_free = buffer + n; - ras.cell = ras.cell_null; - ras.error = Smooth_Err_Ok; + if ( !error ) + { + if ( ras.render_span ) /* for FT_RASTER_FLAG_DIRECT only */ + gray_sweep_direct( RAS_VAR ); + else + gray_sweep( RAS_VAR ); - error = gray_convert_glyph_inner( RAS_VAR_ continued ); - continued = 1; + if ( band == bands ) + break; /* done */ - if ( !error ) - { - if ( ras.render_span ) /* for FT_RASTER_FLAG_DIRECT only */ - gray_sweep_direct( RAS_VAR ); - else - gray_sweep( RAS_VAR ); - band--; - continue; - } - else if ( error != Smooth_Err_Raster_Overflow ) - goto Exit; + ras.max_ey = ras.min_ey; + ras.min_ey = *--band; + continue; + } + else if ( error != Smooth_Err_Raster_Overflow ) + goto Exit; - /* render pool overflow; we will reduce the render band by half */ - i = ( band[0] - band[1] ) >> 1; + /* render pool overflow, reduce the render band by half */ + count >>= 1; - /* this should never happen even with tiny rendering pool */ - if ( i == 0 ) - { - FT_TRACE7(( "gray_convert_glyph: rotten glyph\n" )); - error = FT_THROW( Raster_Overflow ); - goto Exit; - } + /* this happens only if the rendering pool is too small */ + if ( count == 0 ) + { + FT_TRACE7(( "gray_convert_glyph: rotten glyph\n" )); + error = FT_THROW( Raster_Overflow ); + goto Exit; + } - band++; - band[1] = band[0]; - band[0] += i; - } while ( band >= bands ); + *band++ = ras.min_ey; + ras.min_ey += count; } Exit: - ras.cell = ras.cell_free = ras.cell_null = NULL; - ras.ycells = NULL; - return error; } @@ -1964,6 +1939,9 @@ typedef ptrdiff_t FT_PtrDist; gray_raster_render( FT_Raster raster, const FT_Raster_Params* params ) { + FT_ULong estimate; + int ret; + const FT_Outline* outline = (const FT_Outline*)params->source; const FT_Bitmap* target_map = params->target; @@ -2003,7 +1981,10 @@ typedef ptrdiff_t FT_PtrDist; ras.render_span = (FT_Raster_Span_Func)params->gray_spans; ras.render_span_data = params->user; - ras.cbox = params->clip_box; + ras.min_ex = (TCoord)params->clip_box.xMin; + ras.min_ey = (TCoord)params->clip_box.yMin; + ras.max_ex = (TCoord)params->clip_box.xMax; + ras.max_ey = (TCoord)params->clip_box.yMax; } else { @@ -2029,17 +2010,45 @@ typedef ptrdiff_t FT_PtrDist; ras.render_span = (FT_Raster_Span_Func)NULL; ras.render_span_data = NULL; - ras.cbox.xMin = 0; - ras.cbox.yMin = 0; - ras.cbox.xMax = (FT_Pos)target_map->width; - ras.cbox.yMax = (FT_Pos)target_map->rows; + ras.min_ex = 0; + ras.min_ey = 0; + ras.max_ex = (TCoord)target_map->width; + ras.max_ey = (TCoord)target_map->rows; } /* exit if nothing to do */ - if ( ras.cbox.xMin >= ras.cbox.xMax || ras.cbox.yMin >= ras.cbox.yMax ) + if ( ras.min_ex >= ras.max_ex || ras.min_ey >= ras.max_ey ) return Smooth_Err_Ok; - return gray_convert_glyph( RAS_VAR ); + /* allocate memory based on empirical estimate from CJK fonts */ + estimate = ( ras.max_ex - ras.min_ey + ras.max_ey - ras.min_ey ) * 10UL; + if ( estimate > FT_MAX_GRAY_POOL ) + { + FT_Error error; + FT_Memory memory = (FT_Memory)((gray_PRaster)raster)->memory; + + + if ( FT_QNEW_ARRAY( ras.buffer, estimate ) ) + ret = error; + else + { + ras.cell_null = ras.buffer + estimate - 1; + ret = gray_convert_glyph( RAS_VAR ); + FT_FREE( ras.buffer ); + } + } + else + { + TCell buffer[FT_MAX_GRAY_POOL]; /* stack allocation */ + + + ras.buffer = buffer; + ras.cell_null = ras.buffer + FT_MAX_GRAY_POOL - 1; + + ret = gray_convert_glyph( RAS_VAR ); + } + + return ret; } diff --git a/vendor/freetype/src/smooth/ftgrays.h b/vendor/freetype/src/smooth/ftgrays.h index e463e5b3eb8..99c7383e76e 100644 --- a/vendor/freetype/src/smooth/ftgrays.h +++ b/vendor/freetype/src/smooth/ftgrays.h @@ -4,7 +4,7 @@ * * FreeType smooth renderer declaration * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/smooth/ftsmerrs.h b/vendor/freetype/src/smooth/ftsmerrs.h index 8d5068549fa..2f2276bd58c 100644 --- a/vendor/freetype/src/smooth/ftsmerrs.h +++ b/vendor/freetype/src/smooth/ftsmerrs.h @@ -4,7 +4,7 @@ * * smooth renderer error codes (specification only). * - * Copyright (C) 2001-2025 by + * Copyright (C) 2001-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/smooth/ftsmooth.c b/vendor/freetype/src/smooth/ftsmooth.c index 21a6eca00ba..f5a3de65d80 100644 --- a/vendor/freetype/src/smooth/ftsmooth.c +++ b/vendor/freetype/src/smooth/ftsmooth.c @@ -4,7 +4,7 @@ * * Anti-aliasing renderer interface (body). * - * Copyright (C) 2000-2025 by + * Copyright (C) 2000-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -80,6 +80,7 @@ { unsigned char* origin; /* pixmap origin at the bottom-left */ int pitch; /* pitch to go down one row */ + unsigned char wght[5]; /* filtering weights */ } TOrigin; @@ -123,7 +124,8 @@ for ( ; count--; spans++ ) - for ( dst = dst_line + spans->x * 3, w = spans->len; w--; dst += 3 ) + for ( dst = dst_line + (unsigned short)spans->x * 3, + w = spans->len; w--; dst += 3 ) *dst = spans->coverage; } @@ -150,7 +152,7 @@ params.clip_box.xMin = 0; params.clip_box.yMin = 0; - params.clip_box.xMax = bitmap->width; + params.clip_box.xMax = bitmap->width / 3; params.clip_box.yMax = bitmap->rows; if ( bitmap->pitch < 0 ) @@ -274,6 +276,33 @@ } + /* This function applies a horizontal filter in direct rendering mode */ + static void + ft_smooth_lcd_spans( int y, + int count, + const FT_Span* spans, + void* target_ ) /* TOrigin* */ + { + TOrigin* target = (TOrigin*)target_; + + unsigned char* dst_line = target->origin - y * target->pitch - 2; + unsigned char* dst; + unsigned short w; + + + for ( ; count--; spans++ ) + for ( dst = dst_line + (unsigned short)spans->x, + w = spans->len; w--; dst++ ) + { + dst[0] += ( spans->coverage * target->wght[0] + 85 ) >> 8; + dst[1] += ( spans->coverage * target->wght[1] + 85 ) >> 8; + dst[2] += ( spans->coverage * target->wght[2] + 85 ) >> 8; + dst[3] += ( spans->coverage * target->wght[3] + 85 ) >> 8; + dst[4] += ( spans->coverage * target->wght[4] + 85 ) >> 8; + } + } + + static FT_Error ft_smooth_raster_lcd( FT_Renderer render, FT_Outline* outline, @@ -285,11 +314,47 @@ FT_Vector* vec; FT_Raster_Params params; + TOrigin target; - params.target = bitmap; - params.source = outline; - params.flags = FT_RASTER_FLAG_AA; + if ( render->root.library->lcd_weights[2] ) + { + /* Reject outlines that are too wide for 16-bit FT_Span. */ + /* Other limits are applied upstream with the same error code. */ + if ( bitmap->width > 0x7FFF ) + return FT_THROW( Raster_Overflow ); + + /* Set up direct rendering for instant filtering. */ + params.source = outline; + params.flags = FT_RASTER_FLAG_AA | FT_RASTER_FLAG_DIRECT; + params.gray_spans = ft_smooth_lcd_spans; + params.user = ⌖ + + params.clip_box.xMin = 0; + params.clip_box.yMin = 0; + params.clip_box.xMax = bitmap->width; + params.clip_box.yMax = bitmap->rows; + + if ( bitmap->pitch < 0 ) + target.origin = bitmap->buffer; + else + target.origin = bitmap->buffer + + ( bitmap->rows - 1 ) * (unsigned int)bitmap->pitch; + + target.pitch = bitmap->pitch; + + target.wght[0] = render->root.library->lcd_weights[0]; + target.wght[1] = render->root.library->lcd_weights[1]; + target.wght[2] = render->root.library->lcd_weights[2]; + target.wght[3] = render->root.library->lcd_weights[3]; + target.wght[4] = render->root.library->lcd_weights[4]; + } + else + { + params.target = bitmap; + params.source = outline; + params.flags = FT_RASTER_FLAG_AA; + } /* implode outline */ for ( vec = points; vec < points_end; vec++ ) @@ -306,6 +371,33 @@ } + /* This function applies a vertical filter in direct rendering mode */ + static void + ft_smooth_lcdv_spans( int y, + int count, + const FT_Span* spans, + void* target_ ) /* TOrigin* */ + { + TOrigin* target = (TOrigin*)target_; + + int pitch = target->pitch; + unsigned char* dst_line = target->origin - ( y + 2 ) * pitch; + unsigned char* dst; + unsigned short w; + + + for ( ; count--; spans++ ) + for ( dst = dst_line + (unsigned short)spans->x, + w = spans->len; w--; dst++ ) + { + dst[ 0] += ( spans->coverage * target->wght[0] + 85 ) >> 8; + dst[ pitch] += ( spans->coverage * target->wght[1] + 85 ) >> 8; + dst[2 * pitch] += ( spans->coverage * target->wght[2] + 85 ) >> 8; + dst[3 * pitch] += ( spans->coverage * target->wght[3] + 85 ) >> 8; + dst[4 * pitch] += ( spans->coverage * target->wght[4] + 85 ) >> 8; + } + } + static FT_Error ft_smooth_raster_lcdv( FT_Renderer render, FT_Outline* outline, @@ -317,11 +409,42 @@ FT_Vector* vec; FT_Raster_Params params; + TOrigin target; - params.target = bitmap; - params.source = outline; - params.flags = FT_RASTER_FLAG_AA; + if ( render->root.library->lcd_weights[2] ) + { + /* Set up direct rendering for instant filtering. */ + params.source = outline; + params.flags = FT_RASTER_FLAG_AA | FT_RASTER_FLAG_DIRECT; + params.gray_spans = ft_smooth_lcdv_spans; + params.user = ⌖ + + params.clip_box.xMin = 0; + params.clip_box.yMin = 0; + params.clip_box.xMax = bitmap->width; + params.clip_box.yMax = bitmap->rows; + + if ( bitmap->pitch < 0 ) + target.origin = bitmap->buffer; + else + target.origin = bitmap->buffer + + ( bitmap->rows - 1 ) * (unsigned int)bitmap->pitch; + + target.pitch = bitmap->pitch; + + target.wght[0] = render->root.library->lcd_weights[0]; + target.wght[1] = render->root.library->lcd_weights[1]; + target.wght[2] = render->root.library->lcd_weights[2]; + target.wght[3] = render->root.library->lcd_weights[3]; + target.wght[4] = render->root.library->lcd_weights[4]; + } + else + { + params.target = bitmap; + params.source = outline; + params.flags = FT_RASTER_FLAG_AA; + } /* implode outline */ for ( vec = points; vec < points_end; vec++ ) @@ -353,7 +476,7 @@ unsigned char* dst = target->origin - ( y / SCALE ) * target->pitch; - unsigned short x; + unsigned int x, i; unsigned int cover, sum; @@ -367,8 +490,9 @@ cover = ( spans->coverage + SCALE * SCALE / 2 ) / ( SCALE * SCALE ); for ( x = 0; x < spans->len; x++ ) { - sum = dst[( spans->x + x ) / SCALE] + cover; - dst[( spans->x + x ) / SCALE] = (unsigned char)( sum - ( sum >> 8 ) ); + i = ( (unsigned short)spans->x + x ) / SCALE; + sum = dst[i] + cover; + dst[i] = (unsigned char)( sum - ( sum >> 8 ) ); } } } @@ -494,12 +618,6 @@ else y_shift += 64 * (FT_Int)bitmap->rows; - if ( origin ) - { - x_shift += origin->x; - y_shift += origin->y; - } - /* translate outline to render it into the bitmap */ if ( x_shift || y_shift ) FT_Outline_Translate( outline, x_shift, y_shift ); @@ -527,33 +645,6 @@ error = ft_smooth_raster_lcd ( render, outline, bitmap ); else if ( mode == FT_RENDER_MODE_LCD_V ) error = ft_smooth_raster_lcdv( render, outline, bitmap ); - -#ifdef FT_CONFIG_OPTION_SUBPIXEL_RENDERING - - /* finally apply filtering */ - { - FT_Byte* lcd_weights; - FT_Bitmap_LcdFilterFunc lcd_filter_func; - - - /* Per-face LCD filtering takes priority if set up. */ - if ( slot->face && slot->face->internal->lcd_filter_func ) - { - lcd_weights = slot->face->internal->lcd_weights; - lcd_filter_func = slot->face->internal->lcd_filter_func; - } - else - { - lcd_weights = slot->library->lcd_weights; - lcd_filter_func = slot->library->lcd_filter_func; - } - - if ( lcd_filter_func ) - lcd_filter_func( bitmap, lcd_weights ); - } - -#endif /* FT_CONFIG_OPTION_SUBPIXEL_RENDERING */ - } Exit: diff --git a/vendor/freetype/src/smooth/ftsmooth.h b/vendor/freetype/src/smooth/ftsmooth.h index f76708ae701..56c7ac70b5c 100644 --- a/vendor/freetype/src/smooth/ftsmooth.h +++ b/vendor/freetype/src/smooth/ftsmooth.h @@ -4,7 +4,7 @@ * * Anti-aliasing renderer interface (specification). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/smooth/module.mk b/vendor/freetype/src/smooth/module.mk index 4d06c54c3ee..f09f29423c8 100644 --- a/vendor/freetype/src/smooth/module.mk +++ b/vendor/freetype/src/smooth/module.mk @@ -3,7 +3,7 @@ # -# Copyright (C) 1996-2025 by +# Copyright (C) 1996-2026 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/vendor/freetype/src/smooth/rules.mk b/vendor/freetype/src/smooth/rules.mk index 289c0c86ee4..1cdda6d8397 100644 --- a/vendor/freetype/src/smooth/rules.mk +++ b/vendor/freetype/src/smooth/rules.mk @@ -3,7 +3,7 @@ # -# Copyright (C) 1996-2025 by +# Copyright (C) 1996-2026 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/vendor/freetype/src/smooth/smooth.c b/vendor/freetype/src/smooth/smooth.c index 23dc7accf98..4ecd3ccdb9c 100644 --- a/vendor/freetype/src/smooth/smooth.c +++ b/vendor/freetype/src/smooth/smooth.c @@ -4,7 +4,7 @@ * * FreeType anti-aliasing rasterer module component (body only). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/svg/ftsvg.c b/vendor/freetype/src/svg/ftsvg.c index 8e73c3ba4e8..c98d7f7db90 100644 --- a/vendor/freetype/src/svg/ftsvg.c +++ b/vendor/freetype/src/svg/ftsvg.c @@ -4,7 +4,7 @@ * * The FreeType SVG renderer interface (body). * - * Copyright (C) 2022-2025 by + * Copyright (C) 2022-2026 by * David Turner, Robert Wilhelm, Werner Lemberg, and Moazin Khatti. * * This file is part of the FreeType project, and may only be used, @@ -108,8 +108,6 @@ FT_Memory memory = library->memory; FT_Error error; - FT_ULong size_image_buffer; - SVG_RendererHooks hooks = svg_renderer->hooks; @@ -135,10 +133,10 @@ ft_svg_preset_slot( (FT_Module)renderer, slot, TRUE ); - size_image_buffer = (FT_ULong)slot->bitmap.pitch * slot->bitmap.rows; - /* No `FT_QALLOC` here since we need a clean, empty canvas */ - /* to start with. */ - if ( FT_ALLOC( slot->bitmap.buffer, size_image_buffer ) ) + /* No `FT_QALLOC_MULT` here since we need a clean, empty canvas */ + /* to start with. */ + if ( FT_ALLOC_MULT( slot->bitmap.buffer, + slot->bitmap.rows, slot->bitmap.pitch ) ) return error; error = hooks.render_svg( slot, &svg_renderer->state ); diff --git a/vendor/freetype/src/svg/ftsvg.h b/vendor/freetype/src/svg/ftsvg.h index b04c7fef15f..6254485c5a5 100644 --- a/vendor/freetype/src/svg/ftsvg.h +++ b/vendor/freetype/src/svg/ftsvg.h @@ -4,7 +4,7 @@ * * The FreeType SVG renderer interface (specification). * - * Copyright (C) 2022-2025 by + * Copyright (C) 2022-2026 by * David Turner, Robert Wilhelm, Werner Lemberg, and Moazin Khatti. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/svg/module.mk b/vendor/freetype/src/svg/module.mk index 4c7b18b22b4..5a93e174367 100644 --- a/vendor/freetype/src/svg/module.mk +++ b/vendor/freetype/src/svg/module.mk @@ -3,7 +3,7 @@ # -# Copyright (C) 2022-2025 by +# Copyright (C) 2022-2026 by # David Turner, Robert Wilhelm, Werner Lemberg, and Moazin Khatti. # # This file is part of the FreeType project, and may only be used, modified, diff --git a/vendor/freetype/src/svg/rules.mk b/vendor/freetype/src/svg/rules.mk index 65038b73918..53f4629f8cb 100644 --- a/vendor/freetype/src/svg/rules.mk +++ b/vendor/freetype/src/svg/rules.mk @@ -3,7 +3,7 @@ # -# Copyright (C) 2022-2025 by +# Copyright (C) 2022-2026 by # David Turner, Robert Wilhelm, Werner Lemberg, and Moazin Khatti. # # This file is part of the FreeType project, and may only be used, modified, diff --git a/vendor/freetype/src/svg/svg.c b/vendor/freetype/src/svg/svg.c index c64755c0a9d..fff03ee59e8 100644 --- a/vendor/freetype/src/svg/svg.c +++ b/vendor/freetype/src/svg/svg.c @@ -4,7 +4,7 @@ * * FreeType SVG renderer module component (body only). * - * Copyright (C) 2022-2025 by + * Copyright (C) 2022-2026 by * David Turner, Robert Wilhelm, Werner Lemberg, and Moazin Khatti. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/svg/svgtypes.h b/vendor/freetype/src/svg/svgtypes.h index 65b3eacb6e5..f731bdf1112 100644 --- a/vendor/freetype/src/svg/svgtypes.h +++ b/vendor/freetype/src/svg/svgtypes.h @@ -4,7 +4,7 @@ * * The FreeType SVG renderer internal types (specification). * - * Copyright (C) 2022-2025 by + * Copyright (C) 2022-2026 by * David Turner, Robert Wilhelm, Werner Lemberg, and Moazin Khatti. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/tools/afblue.pl b/vendor/freetype/src/tools/afblue.pl index a9a2fa3b815..24d01cd1ff5 100644 --- a/vendor/freetype/src/tools/afblue.pl +++ b/vendor/freetype/src/tools/afblue.pl @@ -5,7 +5,7 @@ # # Process a blue zone character data file. # -# Copyright (C) 2013-2025 by +# Copyright (C) 2013-2026 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/tools/apinames.c b/vendor/freetype/src/tools/apinames.c index f64541ebbc4..2aa4b9a215b 100644 --- a/vendor/freetype/src/tools/apinames.c +++ b/vendor/freetype/src/tools/apinames.c @@ -101,7 +101,7 @@ names_add( const char* name, { nm = the_names + nn; - if ( (int)nm->hash == h && + if ( nm->hash == h && memcmp( name, nm->name, len ) == 0 && nm->name[len] == 0 ) return; diff --git a/vendor/freetype/src/tools/glnames.py b/vendor/freetype/src/tools/glnames.py index c780ac3f370..9dc28dbc861 100644 --- a/vendor/freetype/src/tools/glnames.py +++ b/vendor/freetype/src/tools/glnames.py @@ -3,7 +3,7 @@ # # FreeType 2 glyph name builder # -# Copyright (C) 1996-2025 by +# Copyright (C) 1996-2026 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/vendor/freetype/src/tools/update-copyright-year b/vendor/freetype/src/tools/update-copyright-year index f7a25a58f7a..2b19d01fa1f 100644 --- a/vendor/freetype/src/tools/update-copyright-year +++ b/vendor/freetype/src/tools/update-copyright-year @@ -2,7 +2,7 @@ eval '(exit $?0)' && eval 'exec perl -wS -i "$0" ${1+"$@"}' & eval 'exec perl -wS -i "$0" $argv:q' if 0; -# Copyright (C) 2015-2025 by +# Copyright (C) 2015-2026 by # Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff --git a/vendor/freetype/src/truetype/module.mk b/vendor/freetype/src/truetype/module.mk index d7ba01b925c..e4627b66911 100644 --- a/vendor/freetype/src/truetype/module.mk +++ b/vendor/freetype/src/truetype/module.mk @@ -3,7 +3,7 @@ # -# Copyright (C) 1996-2025 by +# Copyright (C) 1996-2026 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/vendor/freetype/src/truetype/rules.mk b/vendor/freetype/src/truetype/rules.mk index a5e0d4afdd2..052f2fef21c 100644 --- a/vendor/freetype/src/truetype/rules.mk +++ b/vendor/freetype/src/truetype/rules.mk @@ -3,7 +3,7 @@ # -# Copyright (C) 1996-2025 by +# Copyright (C) 1996-2026 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/vendor/freetype/src/truetype/truetype.c b/vendor/freetype/src/truetype/truetype.c index bc8048d0f5e..accec4597d7 100644 --- a/vendor/freetype/src/truetype/truetype.c +++ b/vendor/freetype/src/truetype/truetype.c @@ -4,7 +4,7 @@ * * FreeType TrueType driver component (body only). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/truetype/ttdriver.c b/vendor/freetype/src/truetype/ttdriver.c index 6369d83d6d5..f5a944fa247 100644 --- a/vendor/freetype/src/truetype/ttdriver.c +++ b/vendor/freetype/src/truetype/ttdriver.c @@ -4,7 +4,7 @@ * * TrueType font driver implementation (body). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -456,15 +456,6 @@ FT_Error error; - if ( !slot ) - return FT_THROW( Invalid_Slot_Handle ); - - if ( !size ) - return FT_THROW( Invalid_Size_Handle ); - - if ( !face ) - return FT_THROW( Invalid_Face_Handle ); - #ifdef FT_CONFIG_OPTION_INCREMENTAL if ( glyph_index >= (FT_UInt)face->num_glyphs && !face->internal->incremental_interface ) diff --git a/vendor/freetype/src/truetype/ttdriver.h b/vendor/freetype/src/truetype/ttdriver.h index 943eaae3482..c00bba066e3 100644 --- a/vendor/freetype/src/truetype/ttdriver.h +++ b/vendor/freetype/src/truetype/ttdriver.h @@ -4,7 +4,7 @@ * * High-level TrueType driver interface (specification). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/truetype/tterrors.h b/vendor/freetype/src/truetype/tterrors.h index 631dbf5a80f..1ae4b087ac8 100644 --- a/vendor/freetype/src/truetype/tterrors.h +++ b/vendor/freetype/src/truetype/tterrors.h @@ -4,7 +4,7 @@ * * TrueType error codes (specification only). * - * Copyright (C) 2001-2025 by + * Copyright (C) 2001-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/truetype/ttgload.c b/vendor/freetype/src/truetype/ttgload.c index e810ebfd550..f9a54c4efa0 100644 --- a/vendor/freetype/src/truetype/ttgload.c +++ b/vendor/freetype/src/truetype/ttgload.c @@ -4,7 +4,7 @@ * * TrueType Glyph Loader (body). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -345,8 +345,8 @@ FT_Byte* limit = load->limit; FT_GlyphLoader gloader = load->gloader; FT_Outline* outline = &gloader->current.outline; - FT_Int n_contours = load->n_contours; - FT_Int n_points; + FT_UInt n_contours = (FT_UInt)load->n_contours; + FT_UInt n_points; FT_UShort n_ins; FT_Byte *flag, *flag_limit; @@ -354,7 +354,6 @@ FT_Vector *vec, *vec_limit; FT_Pos x, y; FT_UShort *cont, *cont_limit; - FT_Int last; /* check that we can add the contours to the glyph */ @@ -363,27 +362,25 @@ goto Fail; /* check space for contours array + instructions count */ - if ( n_contours >= 0xFFF || p + 2 * n_contours + 2 > limit ) + if ( n_contours >= 0xFFFU || p + 2 * n_contours + 2 > limit ) goto Invalid_Outline; /* reading the contours' endpoints & number of points */ cont = outline->contours; cont_limit = cont + n_contours; - last = -1; + n_points = 0; for ( ; cont < cont_limit; cont++ ) { *cont = FT_NEXT_USHORT( p ); - if ( *cont <= last ) + if ( *cont < n_points ) goto Invalid_Outline; - last = *cont; + n_points = *cont + 1U; } - n_points = last + 1; - - FT_TRACE5(( " # of points: %d\n", n_points )); + FT_TRACE5(( " # of points: %u\n", n_points )); /* note that we will add four phantom points later */ error = FT_GLYPHLOADER_CHECK_POINTS( gloader, n_points + 4, 0 ); @@ -1185,9 +1182,7 @@ /* make room for phantom points */ - error = FT_GLYPHLOADER_CHECK_POINTS( loader->gloader, - outline->n_points + 4, - 0 ); + error = FT_GLYPHLOADER_CHECK_POINTS( loader->gloader, 4, 0 ); if ( error ) return error; @@ -1425,6 +1420,14 @@ FT_TRACE5(( " nesting level: %u\n", recurse_count )); #endif + /* arbitrary recursion limit */ + if ( recurse_count > 100 ) + { + FT_TRACE4(( "load_truetype_glyph: recursion depth exceeded\n" )); + error = FT_THROW( Invalid_Composite ); + goto Exit; + } + /* some fonts have an incorrect value of `maxComponentDepth' */ if ( recurse_count > face->max_profile.maxComponentDepth ) { @@ -2217,6 +2220,10 @@ exec = size->context; #ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL + /* reset backward compatibility; note that */ + /* the CVT program always runs without it */ + exec->backward_compatibility = 0; + if ( driver->interpreter_version == TT_INTERPRETER_VERSION_40 ) { grayscale = FALSE; @@ -2253,9 +2260,7 @@ return error; } - error = TT_Load_Context( exec, face, size ); - if ( error ) - return error; + TT_Load_Context( exec, face, size ); /* check whether the cvt program has disabled hinting */ if ( size->GS.instruct_control & 1 ) @@ -2283,8 +2288,7 @@ mode != FT_RENDER_MODE_MONO && !FT_IS_TRICKY( glyph->face ) ) exec->backward_compatibility = ( size->GS.instruct_control & 4 ) ^ 4; - else - exec->backward_compatibility = 0; + #endif /* TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL */ loader->exec = exec; diff --git a/vendor/freetype/src/truetype/ttgload.h b/vendor/freetype/src/truetype/ttgload.h index 39d6ae3664c..3d6a762d1f7 100644 --- a/vendor/freetype/src/truetype/ttgload.h +++ b/vendor/freetype/src/truetype/ttgload.h @@ -4,7 +4,7 @@ * * TrueType Glyph Loader (specification). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/truetype/ttgxvar.c b/vendor/freetype/src/truetype/ttgxvar.c index 2ff40c9e801..95de8221ba0 100644 --- a/vendor/freetype/src/truetype/ttgxvar.c +++ b/vendor/freetype/src/truetype/ttgxvar.c @@ -4,7 +4,7 @@ * * TrueType GX Font Variation loader * - * Copyright (C) 2004-2025 by + * Copyright (C) 2004-2026 by * David Turner, Robert Wilhelm, Werner Lemberg, and George Williams. * * This file is part of the FreeType project, and may only be used, @@ -697,11 +697,9 @@ if ( long_words ) per_region_size *= 2; - if ( FT_NEW_ARRAY( varData->deltaSet, per_region_size * item_count ) ) + if ( FT_QALLOC_MULT( varData->deltaSet, item_count, per_region_size ) ) goto Exit; - if ( FT_Stream_Read( stream, - varData->deltaSet, - per_region_size * item_count ) ) + if ( FT_STREAM_READ( varData->deltaSet, item_count * per_region_size ) ) { FT_TRACE2(( "deltaSet read failed." )); error = FT_THROW( Invalid_Table ); @@ -3455,9 +3453,7 @@ TT_Face ttface = (TT_Face)face; FT_Error error = FT_Err_Ok; GX_Blend blend; - FT_MM_Var* mmvar; - FT_Var_Axis* a; - FT_UInt i, nc; + FT_UInt i; if ( !ttface->blend ) @@ -3476,31 +3472,30 @@ return error; } - nc = num_coords; if ( num_coords > blend->num_axis ) { FT_TRACE2(( "TT_Get_Var_Design:" " only using first %u of %u coordinates\n", blend->num_axis, num_coords )); - nc = blend->num_axis; + + FT_ARRAY_ZERO( coords + blend->num_axis, num_coords - blend->num_axis ); + num_coords = blend->num_axis; } - mmvar = blend->mmvar; - a = mmvar->axis; if ( ttface->doblend ) { - for ( i = 0; i < nc; i++, a++ ) + for ( i = 0; i < num_coords; i++ ) coords[i] = blend->coords[i]; } else { - for ( i = 0; i < nc; i++, a++ ) + FT_Var_Axis* a = blend->mmvar->axis; + + + for ( i = 0; i < num_coords; i++, a++ ) coords[i] = a->def; } - for ( ; i < num_coords; i++, a++ ) - coords[i] = a->def; - return FT_Err_Ok; } @@ -4027,13 +4022,13 @@ /* modeled after `af_iup_shift' */ static void - tt_delta_shift( int p1, - int p2, - int ref, + tt_delta_shift( FT_UInt p1, + FT_UInt p2, + FT_UInt ref, FT_Vector* in_points, FT_Vector* out_points ) { - int p; + FT_UInt p; FT_Vector delta; @@ -4064,14 +4059,14 @@ /* modeled after `af_iup_interp', `_iup_worker_interpolate', and */ /* `Ins_IUP' with spec differences in handling ill-defined cases. */ static void - tt_delta_interpolate( int p1, - int p2, - int ref1, - int ref2, + tt_delta_interpolate( FT_UInt p1, + FT_UInt p2, + FT_UInt ref1, + FT_UInt ref2, FT_Vector* in_points, FT_Vector* out_points ) { - int p, i; + FT_UInt p, i; FT_Pos out, in1, in2, out1, out2, d1, d2; @@ -4137,24 +4132,18 @@ FT_Vector* in_points, FT_Bool* has_delta ) { - FT_Int first_point; - FT_Int end_point; - - FT_Int first_delta; - FT_Int cur_delta; + FT_UInt first_point; + FT_UInt end_point; - FT_Int point; - FT_Short contour; + FT_UInt first_delta; + FT_UInt cur_delta; + FT_UInt point; + FT_UInt contour; - /* ignore empty outlines */ - if ( !outline->n_contours ) - return; - - contour = 0; - point = 0; - do + for ( point = 0, contour = 0; + contour < outline->n_contours; contour++ ) { end_point = outline->contours[contour]; first_point = point; @@ -4215,9 +4204,7 @@ out_points ); } } - contour++; - - } while ( contour < outline->n_contours ); + } } diff --git a/vendor/freetype/src/truetype/ttgxvar.h b/vendor/freetype/src/truetype/ttgxvar.h index 568c8027bbf..8a59c0cd6e6 100644 --- a/vendor/freetype/src/truetype/ttgxvar.h +++ b/vendor/freetype/src/truetype/ttgxvar.h @@ -4,7 +4,7 @@ * * TrueType GX Font Variation loader (specification) * - * Copyright (C) 2004-2025 by + * Copyright (C) 2004-2026 by * David Turner, Robert Wilhelm, Werner Lemberg and George Williams. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/truetype/ttinterp.c b/vendor/freetype/src/truetype/ttinterp.c index 7b26c9a9df2..a975cce7eb3 100644 --- a/vendor/freetype/src/truetype/ttinterp.c +++ b/vendor/freetype/src/truetype/ttinterp.c @@ -4,7 +4,7 @@ * * TrueType bytecode interpreter (body). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -272,7 +272,7 @@ * * Note that not all members of `TT_ExecContext` get initialized. */ - FT_LOCAL_DEF( FT_Error ) + FT_LOCAL_DEF( void ) TT_Load_Context( TT_ExecContext exec, TT_Face face, TT_Size size ) @@ -284,7 +284,7 @@ exec->size = size; /* CVT and storage are not persistent in FreeType */ - /* reset them after they might have been modifief */ + /* reset them after they might have been modified */ exec->storage = exec->stack + exec->stackSize; exec->cvt = exec->storage + exec->storeSize; @@ -297,8 +297,6 @@ exec->metrics = *size->metrics; exec->twilight = size->twilight; - - return FT_Err_Ok; } @@ -1106,7 +1104,7 @@ /* documentation is in freetype.h */ static __inline FT_Int32 - TT_MulFixi14_i386( FT_Int32 a, + TT_MulFix14_i386( FT_Int32 a, FT_Int32 b ) { FT_Int32 result; @@ -2843,7 +2841,13 @@ ARRAY_BOUND_ERROR; } else + { + Modify_CVT_Check( exc ); + if ( exc->error ) + return; + exc->cvt[I] = FT_MulFix( args[1], exc->tt_metrics.scale ); + } } @@ -4925,37 +4929,38 @@ Compute_Point_Displacement( TT_ExecContext exc, FT_F26Dot6* x, FT_F26Dot6* y, - TT_GlyphZone zone, - FT_UShort* refp ) + FT_Vector* cur, + FT_UInt* refp ) { - TT_GlyphZoneRec zp; - FT_UShort p; - FT_F26Dot6 d; + TT_GlyphZone zp; + FT_UShort p; + FT_F26Dot6 d; if ( exc->opcode & 1 ) { - zp = exc->zp0; + zp = &exc->zp0; p = exc->GS.rp1; } else { - zp = exc->zp1; + zp = &exc->zp1; p = exc->GS.rp2; } - if ( BOUNDS( p, zp.n_points ) ) + if ( BOUNDS( p, zp->n_points ) ) { if ( exc->pedantic_hinting ) exc->error = FT_THROW( Invalid_Reference ); - *refp = 0; return FAILURE; } - *zone = zp; - *refp = p; + /* return reference if zones match */ + if ( refp ) + *refp = cur == zp->cur ? p + : ~0U; /* nan */ - d = PROJECT( zp.cur + p, zp.org + p ); + d = PROJECT( zp->cur + p, zp->org + p ); *x = FT_MulFix( d, exc->moveVector.x ); *y = FT_MulFix( d, exc->moveVector.y ); @@ -4967,10 +4972,9 @@ /* See `ttinterp.h' for details on backward compatibility mode. */ static void Move_Zp2_Point( TT_ExecContext exc, - FT_UShort point, + FT_UInt point, FT_F26Dot6 dx, - FT_F26Dot6 dy, - FT_Bool touch ) + FT_F26Dot6 dy ) { if ( exc->GS.freeVector.x != 0 ) { @@ -4980,8 +4984,7 @@ #endif exc->zp2.cur[point].x = ADD_LONG( exc->zp2.cur[point].x, dx ); - if ( touch ) - exc->zp2.tags[point] |= FT_CURVE_TAG_TOUCH_X; + exc->zp2.tags[point] |= FT_CURVE_TAG_TOUCH_X; } if ( exc->GS.freeVector.y != 0 ) @@ -4992,8 +4995,7 @@ #endif exc->zp2.cur[point].y = ADD_LONG( exc->zp2.cur[point].y, dy ); - if ( touch ) - exc->zp2.tags[point] |= FT_CURVE_TAG_TOUCH_Y; + exc->zp2.tags[point] |= FT_CURVE_TAG_TOUCH_Y; } } @@ -5009,11 +5011,9 @@ FT_Long* args ) { FT_Long loop = exc->GS.loop; - TT_GlyphZoneRec zp; - FT_UShort refp; FT_F26Dot6 dx, dy; - FT_UShort point; + FT_UInt point; if ( exc->new_top < loop ) @@ -5025,12 +5025,12 @@ exc->new_top -= loop; - if ( Compute_Point_Displacement( exc, &dx, &dy, &zp, &refp ) ) + if ( Compute_Point_Displacement( exc, &dx, &dy, NULL, NULL ) ) return; while ( loop-- ) { - point = (FT_UShort)*(--args); + point = (FT_UInt)*(--args); if ( BOUNDS( point, exc->zp2.n_points ) ) { @@ -5041,7 +5041,7 @@ } } else - Move_Zp2_Point( exc, point, dx, dy, TRUE ); + Move_Zp2_Point( exc, point, dx, dy ); } Fail: @@ -5063,12 +5063,10 @@ Ins_SHC( TT_ExecContext exc, FT_Long* args ) { - TT_GlyphZoneRec zp; - FT_UShort refp; + FT_UInt refp, start, limit, i; FT_F26Dot6 dx, dy; FT_UShort contour, bounds; - FT_UShort start, limit, i; contour = (FT_UShort)args[0]; @@ -5081,7 +5079,7 @@ return; } - if ( Compute_Point_Displacement( exc, &dx, &dy, &zp, &refp ) ) + if ( Compute_Point_Displacement( exc, &dx, &dy, exc->zp2.cur, &refp ) ) return; if ( contour == 0 ) @@ -5097,8 +5095,8 @@ for ( i = start; i < limit; i++ ) { - if ( zp.cur != exc->zp2.cur || refp != i ) - Move_Zp2_Point( exc, i, dx, dy, TRUE ); + if ( refp != i ) + Move_Zp2_Point( exc, i, dx, dy ); } } @@ -5113,40 +5111,59 @@ Ins_SHZ( TT_ExecContext exc, FT_Long* args ) { - TT_GlyphZoneRec zp; - FT_UShort refp; - FT_F26Dot6 dx, - dy; - - FT_UShort limit, i; + FT_Vector* cur; + FT_UInt refp, i, limit; + FT_F26Dot6 dx, dy; - if ( BOUNDS( args[0], 2 ) ) + /* XXX: UNDOCUMENTED! SHZ doesn't move the phantom points, */ + /* which must be subtracted. */ + switch ( (FT_Int)args[0] ) { + case 0: + cur = exc->twilight.cur; + limit = exc->twilight.n_points; + break; + + case 1: + cur = exc->pts.cur; + limit = exc->pts.n_points > 4U ? exc->pts.n_points - 4U : 0; + break; + + default: if ( exc->pedantic_hinting ) exc->error = FT_THROW( Invalid_Reference ); return; } - if ( Compute_Point_Displacement( exc, &dx, &dy, &zp, &refp ) ) + if ( Compute_Point_Displacement( exc, &dx, &dy, cur, &refp ) ) return; - /* XXX: UNDOCUMENTED! SHZ doesn't move the phantom points. */ - /* Twilight zone has no real contours, so use `n_points'. */ - /* Normal zone's `n_points' includes phantoms, so must */ - /* use end of last contour. */ - if ( exc->GS.gep2 == 0 ) - limit = exc->zp2.n_points; - else if ( exc->GS.gep2 == 1 && exc->zp2.n_contours > 0 ) - limit = exc->zp2.contours[exc->zp2.n_contours - 1] + 1; - else - limit = 0; + /* XXX: UNDOCUMENTED! SHZ doesn't touch the points. */ + if ( dx ) + { +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL + /* See `ttinterp.h' for details on backward compatibility mode. */ + if ( !exc->backward_compatibility ) +#endif + for ( i = 0; i < limit; i++ ) + { + if ( refp != i ) + cur[i].x = ADD_LONG( cur[i].x, dx ); + } + } - /* XXX: UNDOCUMENTED! SHZ doesn't touch the points */ - for ( i = 0; i < limit; i++ ) + if ( dy ) { - if ( zp.cur != exc->zp2.cur || refp != i ) - Move_Zp2_Point( exc, i, dx, dy, FALSE ); +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL + /* See `ttinterp.h' for details on backward compatibility mode. */ + if ( exc->backward_compatibility != 0x7 ) +#endif + for ( i = 0; i < limit; i++ ) + { + if ( refp != i ) + cur[i].y = ADD_LONG( cur[i].y, dy ); + } } } @@ -5163,7 +5180,7 @@ { FT_Long loop = exc->GS.loop; FT_F26Dot6 dx, dy; - FT_UShort point; + FT_UInt point; #ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL FT_Bool in_twilight = FT_BOOL( exc->GS.gep0 == 0 || exc->GS.gep1 == 0 || @@ -5185,7 +5202,7 @@ while ( loop-- ) { - point = (FT_UShort)*(--args); + point = (FT_UInt)*(--args); if ( BOUNDS( point, exc->zp2.n_points ) ) { @@ -5208,11 +5225,11 @@ ( exc->backward_compatibility != 0x7 && ( ( exc->is_composite && exc->GS.freeVector.y != 0 ) || ( exc->zp2.tags[point] & FT_CURVE_TAG_TOUCH_Y ) ) ) ) - Move_Zp2_Point( exc, point, 0, dy, TRUE ); + Move_Zp2_Point( exc, point, 0, dy ); } else #endif - Move_Zp2_Point( exc, point, dx, dy, TRUE ); + Move_Zp2_Point( exc, point, dx, dy ); } Fail: @@ -5457,11 +5474,11 @@ /* single width cut-in test */ /* |org_dist - single_width_value| < single_width_cutin */ - if ( exc->GS.single_width_cutin > 0 && - org_dist < exc->GS.single_width_value + - exc->GS.single_width_cutin && - org_dist > exc->GS.single_width_value - - exc->GS.single_width_cutin ) + if ( exc->GS.single_width_cutin > 0 && + org_dist < ADD_LONG( exc->GS.single_width_value, + exc->GS.single_width_cutin ) && + org_dist > SUB_LONG( exc->GS.single_width_value, + exc->GS.single_width_cutin ) ) { if ( org_dist >= 0 ) org_dist = exc->GS.single_width_value; @@ -6193,14 +6210,14 @@ IUP_WorkerRec V; FT_Byte mask; - FT_UInt first_point; /* first point of contour */ - FT_UInt end_point; /* end point (last+1) of contour */ + FT_UInt first_point; /* first point of contour */ + FT_UInt end_point; /* end point (last+1) of contour */ - FT_UInt first_touched; /* first touched point in contour */ - FT_UInt cur_touched; /* current touched point in contour */ + FT_UInt first_touched; /* first touched point in contour */ + FT_UInt cur_touched; /* current touched point in contour */ - FT_UInt point; /* current point */ - FT_Short contour; /* current contour */ + FT_UInt point; /* current point */ + FT_UInt contour; /* current contour */ #ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL @@ -7341,56 +7358,11 @@ } if ( exc->error ) - { - switch ( exc->error ) - { - case FT_ERR( Invalid_Opcode ): - { - TT_DefRecord* def = exc->IDefs; - TT_DefRecord* limit = FT_OFFSET( def, exc->numIDefs ); - - - /* looking for redefined instructions */ - for ( ; def < limit; def++ ) - { - if ( def->active && exc->opcode == (FT_Byte)def->opc ) - { - TT_CallRec* callrec; - - - if ( exc->callTop >= exc->callSize ) - { - exc->error = FT_THROW( Invalid_Reference ); - goto LErrorLabel_; - } - - callrec = &exc->callStack[exc->callTop]; - - callrec->Caller_Range = exc->curRange; - callrec->Caller_IP = exc->IP + 1; - callrec->Cur_Count = 1; - callrec->Def = def; - - if ( Ins_Goto_CodeRange( exc, - def->range, - def->start ) == FAILURE ) - goto LErrorLabel_; - - goto LSuiteLabel_; - } - } - } - FALL_THROUGH; - - default: - goto LErrorLabel_; - } - } + goto LErrorLabel_; exc->top = exc->new_top; exc->IP += exc->length; - LSuiteLabel_: if ( exc->IP >= exc->codeSize ) { if ( exc->callTop > 0 ) diff --git a/vendor/freetype/src/truetype/ttinterp.h b/vendor/freetype/src/truetype/ttinterp.h index 2e69d191890..05ac831dfd1 100644 --- a/vendor/freetype/src/truetype/ttinterp.h +++ b/vendor/freetype/src/truetype/ttinterp.h @@ -4,7 +4,7 @@ * * TrueType bytecode interpreter (specification). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -439,7 +439,7 @@ FT_BEGIN_HEADER FT_LOCAL( void ) TT_Done_Context( TT_ExecContext exec ); - FT_LOCAL( FT_Error ) + FT_LOCAL( void ) TT_Load_Context( TT_ExecContext exec, TT_Face face, TT_Size size ); diff --git a/vendor/freetype/src/truetype/ttobjs.c b/vendor/freetype/src/truetype/ttobjs.c index fd0c0ad14f6..dc897688584 100644 --- a/vendor/freetype/src/truetype/ttobjs.c +++ b/vendor/freetype/src/truetype/ttobjs.c @@ -4,7 +4,7 @@ * * Objects manager (body). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -734,6 +734,10 @@ /* a `loca' table is not valid */ if ( face->glyf_len && FT_ERR_EQ( error, Table_Missing ) ) goto Exit; + /* if both `glyf' and `loca' tables are missing, */ + /* we don't have a valid font file either */ + if ( face->glyf_len == 0 && FT_ERR_EQ( error, Locations_Missing ) ) + goto Bad_Format; if ( error ) goto Exit; } @@ -884,9 +888,7 @@ FT_Error error; - error = TT_Load_Context( exec, face, size ); - if ( error ) - return error; + TT_Load_Context( exec, face, size ); /* disable CVT and glyph programs coderange */ TT_Clear_CodeRange( exec, tt_coderange_cvt ); @@ -952,9 +954,7 @@ FT_ARRAY_ZERO( size->twilight.org, size->twilight.n_points ); FT_ARRAY_ZERO( size->twilight.cur, size->twilight.n_points ); - error = TT_Load_Context( exec, face, size ); - if ( error ) - return error; + TT_Load_Context( exec, face, size ); /* clear storage area */ FT_ARRAY_ZERO( exec->storage, exec->storeSize ); @@ -1043,13 +1043,15 @@ if ( !exec ) return FT_THROW( Could_Not_Find_Context ); + size->context = exec; + exec->pedantic_hinting = pedantic; exec->maxFDefs = maxp->maxFunctionDefs; exec->maxIDefs = maxp->maxInstructionDefs; if ( FT_NEW_ARRAY( exec->FDefs, exec->maxFDefs + exec->maxIDefs ) ) - goto Exit; + goto Fail; exec->IDefs = exec->FDefs + exec->maxFDefs; @@ -1059,16 +1061,30 @@ exec->maxFunc = 0; exec->maxIns = 0; - /* XXX: We reserve a little more elements on the stack to deal */ - /* with broken fonts like arialbs, courbs, timesbs, etc. */ - exec->stackSize = maxp->maxStackElements + 32; + /* We reserve extra elements on the stack to deal with broken fonts. */ + /* */ + /* Some fonts (e.g., `Rubik-Italic.ttf`) have buggy hinting bytecode */ + /* that pushes more values than `maxStackElements` declared in the */ + /* 'maxp' table. For example, `Rubik-Italic.ttf`'s 'prep' program */ + /* pushes 255 values but `maxStackElements` is only set to 153. */ + /* */ + /* To alleviate this situation we increase the value of */ + /* `maxStackElements` based on a percentage of `maxStackElements`, */ + /* with a minimum of 128 extra slots. This allows most broken fonts */ + /* to work without completely disabling hinting, while adding only a */ + /* small overhead for correctly authored fonts. */ + + /* Use 50% more than declared, with minimum safety margin of 128. */ + exec->stackSize = maxp->maxStackElements + + FT_MAX( maxp->maxStackElements / 2, 128 ); + exec->storeSize = maxp->maxStorage; exec->cvtSize = face->cvt_size; if ( FT_NEW_ARRAY( exec->stack, exec->stackSize + (FT_Long)( exec->storeSize + exec->cvtSize ) ) ) - goto Exit; + goto Fail; /* reserve twilight zone and set GS before fpgm is executed, */ /* just in case, even though fpgm should not touch them */ @@ -1079,11 +1095,10 @@ error = tt_glyphzone_new( memory, n_twilight, 0, &size->twilight ); if ( error ) - goto Exit; + goto Fail; size->GS = tt_default_graphics_state; size->cvt_ready = -1; - size->context = exec; size->ttmetrics.rotated = FALSE; size->ttmetrics.stretched = FALSE; @@ -1099,10 +1114,8 @@ error = tt_size_run_fpgm( size ); return error; - Exit: - if ( error ) - tt_size_done_bytecode( size ); - + Fail: + tt_size_done_bytecode( size ); return error; } diff --git a/vendor/freetype/src/truetype/ttobjs.h b/vendor/freetype/src/truetype/ttobjs.h index 28d6c7d855f..9b2f412ac47 100644 --- a/vendor/freetype/src/truetype/ttobjs.h +++ b/vendor/freetype/src/truetype/ttobjs.h @@ -4,7 +4,7 @@ * * Objects manager (specification). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/truetype/ttpload.c b/vendor/freetype/src/truetype/ttpload.c index 827454d8574..5b0a3944d6a 100644 --- a/vendor/freetype/src/truetype/ttpload.c +++ b/vendor/freetype/src/truetype/ttpload.c @@ -4,7 +4,7 @@ * * TrueType-specific tables loader (body). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/truetype/ttpload.h b/vendor/freetype/src/truetype/ttpload.h index bb4d3c9cc55..ad0a9eb7a6d 100644 --- a/vendor/freetype/src/truetype/ttpload.h +++ b/vendor/freetype/src/truetype/ttpload.h @@ -4,7 +4,7 @@ * * TrueType-specific tables loader (specification). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/type1/module.mk b/vendor/freetype/src/type1/module.mk index e7c0718de45..a0aeada3ebb 100644 --- a/vendor/freetype/src/type1/module.mk +++ b/vendor/freetype/src/type1/module.mk @@ -3,7 +3,7 @@ # -# Copyright (C) 1996-2025 by +# Copyright (C) 1996-2026 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/vendor/freetype/src/type1/rules.mk b/vendor/freetype/src/type1/rules.mk index 2cb9c34d143..5d9c2e7e4f3 100644 --- a/vendor/freetype/src/type1/rules.mk +++ b/vendor/freetype/src/type1/rules.mk @@ -3,7 +3,7 @@ # -# Copyright (C) 1996-2025 by +# Copyright (C) 1996-2026 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/vendor/freetype/src/type1/t1afm.c b/vendor/freetype/src/type1/t1afm.c index b1a0d23bed6..cc94a0d4a45 100644 --- a/vendor/freetype/src/type1/t1afm.c +++ b/vendor/freetype/src/type1/t1afm.c @@ -4,7 +4,7 @@ * * AFM support for Type 1 fonts (body). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/type1/t1afm.h b/vendor/freetype/src/type1/t1afm.h index 92ff627dd0d..f31c9d100f0 100644 --- a/vendor/freetype/src/type1/t1afm.h +++ b/vendor/freetype/src/type1/t1afm.h @@ -4,7 +4,7 @@ * * AFM support for Type 1 fonts (specification). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/type1/t1driver.c b/vendor/freetype/src/type1/t1driver.c index 5ded7714021..1d7a342708d 100644 --- a/vendor/freetype/src/type1/t1driver.c +++ b/vendor/freetype/src/type1/t1driver.c @@ -4,7 +4,7 @@ * * Type 1 driver interface (body). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/type1/t1driver.h b/vendor/freetype/src/type1/t1driver.h index 1cc3d24e7dd..2869adab6e7 100644 --- a/vendor/freetype/src/type1/t1driver.h +++ b/vendor/freetype/src/type1/t1driver.h @@ -4,7 +4,7 @@ * * High-level Type 1 driver interface (specification). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/type1/t1errors.h b/vendor/freetype/src/type1/t1errors.h index 46bddbc30fd..efe53be1f4c 100644 --- a/vendor/freetype/src/type1/t1errors.h +++ b/vendor/freetype/src/type1/t1errors.h @@ -4,7 +4,7 @@ * * Type 1 error codes (specification only). * - * Copyright (C) 2001-2025 by + * Copyright (C) 2001-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/type1/t1gload.c b/vendor/freetype/src/type1/t1gload.c index b9bc0b56ce8..dd9b6cd80fc 100644 --- a/vendor/freetype/src/type1/t1gload.c +++ b/vendor/freetype/src/type1/t1gload.c @@ -4,7 +4,7 @@ * * Type 1 Glyph Loader (body). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/type1/t1gload.h b/vendor/freetype/src/type1/t1gload.h index 6bedd132c5f..b3de427a2f3 100644 --- a/vendor/freetype/src/type1/t1gload.h +++ b/vendor/freetype/src/type1/t1gload.h @@ -4,7 +4,7 @@ * * Type 1 Glyph Loader (specification). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/type1/t1load.c b/vendor/freetype/src/type1/t1load.c index 0f11445bef0..2ed327ba2e7 100644 --- a/vendor/freetype/src/type1/t1load.c +++ b/vendor/freetype/src/type1/t1load.c @@ -4,7 +4,7 @@ * * Type 1 font loader (body). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -677,7 +677,7 @@ PS_Blend blend = t1face->blend; FT_Fixed axiscoords[4]; - FT_UInt i, nc; + FT_UInt i; if ( !blend ) @@ -687,19 +687,18 @@ axiscoords, blend->num_axis ); - nc = num_coords; if ( num_coords > blend->num_axis ) { FT_TRACE2(( "T1_Get_Var_Design:" " only using first %u of %u coordinates\n", blend->num_axis, num_coords )); - nc = blend->num_axis; + + FT_ARRAY_ZERO( coords + blend->num_axis, num_coords - blend->num_axis ); + num_coords = blend->num_axis; } - for ( i = 0; i < nc; i++ ) + for ( i = 0; i < num_coords; i++ ) coords[i] = mm_axis_unmap( &blend->design_map[i], axiscoords[i] ); - for ( ; i < num_coords; i++ ) - coords[i] = 0; return FT_Err_Ok; } diff --git a/vendor/freetype/src/type1/t1load.h b/vendor/freetype/src/type1/t1load.h index 2cd8241968d..39d4b94e9dc 100644 --- a/vendor/freetype/src/type1/t1load.h +++ b/vendor/freetype/src/type1/t1load.h @@ -4,7 +4,7 @@ * * Type 1 font loader (specification). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/type1/t1objs.c b/vendor/freetype/src/type1/t1objs.c index 7f25208f875..4ee0a591096 100644 --- a/vendor/freetype/src/type1/t1objs.c +++ b/vendor/freetype/src/type1/t1objs.c @@ -4,7 +4,7 @@ * * Type 1 objects manager (body). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/type1/t1objs.h b/vendor/freetype/src/type1/t1objs.h index 6c71977c154..f152f630a86 100644 --- a/vendor/freetype/src/type1/t1objs.h +++ b/vendor/freetype/src/type1/t1objs.h @@ -4,7 +4,7 @@ * * Type 1 objects manager (specification). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/type1/t1parse.c b/vendor/freetype/src/type1/t1parse.c index ef643e298f4..f5ee6e1bd97 100644 --- a/vendor/freetype/src/type1/t1parse.c +++ b/vendor/freetype/src/type1/t1parse.c @@ -4,7 +4,7 @@ * * Type 1 parser (body). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -339,11 +339,8 @@ FT_Bool test_cr; - parser->root.cursor = parser->base_dict; - parser->root.limit = parser->base_dict + parser->base_len; - - cur = parser->root.cursor; - limit = parser->root.limit; + parser->root.cursor = cur; + parser->root.limit = limit; while ( cur < limit ) { diff --git a/vendor/freetype/src/type1/t1parse.h b/vendor/freetype/src/type1/t1parse.h index f4ad426e9e1..ebd7c3fb340 100644 --- a/vendor/freetype/src/type1/t1parse.h +++ b/vendor/freetype/src/type1/t1parse.h @@ -4,7 +4,7 @@ * * Type 1 parser (specification). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/type1/t1tokens.h b/vendor/freetype/src/type1/t1tokens.h index c3736cd42c0..745351a34c9 100644 --- a/vendor/freetype/src/type1/t1tokens.h +++ b/vendor/freetype/src/type1/t1tokens.h @@ -4,7 +4,7 @@ * * Type 1 tokenizer (specification). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -33,7 +33,7 @@ T1_FIELD_DICT_FONTDICT ) /* we use pointers to detect modifications made by synthetic fonts */ - T1_FIELD_NUM ( "ItalicAngle", italic_angle, + T1_FIELD_FIXED ( "ItalicAngle", italic_angle, T1_FIELD_DICT_FONTDICT ) T1_FIELD_BOOL ( "isFixedPitch", is_fixed_pitch, T1_FIELD_DICT_FONTDICT ) diff --git a/vendor/freetype/src/type1/type1.c b/vendor/freetype/src/type1/type1.c index ba053ebd638..b8e88e6eac5 100644 --- a/vendor/freetype/src/type1/type1.c +++ b/vendor/freetype/src/type1/type1.c @@ -4,7 +4,7 @@ * * FreeType Type 1 driver component (body only). * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/type42/module.mk b/vendor/freetype/src/type42/module.mk index 1cd3d4eaafb..d87f3a404e5 100644 --- a/vendor/freetype/src/type42/module.mk +++ b/vendor/freetype/src/type42/module.mk @@ -3,7 +3,7 @@ # -# Copyright (C) 2002-2025 by +# Copyright (C) 2002-2026 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/vendor/freetype/src/type42/rules.mk b/vendor/freetype/src/type42/rules.mk index 7f7bb9c06a8..3c796cee85f 100644 --- a/vendor/freetype/src/type42/rules.mk +++ b/vendor/freetype/src/type42/rules.mk @@ -3,7 +3,7 @@ # -# Copyright (C) 2002-2025 by +# Copyright (C) 2002-2026 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/vendor/freetype/src/type42/t42drivr.c b/vendor/freetype/src/type42/t42drivr.c index 234fb16f9c2..a45d13ebd18 100644 --- a/vendor/freetype/src/type42/t42drivr.c +++ b/vendor/freetype/src/type42/t42drivr.c @@ -4,7 +4,7 @@ * * High-level Type 42 driver interface (body). * - * Copyright (C) 2002-2025 by + * Copyright (C) 2002-2026 by * Roberto Alameda. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/type42/t42drivr.h b/vendor/freetype/src/type42/t42drivr.h index d286da02a58..1c2bb2029af 100644 --- a/vendor/freetype/src/type42/t42drivr.h +++ b/vendor/freetype/src/type42/t42drivr.h @@ -4,7 +4,7 @@ * * High-level Type 42 driver interface (specification). * - * Copyright (C) 2002-2025 by + * Copyright (C) 2002-2026 by * Roberto Alameda. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/type42/t42error.h b/vendor/freetype/src/type42/t42error.h index f7c9a9403f8..9c386d8c48f 100644 --- a/vendor/freetype/src/type42/t42error.h +++ b/vendor/freetype/src/type42/t42error.h @@ -4,7 +4,7 @@ * * Type 42 error codes (specification only). * - * Copyright (C) 2002-2025 by + * Copyright (C) 2002-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/type42/t42objs.c b/vendor/freetype/src/type42/t42objs.c index d20917aea2a..a01c3129d07 100644 --- a/vendor/freetype/src/type42/t42objs.c +++ b/vendor/freetype/src/type42/t42objs.c @@ -4,7 +4,7 @@ * * Type 42 objects manager (body). * - * Copyright (C) 2002-2025 by + * Copyright (C) 2002-2026 by * Roberto Alameda. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/type42/t42objs.h b/vendor/freetype/src/type42/t42objs.h index 69a0fcd2fd0..15767f87163 100644 --- a/vendor/freetype/src/type42/t42objs.h +++ b/vendor/freetype/src/type42/t42objs.h @@ -4,7 +4,7 @@ * * Type 42 objects manager (specification). * - * Copyright (C) 2002-2025 by + * Copyright (C) 2002-2026 by * Roberto Alameda. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/type42/t42parse.c b/vendor/freetype/src/type42/t42parse.c index 5beab0b5a0d..d645be2a014 100644 --- a/vendor/freetype/src/type42/t42parse.c +++ b/vendor/freetype/src/type42/t42parse.c @@ -4,7 +4,7 @@ * * Type 42 font parser (body). * - * Copyright (C) 2002-2025 by + * Copyright (C) 2002-2026 by * Roberto Alameda. * * This file is part of the FreeType project, and may only be used, @@ -65,7 +65,7 @@ T1_FIELD_STRING( "FullName", full_name, 0 ) T1_FIELD_STRING( "FamilyName", family_name, 0 ) T1_FIELD_STRING( "Weight", weight, 0 ) - T1_FIELD_NUM ( "ItalicAngle", italic_angle, 0 ) + T1_FIELD_FIXED ( "ItalicAngle", italic_angle, 0 ) T1_FIELD_BOOL ( "isFixedPitch", is_fixed_pitch, 0 ) T1_FIELD_NUM ( "UnderlinePosition", underline_position, 0 ) T1_FIELD_NUM ( "UnderlineThickness", underline_thickness, 0 ) diff --git a/vendor/freetype/src/type42/t42parse.h b/vendor/freetype/src/type42/t42parse.h index f8d0a8b2652..4e61169a871 100644 --- a/vendor/freetype/src/type42/t42parse.h +++ b/vendor/freetype/src/type42/t42parse.h @@ -4,7 +4,7 @@ * * Type 42 font parser (specification). * - * Copyright (C) 2002-2025 by + * Copyright (C) 2002-2026 by * Roberto Alameda. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/type42/t42types.h b/vendor/freetype/src/type42/t42types.h index 72614b17990..b0bf9e8ecfe 100644 --- a/vendor/freetype/src/type42/t42types.h +++ b/vendor/freetype/src/type42/t42types.h @@ -4,7 +4,7 @@ * * Type 42 font data types (specification only). * - * Copyright (C) 2002-2025 by + * Copyright (C) 2002-2026 by * Roberto Alameda. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/type42/type42.c b/vendor/freetype/src/type42/type42.c index 82abeed7b83..da1e6214d32 100644 --- a/vendor/freetype/src/type42/type42.c +++ b/vendor/freetype/src/type42/type42.c @@ -4,7 +4,7 @@ * * FreeType Type 42 driver component. * - * Copyright (C) 2002-2025 by + * Copyright (C) 2002-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/winfonts/fnterrs.h b/vendor/freetype/src/winfonts/fnterrs.h index 9eae20aaec0..b2644edbf3a 100644 --- a/vendor/freetype/src/winfonts/fnterrs.h +++ b/vendor/freetype/src/winfonts/fnterrs.h @@ -4,7 +4,7 @@ * * Win FNT/FON error codes (specification only). * - * Copyright (C) 2001-2025 by + * Copyright (C) 2001-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/src/winfonts/module.mk b/vendor/freetype/src/winfonts/module.mk index 2d6f64a0a6e..d49dc9d3b2a 100644 --- a/vendor/freetype/src/winfonts/module.mk +++ b/vendor/freetype/src/winfonts/module.mk @@ -3,7 +3,7 @@ # -# Copyright (C) 1996-2025 by +# Copyright (C) 1996-2026 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/vendor/freetype/src/winfonts/rules.mk b/vendor/freetype/src/winfonts/rules.mk index 3df32829906..b65bb4c41af 100644 --- a/vendor/freetype/src/winfonts/rules.mk +++ b/vendor/freetype/src/winfonts/rules.mk @@ -3,7 +3,7 @@ # -# Copyright (C) 1996-2025 by +# Copyright (C) 1996-2026 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/vendor/freetype/src/winfonts/winfnt.c b/vendor/freetype/src/winfonts/winfnt.c index 2653a2ecc11..264185058ab 100644 --- a/vendor/freetype/src/winfonts/winfnt.c +++ b/vendor/freetype/src/winfonts/winfnt.c @@ -4,7 +4,7 @@ * * FreeType font driver for Windows FNT/FON files * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * Copyright 2003 Huw D M Davies for Codeweavers * Copyright 2007 Dmitry Timoshkov for Codeweavers diff --git a/vendor/freetype/src/winfonts/winfnt.h b/vendor/freetype/src/winfonts/winfnt.h index 56706450fa2..420e11e3c67 100644 --- a/vendor/freetype/src/winfonts/winfnt.h +++ b/vendor/freetype/src/winfonts/winfnt.h @@ -4,7 +4,7 @@ * * FreeType font driver for Windows FNT/FON files * - * Copyright (C) 1996-2025 by + * Copyright (C) 1996-2026 by * David Turner, Robert Wilhelm, and Werner Lemberg. * Copyright 2007 Dmitry Timoshkov for Codeweavers * From c1f6afd80b062d379c545de0eddd82f12c851dca Mon Sep 17 00:00:00 2001 From: lopsi <40902730+Lpsd@users.noreply.github.com> Date: Thu, 11 Jun 2026 13:50:41 +0100 Subject: [PATCH 2/3] Update readme/docs for freetype vendor --- vendor/freetype/ChangeLog | 6562 ---------------------------------- vendor/freetype/README | 21 +- vendor/freetype/docs/CHANGES | 5922 ++++++++++++++++++++++++++++++ 3 files changed, 5934 insertions(+), 6571 deletions(-) delete mode 100644 vendor/freetype/ChangeLog create mode 100644 vendor/freetype/docs/CHANGES diff --git a/vendor/freetype/ChangeLog b/vendor/freetype/ChangeLog deleted file mode 100644 index c9d45451a36..00000000000 --- a/vendor/freetype/ChangeLog +++ /dev/null @@ -1,6562 +0,0 @@ -2023-08-25 Werner Lemberg - - * Version 2.13.2 released. - ========================== - - Tag sources with `VER-2-13-2'. - - * docs/VERSION.TXT: Add entry for version 2.13.2. - * docs/CHANGES: Updated. - * docs/release, docs/README, builds/macs/README: Updated. - - * README, src/base/ftver.rc, builds/windows/vc2010/index.html, - builds/windows/visualc/index.html, builds/windows/visualce/index.html, - builds/wince/vc2005-ce/index.html, builds/wince/vc2008-ce/index.html, - docs/freetype-config.1: s/2.13.1/2.13.2/, s/2131/2132/. - - * include/freetype/freetype.h (FREETYPE_PATCH): Set to 2. - - * builds/unix/configure.raw (version_info): Set to 26:1:20. - * CMakeLists.txt (VERSION_PATCH): Set to 2. - -2023-08-25 Alexei Podtelezhnikov - - * src/base/ftcalc.c (FT_MulAddFix): Simplify 32-bit rounding. - -2023-08-25 Werner Lemberg - - Fix clang warnings. - - * src/cffload.c (cff_blend_doBlend): Fix type of `sum`. - * src/truetype/ttgxvar.c (tt_var_load_item_variation_store): Fix type of - `word_delta_count`. - -2023-08-24 Werner Lemberg - - * subprojects/*.wrap: Updated. - -2023-08-24 Hugh McMaster - - builds/unix/configure.raw: Use variable to specify minimum Python version. - -2023-08-24 Alexei Podtelezhnikov - - * builds/toplevel.mk: Simplify version extraction. - -2023-08-22 Alexei Podtelezhnikov - - [base] Improve the matrix degeneracy check. - - Also fixes #1251. - - * src/base/ftcalc.c (FT_Matrix_Check): To avoid overflow, scale by shifting. - * include/freetype/internal/ftcalc.h (FT_Matrix_Check): Update description. - -2023-08-22 Werner Lemberg - - builds/toplevel.mk: Don't use `\#` in functions. - - The behaviour changed in GNU make 4.3, where `#` (without the backslash) - would be necessary. Using a variable instead the code works with both older - and newer GNU make versions. - - Fixes #1252. - -2023-08-19 Hugh McMaster - - builds/freetype.mk: Invoke `mkdocs` as a Python module - - FreeType's `refdoc` target currently allows users to override the - default Python path, which is useful for testing and development. - - In contrast, `mkdocs` is invoked via the default Python path. - - Invoking `mkdocs` via Python's module syntax allows for greater - flexibility, although there is no change for the default use case. - -2023-08-17 Ben Wagner - - [base] Avoid UB with memcpy - - `FT_NEW_ARRAY(p, 0)` sets `p` to `NULL`. `FT_Stream_ReadAt` with a - memory based stream uses `FT_MEM_COPY` which is `memcpy` which specifies - that it is undefined behavior for either the `src` or `dst` to be - `NULL`. Instead of forcing all callers work around calling - `FT_Stream_Read` when `buffer == NULL && count == 0` do the check in - `FT_StreamRead`. This allows any call with `count == 0` to succesfully - read zero bytes without UB. - - * src/base/ftstream.c (FT_Stream_ReadAt): skip `FT_MEM_COPY` when - `count == 0`. (FT_Stream_TryRead): ditto - - Fixes: #1250 - -2023-08-12 Werner Lemberg - - Fix warnings in tracing messages for 32bit compilation. - - Since we now require C99, use `%td` for `ptrdiff_t` and `%zu` for `size_t`. - -2023-08-04 Ben Wagner - - Avoid overflow in COLR bounds checks. - - The values read into `base_glyphs_offset_v1` and `layer_offset_v1` may - be in the range 0xFFFFFFFD-0xFFFFFFFF. On systems where `unsigned long` - is 32 bits adding 4 to such values will wrap and pass bounds checks but - accessing values at such offsets will be out of bounds. - - On the other hand `table_size` has already been tested to be at least - `COLRV1_HEADER_SIZE` (34) so it is safe to subtract 4 from it. - - * src/sfnt/ttcolr.c (tt_face_load_colr): subtract 4 from `table_size` - instead of adding 4 to font data offsets in bounds checks - - Fixes: https://crbug.com/1469348 - -2023-08-02 Alexei Podtelezhnikov - - * src/base/ftobjs.c (open_face_from_buffer): Silence `maybe-uninitialized`. - - We never call this function without a `driver_name` (#1245). - -2023-07-29 Alexei Podtelezhnikov - - [truetype] Reduce v40 footprint. - - * src/truetype/ttgload.c (TT_HInt_Glyph, tt_loader_set_pp, - tt_loader_init): Refactor code. - -2023-07-27 Alexei Podtelezhnikov - - [truetype] Remove Infinality for good (remaining bits). - - * src/truetype/ttobjs.h: Remove remaining fields. - * src/truetype/ttinterp.c: Do not initialize them. - * include/freetype/internal/tttypes.h: Remove descriptions. - -2023-07-27 Alexei Podtelezhnikov - - [truetype] Remove Infinality for good. - - Remove everything `#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY`, - which was undefined for a while now. - - * include/freetype/internal/tttypes.h: Ditto. - * src/truetype/truetype.c: Ditto. - * src/truetype/ttdriver.c: Ditto. - * src/truetype/ttgload.c: Ditto. - * src/truetype/ttinterp.c: Ditto. - * src/truetype/ttinterp.h: Ditto. - * src/truetype/ttobjs.c: Ditto. - * src/truetype/ttsubpix.[ch]: Remove files. - * src/truetype/rules.mk: Don't mention "ttsubpix.c". - -2023-07-21 Jouk Jansen - - * vms_make.com: Provide separate library compiled with C++. - - Some types on OpenVMS x86_64 (for example, `long') have different sizes - depending on whether compiled with either C or C++. In particular, - X-Windows applications crash if linked with the C++ version. - - This patch makes `vms_make.com` create a second version of the FreeType - library compiled with C++ if OpenVMS is running on the x86_64 platform. - -2023-07-21 Jouk Jansen - - * vms_make.com: Fix typos. - -2023-07-21 Jouk Jansen - - * src/smooth/ftgrays.c (FT_SSE2): Fix definition for VMS. - -2023-07-19 Jouk Jansen - - vms_make.com: Make use of additional libraries optional. - - Check whether `.olb` files are present. - - Also check for the HarfBuzz library. - -2023-07-19 Jouk Jansen - - vms_make.com: Add `/warn=noinfo` to `CFLAGS`. - - This reduces enormously the informationals while compiling on x86_64 (i.e., - which `.h` file is inluded form where). - -2023-07-18 Ben Wagner - - [woff2] Clean up on large brotli expansion - - * src/sfnt/sfwoff2.c (woff2_open_font): set error and goto cleanup - - Fixes: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=60711 - -2023-07-16 Werner Lemberg - - [woff2] Avoid allocation bomb. - - This is a fix for commit 85167dbd5, reported as - - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=60615 - - * src/sfnt/sfwoff2.c (MAX_SFNT_SIZE): New macro. - (woff2_open_font): Use it to limit the maximum size of an uncompressed WOFF2 - font. - -2023-07-14 Werner Lemberg - - [cff] Fix compiler warning. - - * src/cff/cffparse.c, src/cff/cffparse.h: Make `cff_parse_fixed` a local - function. - -2023-07-14 Ben Wagner - - [woff2] Remove sfnt size guess check - - In WOFF the `totalSfntSize` must be correct, however in WOFF2 this value - is now just a hint and a conforming implementation must not reject - otherwise valid data if the `totalSfntSize` turns out not to be exact. - - * src/sfnt/sfwoff2.c (woff2_open_font): remove check that uncompressed - woff2 data would fit in the sfnt size guess. - - Fixes: #1235 - -2023-07-14 Skef Iterum - - [cff] Make blend operator work with floats in private dicts. - - The CFF2 blend operator takes N default values and corresponding - sets of deltas and pushes N values specific to a designspace - location. CFF has a floating point numeric type and the FreeType - blending code was not converting those into its internal 16.16 - Fixed type format. - - Fixes #1243. - - * src/cff/cffparse.c (do_fixed): Handle floating point numbers. - Also fix scaling overflow check for integer-to-fixed conversion. - - * src/cff/cffload.c (cff_blend_doBlend): Updated. - -2023-07-08 Hin-Tak Leung - - * src/truetype/ttgload.c (TT_Hint_Glyph): More mostly cosmetic update. - - This is a follow-up to commit 49c74ac02, which creates a new local variable - "exec = loader->exec", and shortening a lot of "loader->exec". This commit - does two more such changes missed in that first commit. - -2023-07-06 Hugh McMaster - - [gzip] Don't compile internal zlib development files when using system zlib. - - `src/gzip/rules.mk` compiles the internal zlib sources even when using the - zlib development files provided by a host system. If the internal zlib - development files are not present, FreeType fails to build from source. - - This patch ensures the internal zlib development files are only - prerequisites when not using zlib development files on a host system. - - * src/gzip/rules.mk (GZIP_DRV_SRCS): Define conditionally. - -2023-06-24 Werner Lemberg - - * Version 2.13.1 released. - ========================== - - Tag sources with `VER-2-13-1'. - - * docs/VERSION.TXT: Add entry for version 2.13.1. - * docs/CHANGES: Updated. - * docs/release, docs/README, builds/macs/README: Updated. - - * README, src/base/ftver.rc, builds/windows/vc2010/index.html, - builds/windows/visualc/index.html, builds/windows/visualce/index.html, - builds/wince/vc2005-ce/index.html, builds/wince/vc2008-ce/index.html, - docs/freetype-config.1: s/2.13.0/2.13/1/, s/2130/2131/. - - * include/freetype/freetype.h (FREETYPE_PATCH): Set to 1. - - * builds/unix/configure.raw (version_info): Set to 26:0:20. - * CMakeLists.txt (VERSION_PATCH): Set to 1. - - * subprojects/libpng.wrap, subprojects/zlib.wrap, subprojects/dlg: Updated. - -2023-06-09 suzuki toshiya - - Comment fixes. - -2023-06-09 Werner Lemberg - - [sdf] Correct handling of empty glyphs. - - This is a refinement of commit 7b3ebb9. - - * src/sdf/ftsdfrend.c (ft_sdf_render): Goto 'Exit' instead of directly - returning. - (fd_bsdf_render): Ditto, also taking care of setting `FT_GLYPH_OWN_BITMAP` - correctly. - -2023-06-05 Ben Wagner - - Mark FT_Renderer_Class::raster_class as pointer to const - - The `FT_DEFINE_RASTER_FUNCS` macro declares a `const FT_Raster_Funcs`. - The address of the definition is taken and assigned to - `FT_Renderer_Class::raster_class` which is currently `FT_Raster_Funcs*`. - Until recently the `const` was cast away and with the removal of the - cast there are now warnings about dropping this `const`. Instead of - adding back the casts, make `FT_Renderer_Class::raster_class` a pointer - to const, as is done with pointers in other interfaces. - - * include/freetype/ftrender.h (FT_Renderer_Class_): mark `raster_class` - as const. - -2023-06-03 Ben Wagner - - Fix some `FT_Fixed` vs. `FT_Long` confusion. - - `FT_Fixed` and `FT_Long` are both typedef'ed to be `signed long`. However, - `FT_Fixed` implies that the lower 16 bits are being used to express - fractional values and so these two types should not be confused. - - * include/freetype/internal/services/svmm.h (FT_Set_MM_Blend_Func): Use - `FT_Fixed` for `coords`. Users are passing `FT_Fixed` and implementations - are taking `FT_Fixed`. - (FT_Get_MM_Blend_Func): Ditto. - - * src/autofit/afcjk.c (af_cjk_metrics_check_digits): Use `FT_Long` for - `advance` and `old_advance`. `advance`'s address is passed as `FT_Long*` to - `af_shaper_get_elem`, which writes the advance in em units (not fixed). The - exact value is not important here as it is only compared to check whether it - has changed. - - * src/autofit/aflatin.c (af_latin_metrics_check_digits): Ditto. - -2023-06-03 Ben Wagner - - */*: Remove many function pointer casts. - - In C it is undefined behavior to call a function through a function pointer - of a different type. This is now detected by the Control Flow Integrity - Sanitizer. All known issues have already been fixed. Prevent any - accidental re-introduction by removing function pointer casts when defining - services. The services will call the service functions through the function - pointers on the service. As a result the functions must have the same type - so there should be no need to cast. Removing the casts allows compilers to - warn about assignment to an incompatible function pointer type. - -2023-06-03 Werner Lemberg - - Minor formatting. - -2023-05-23 Werner Lemberg - - Replace `sprintf` with `snprintf`. - - Fixes #1233. - - * include/freetype/config/ftstdlib.h (ft_sprintf): Replace with... - (ft_snprintf): This new macro. - - * src/autofit/afhints.c (af_print_idx): Add argument to pass the buffer - size. - (af_glyph_hints_dump_points, af_glyph_hints_dump_segments, - af_glyph_hints_dump_edges): Updated. - - * src/bdf/bdflib.c (BUFSIZE): New macro. - (bdf_parse_properties_, bdf_parse_start_): Use `ft_snprintf`. - - * src/tools/ftrandom/ftrandom.c (do_test): Use `snprintf`. - -2023-05-23 Werner Lemberg - - docs/DEBUG: Formatting. - -2023-05-20 suzuki toshiya - - [doc] Type1 GX (sfnt-wrapped Type1) is not supported. - - * docs/formats.txt: Clarify the reference of Type1 GX, - and state that this format is not supported. This - is because the content `TYP1' table is not exactly same - with the Type1 font format specification; no eexec - encryption is used. For detail and concrete examples, - see the analysis on: - - https://gitlab.freedesktop.org/freetype/freetype/-/issues/1231 - -2023-05-19 Craig White - - Add missing end quote of a string in the example code of FT_Trace_Set_Level - -2023-05-19 Seigo Nonaka - - [truetype] Reduce heap allocation of `deltaSet` variation data. - - `deltaSet` is an array of packed integers that can be 32 bits, 16 bits, or - 8 bits. Before this change, these values were unpacked to 32-bit integers. - However, this can cause big heap allocations, e.g., around 500 KByte for - 'NotoSansCJK'. To reduce this amount, store the packed integers and unpack - them just before passing to the calculation. At calculation time, due to - the variable length of region indices, temporary heap allocations are - necessary. This heap allocation is not negligible and visible in `ftbench` - results. So, use stack-allocated arrays for short array calculations. - - Fixes #1230. - - * include/freetype/internal/ftmmtypes.h (GX_ItemVarDataRec): New fields - `wordDeltaCount` and `longWords`. - - * src/truetype/ttgxvar.c (tt_var_load_item_variation_store): Load packed - data. - (tt_var_get_item_delta): Unpack data before applying. - -2023-05-17 Jouk Jansen - - vms_make.com: Create shared executable for x86 version of OpenVMS. - -2023-05-15 Werner Lemberg - - Add new load flag `FT_LOAD_NO_SVG`. - - Modern color fonts often contain both an 'SVG' and 'COLR' table. FreeType - always preferred 'SVG' over 'COLR' (this was a design decision), however, - this might not be the right choice for the user. The new flags makes - FreeType ignore the 'SVG' table while loading a glyph. - - Fixes #1229. - - * include/freetype/freetype.h (FT_LOAD_NO_SVG): New macro. - - * src/base/ftobjs.c (FT_Load_Glyph), src/cff/cffgload.c (cff_slot_load), - src/truetype/ttgload.c (TT_Load_Glyph): Use it. - -2023-05-13 Werner Lemberg - - .mailmap: Updated. - -2023-05-13 Alexei Podtelezhnikov - - [cache] Merge functions. - - * src/cache/ftccache.c (FTC_Cache_Init): Merge into... - (ftc_cache_done): ... this function, with unnecessary checks removed. - -2023-05-13 Alexei Podtelezhnikov - - [cache] Minor casting and cosmetic updates. - - * src/cache/ftcglyph.c (ftc_gcache_{init,done}): Remove casting. - (FTC_GCache_Lookup): Cosmetic variable renaming. - * src/cache/ftcsbits.c (ftc_snode_compare): Formatting. - -2023-05-12 Werner Lemberg - - * include/freetype/ftcache.h: Typo, punctuation. - -2023-05-12 Alexei Podtelezhnikov - - * include/freetype/ftcache.h: Formatted and updated. - -2023-05-12 suzuki toshiya - - * include/freetype/internal/t1types.h: Fix the indentation. - -2023-05-11 Alexei Podtelezhnikov - - [cache] Revise the dynamic hash table accounting. - - Instead of counting entries relative to the middle of the hash table, - this switches to the absolute counter with the full index range mask. - As a result, some calculations become a bit simpler. The cache resizing - logic stays largely the same. - - * src/cache/ftccache.h (FTC_NODE_TOP_FOR_HASH): Revised with new counter. - * src/cache/ftccache.c (ftc_get_top_node_for_hash): Ditto. - (ftc_cache_resize): Simplify reallocations and stop their zeroing. - (ftc_cache_init): Stop over-allocating but keep zeroing initially. - (FTC_Cache_Clear, FTC_Cache_RemoveFaceID): Updated accordingly. - -2023-05-11 suzuki toshiya - - [t1cid] Set FT_FACE_FLAG_CID_KEYED. - - * cidobjs.c (cid_face_init): Set FT_FACE_FLAG_CID_KEYED. - - * cidriver.c (cid_get_is_cid): Comment about the case that - is_cid cannot guarantee the glyph collection specification. - -2023-05-09 Jouk Jansen - - * src/smooth/ftgrays.c (FT_SSE2): Don't define for VMS. - -2023-05-08 Werner Lemberg - - * src/cff/cffdrivr.c (cff_glyph_load): Fix guard for `size`. - - This was forgotten to change in commit 2b54eba36b (in May 2004). - - Reported as - - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=58739 - -2023-05-08 Werner Lemberg - - Minor compiler warning fixes. - - * src/autofit/afcjk.c (af_cjk_get_standard_widths), src/autofit/aflatin.c - (af_latin_get_standard_widths): Use `FT_CALLBACK_DEF`. - - * src/cff/cffparse.c (cff_parser_run): Initialize and fix allocation of `q`. - -2023-05-08 Werner Lemberg - - * src/psaux/t1cmap.c: Signature fixes. - -2023-05-08 Werner Lemberg - - * src/bzip2/ftbzip2.c: Signature fixes. - -2023-05-08 Werner Lemberg - - [cache] Signature fixes. - - * src/cache/ftcglyph.c, src/cache/ftcglyph.h (FTC_GNode_Compare): Remove - redundant function. It is equivalent to `ftc_gnode_compare` and becomes - completely meaningless with fixed signatures. - Update all callers. - - * src/cache/ftcsbits.c, src/cache/ftcsbits.h (FTC_SNode_Compare): Remove - redundant function. It is equivalent to `ftc_snode_compare` and becomes - completely meaningless with fixed signatures. - Update all callers. - -2023-05-07 Werner Lemberg - - [sdf] Signature fixes. - -2023-05-07 Werner Lemberg - - * src/svg/ftsvg.c: Signature fixes. - -2023-05-07 Werner Lemberg - - [raster] Signature fixes. - -2023-05-07 Werner Lemberg - - [smooth] Signature fixes. - -2023-05-07 Werner Lemberg - - [pshinter] Signature fixes. - - * src/pshinter/pshrec.c (t1_hints_close, t1_hints_apply): New wrapper - functions. - (t1_hints_funcs_init): Use them. - (t2_hints_close, t2_hints_apply): New wrapper functions. - (t2_hints_funcs_init): Use them. - -2023-05-07 Werner Lemberg - - [autofit] Signature fixes. - -2023-05-07 Werner Lemberg - - * src/sfnt/ttcmap: Signature fixes. - -2023-05-07 Werner Lemberg - - * src/pcf/pcfdrivr.c: Signature fix. - -2023-05-07 Werner Lemberg - - * src/winfonts/winfnt.c: Signature fixes. - -2023-05-07 Werner Lemberg - - * src/type42/t42parse.c: Signature fixes. - -2023-05-07 Werner Lemberg - - [pfr] Signature fixes. - -2023-05-07 Werner Lemberg - - * src/cid/cidload.c: Signature fixes. - -2023-05-07 Werner Lemberg - - * src/cff/cffcmap.c: Signature fixes. - -2023-05-07 Werner Lemberg - - * src/type1/t1load.c: Signature fixes. - -2023-05-07 Werner Lemberg - - [truetype] Signature fixes. - -2023-05-07 Werner Lemberg - - [base] Signature fixes. - -2023-05-07 Werner Lemberg - - * src/type42/t42drivr.c: Clean up interface. - - Ensure that all driver functions use the signature of the service or driver. - This avoids pointer mismatches, which are technically undefined behaviour. - Recent compilers are more picky in catching them as part of Control Flow - Integrity tests. - -2023-05-07 Werner Lemberg - - * src/type1/*: Clean up interface. - - Ensure that all driver functions use the signature of the service or driver. - This avoids pointer mismatches, which are technically undefined behaviour. - Recent compilers are more picky in catching them as part of Control Flow - Integrity tests. - -2023-05-07 Werner Lemberg - - * src/truetype/*: Clean up interface. - - Ensure that all driver functions use the signature of the service or driver. - This avoids pointer mismatches, which are technically undefined behaviour. - Recent compilers are more picky in catching them as part of Control Flow - Integrity tests. - -2023-05-07 Werner Lemberg - - * src/sfnt/sfdriver.c, src/sfnt/ttbdf.c: Clean up interface. - - Ensure that all driver functions use the signature of the service or driver. - This avoids pointer mismatches, which are technically undefined behaviour. - Recent compilers are more picky in catching them as part of Control Flow - Integrity tests. - - * src/sfnt/sfdriver.c (sfnt_load_table): New wrapper function. - (sfnt_service_sfnt_table): Use it. - -2023-05-07 Werner Lemberg - - * src/psnames/psmodule.c: Use `FT_CALLBACK_DEF`. - -2023-05-07 Werner Lemberg - - * src/pfr/pfrdrivr.c: face -> pfrface, pfrface -> face. - -2023-05-07 Werner Lemberg - - * src/pcf/pcfdrivr.c: Clean up interface. - - Ensure that all driver functions use the signature of the service or driver. - This avoids pointer mismatches, which are technically undefined behaviour. - Recent compilers are more picky in catching them as part of Control Flow - Integrity tests. - -2023-05-07 Werner Lemberg - - * src/cid/cidriver.c: Clean up interface. - - Ensure that all driver functions use the signature of the service or driver. - This avoids pointer mismatches, which are technically undefined behaviour. - Recent compilers are more picky in catching them as part of Control Flow - Integrity tests. - -2023-05-07 Werner Lemberg - - * src/bdf/bdfdrivr.c: Clean up interface. - - Ensure that all driver functions use the signature of the service or driver. - This avoids pointer mismatches, which are technically undefined behaviour. - Recent compilers are more picky in catching them as part of Control Flow - Integrity tests. - -2023-05-07 Werner Lemberg - - * src/cff/*: Clean up interface. - - Ensure that all driver functions use the signature of the service or driver. - This avoids pointer mismatches, which are technically undefined behaviour. - Recent compilers are more picky in catching them as part of Control Flow - Integrity tests. - -2023-05-06 Werner Lemberg - - [truetype] Fix style name handling for variation fonts. - - * include/freetype/internal/tttypes.h (TT_FaceRec): New field - `non_var_style_name`. - - * src/sfnt/sfobjs.c (sfnt_load_face): Initialize `non_var_style_name`. - (sfnt_done_face): Free `non_var_style_name`. - - * src/truetype/ttgxvar.c (TT_Set_Named_Instance): Restore non-VF style name - if switching back to non-VF mode. - -2023-05-06 Werner Lemberg - - [truetype] Fix PostScript name handling for variation fonts. - - A variation font's PostScript name of a named instance is usually different - from the PostScript name of an unnamed instance. However, if a change - between a named instance and an unnamed instance with exactly the same - design axis values happened, it was possible that the PostScript name wasn't - correctly updated. - - This commit reorganizes the code to handle this issue within the top-level - API functions, using a new service to trigger recomputation of the - PostScript name. - - * include/freetype/internal/services/svmm.h (FT_Construct_PS_Name_Func): New - typedef. - (FT_Service_MultiMasters): New field `construct_ps_name`. - (FT_DEFINE_SERVICE_MULTIMASTERSREC): Updated. - - * src/base/ftmm.c (FT_Set_Var_Design_Coordinates, - FT_Set_MM_Blend_Coordinates, FT_Set_Var_Blend_Coordinates): Call - `mm->construct_ps_name` to handle `postscript_name`. - (FT_Set_Named_Instance): Call `mm->construct_ps_name` to handle - `postscript_name`. - Use shortcut. - * src/cff/cffdrivr.c (cff_construct_ps_name): New function. - (cff_service_multi_masters): Updated. - - * src/truetype/ttgxvar.c (tt_set_mm_blend): Don't handle `postscript_name`. - (TT_Set_MM_Blend): Simplify. - (TT_Set_Named_Instance): Return -1 if axis values haven't changed. - Don't set `face_index`. - (tt_construct_ps_name): New function. - - * src/truetype/ttgxvar.h: Updated. - - * src/truetype/ttdriver.c (tt_service_gx_multi_masters): Updated. - - * src/type1/t1driver.c (t1_service_multi_masters): Updated. - - * src/type1/t1load.c (T1_Set_MM_Blend): Simplify. - -2023-05-06 Werner Lemberg - - * include/freetype/internal/services/svmm.h: Minor changes. - -2023-05-06 Werner Lemberg - - [truetype] Fix deactivation of variation font handling. - - According to the documentation, the functions `FT_Set_Named_Instance`, - `FT_Set_MM_Design_Coordinates`, `FT_Set_Var_Design_Coordinates`, and - `FT_Set_Var_Blend_Coordinates` can unset the `FT_FACE_FLAG_VARIATION` flag. - (The same is true for `FT_Set_MM_WeightVector` but this information was - accidentally omitted from the documentation.) - - However, if a call of these functions didn't change the axis values this - could fail because internal shortcuts exited too early. - - This commit reorganizes the code to handle `FT_FACE_FLAG_VARIATION` in the - top-level API functions, also taking care of the issue at hand. - - * src/base/ftmm.c (FT_Set_MM_Design_Coordinates, FT_Set_MM_WeightVector, - FT_Set_Var_Design_Coordinates, FT_Set_MM_Blend_Coordinates, - FT_Set_Var_Blend_Coordinates): Handle `FT_FACE_FLAG_VARIATION`. - - * src/truetype/ttgxvar.c (TT_Set_MM_Blend, TT_Set_Var_Design, - TT_Set_Named_Instance) Don't handle `FT_FACE_FLAG_VARIATION`. - - * src/type1/t1load.c (T1_Set_MM_Blend, T1_Set_MM_WeightVector, - T1_Set_MM_Design): Ditto. - - * src/cff/cffobjs.c (cff_face_init): Use `FT_Set_Named_Instance` instead of - low-level functions. - - * src/truetype/ttobjs.c (tt_face_init): Ditto. - -2023-05-06 Werner Lemberg - - s/set_instance/set_named_instance/ - - * include/freetype/internal/services/svmm.h (FT_Set_Instance_Func): Renamed - to... - (FT_Set_Named_Instance_Func): ...this. - (FT_Service_MultiMasters): Rename `set_instance` to `set_named_instance`. - (FT_DEFINE_SERVICE_MULTIMASTERSREC): Updated. - - * src/base/ftmm.c (FT_Set_Named_Instance): Updated. - - * src/cff/cffdrivr.c (cff_set_instance): Renamed to... - (cff_set_named_instance): ...this. - (cff_service_multi_masters): Updated. - * src/cff/cffobjs.c (cff_face_init): Updated. - - * src/truetype/ttdriver.c (tt_service_gx_multi_masters): Updated. - - * src/type1/t1driver.c (t1_service_multi_masters): Updated. - -2023-05-06 Werner Lemberg - - New Variation Font function `FT_Get_Default_Named_Instance`. - - * include/freetype/ftmm.h, src/base/ftmm.c (FT_Get_Default_Named_Instance): - New function. - - * include/freetype/internal/services/svmm.h - (FT_Get_Default_Named_Instance_Func): New typedef. - (FT_Service_MultiMasters): New field `get_default_named_instance`. - (FT_DEFINE_SERVICE_MULTIMASTERSREC): Updated. - - * include/freetype/internal/tttypes.h (TT_Face): New field - `var_default_named_instance`. - - * src/sfnt/sfobjc.s (sfnt_init_face): Initialize - `var_default_named_instance`. - - * src/cff/cffdrivr.c (cff_get_default_named_instance): New function. - (cff_service_multi_masters): Updated. - - * src/truetype/ttgxvar.c (TT_Get_MM_Var): Initialize - `var_default_named_instance`. - (TT_Get_Default_Named_Instance): New function. - * src/truetype/ttgxvar.h: Updated. - * src/truetype/ttdriver.c (tt_service_gx_multi_masters): Updated. - - * src/type1/t1driver.c (t1_service_multi_masters): Updated. - - * docs/CHANGES: Updated. - -2023-05-06 Werner Lemberg - - [cid] Improve tracing messages; formatting. - -2023-05-04 Alexei Podtelezhnikov - - * src/cache/ftccache.c (ftc_node_hash_unlink): Minor. - -2023-05-04 Alexei Podtelezhnikov - - * src/cache/ftcmru.c (FTC_MruList_RemoveSelection): Purge backwards. - -2023-05-04 Alexei Podtelezhnikov - - [cache] Revise list cleansing. - - * src/cache/ftcmru.c (FTC_MruList_RemoveSelection): Use one loop to - do it. - * src/cache/ftcmanag.c (FTC_Manager_Compress, FTC_Manager_FlushN): - Streamline loops. - -2023-05-03 suzuki toshiya - - [t1cid] Improve cid_get_cid_from_glyph_index(). - - Update cid_get_cid_from_glyph_index() to - return an error and CID=0 in the case that - the specified glyph index points to an invalid - entry. - - cidgload.h (cid_compute_fd_and_offsets): - Declare new helper function to set the - fd_select and 2 offsets to access the glyph - description data. - - cidgload.c (cid_compute_fd_and_offsets): - Move the part loading fd_select and 2 offsets - from cid_load_glyph() to here. If the loaded - parameters are broken, return the Invalid_Offset - error. This function does not load the glyph - data, only fills these parameters. - - (cid_load_glyph): Use new helper function in above. - - cidriver.c (cid_get_cid_from_glyph_index): - Check whether the requested glyph index points - to a valid entry, by calling cid_compute_fd_and_offsets(). - If it is valid, fill the cid by the glyph - index (=CID). If it is invalid, return an - error and fill the cid by 0. - -2023-04-30 Werner Lemberg - - API documentation: Re-organize chapters and sections - - * Split the very long 'Base Interface' section into smaller sections. - * Split the 'Core API' chapter into two chapters. - * Remove single enumeration values from `@order` fields since they have no - effect. - -2023-04-29 Alexei Podtelezhnikov - - * src/sfnt/pngshim.c (Load_SBit_Png): Remove FALL_THROUGH warning. - -2023-04-28 Werner Lemberg - - * src/sfnt/ttload.c (tt_face_load_font_dir): Add another guard. - - Reject 'OTTO' fonts with no valid tables. - -2023-04-28 Werner Lemberg - - * src/cff/cffdrivr/c (cff_get_ps_name): Avoid unnecessary crash. - - The situation can happen if `FT_New_Face` (or one of its siblings) is called - with a negative index to get the number of contained faces, followed - immediately by a call to `FT_Get_Postscript_Name`. While this is not a valid - use of the FreeType library there is no need for a crash. - - Fixes #1219. - -2023-04-28 Werner Lemberg - - * src/cff/cffdrivr.c (cff_ps_get_font_info): Reject 'CFF2' format. - -2023-04-28 Werner Lemberg - - * src/cid/cidgload.c (cid_load_glyph): Fix compiler warnings. - -2023-04-28 Werner Lemberg - - Minor documentation updates. - -2023-04-27 Werner Lemberg - - * src/ttgxvar.c: Minor changes. - - (TT_Get_MM_Var): Improve tracing messages. - (tt_set_mm_blend): Minor speed-up. - -2023-04-27 Werner Lemberg - - s/this is,/that is,/ - -2023-04-27 Alexei Podtelezhnikov - - [bdf] Clean up the atom property parsing. - - * src/bdflib.c (bdf_is_atom_): Refactor code with fewer checks. - (bdf_list_join_): Return NULL. - (bdf_add_comment_): Use const argument. - (bdf_get_property): Ditto, ditto, make the function static. - * src/bdf.h (bdf_get_property): Remove prototype. - -2023-04-25 Werner Lemberg - - Improve/add source comments and documentation. - -2023-04-25 Werner Lemberg - - [sfnt] Fix handling of PS names for Variation Fonts. - - * src/sfnt/sfdriver.c (get_win_string, get_apple_string): Continue - construction of string if an invalid character is encountered. - - Fixes #1218. - -2023-04-24 suzuki toshiya - - [t1cid] Change the trace messages of the charstrings retrieval errors. - - The t1cid driver catches 3 types of errors in - the charstrings retrieval; - A) The invalid FD number, there are 2 subtypes; - A-1) FD number is the maximum number fitting to FDBytes. - A-2) FD number is greater than num_dicts. - B) Declared length is overrunning. - C) Declared length is invalid (its end is before its head). - - Considering that some widely distributed fonts - (e.g., "CJKV" book by O'Reilly) have A-1 errors - in the unimplemented glyphs, the trace level for - A-1 is calmed to level 1. - - The errors A-2, B, and C would be irregular; - their trace levels are kept at level 0, but - the updated trace messages include the CID number. - -2023-04-24 suzuki toshiya - - [truetype] Fix `make multi'. - - * src/truetype/ttgxvar.c: Include freetype/internal/services/svmetric.h - for the FT_Service_MetricsVariations type definition. - -2023-04-19 Ben Wagner - - [services] FT_Size_Reset_Func to return FT_Error - - The `MetricsVariations` `FT_Size_Reset_Func` is currently defined to - return `void`, but the implementations return `FT_Error`. Even though - the pointers passed will be the same at runtime, calling a function - through a pointer of a different type from the original function pointer - type is undefined behavior. This may be caught at runtime by Control - Flow Integrity with something like clang's `cfi-icall`. - - Issue: https://crbug.com/1433651 - - * include/freetype/internal/services/svmetric.h (FT_Size_Reset_Func): - return `FT_Error` instead of `void`. - -2023-04-17 Ben Wagner - - [truetype] tt_size_reset_height to take FT_Size - - The `MetricsVariations` `FT_Size_Reset_Func` is defined to take an - `FT_Size`. Because `tt_size_reset_height` is to be used as such a - function, it must also take an `FT_Size` instead of a `TT_Size`. Even - though the pointers passed will be the same at runtime, calling a - function through a pointer of a different type from the original - function pointer type is undefined behavior. This may be caught at - runtime by Control Flow Integrity with something like clang's - `cfi-icall`. - - Issue: https://crbug.com/1433651 - - * src/truetype/ttobjs.h (tt_size_reset_height): take `FT_Size` - - * src/truetype/ttobjs.c (tt_size_reset_height): take `FT_Size` and - update documentation - -2023-04-13 Werner Lemberg - - * src/truetype/ttinterp.c: Remove outdated comments. - -2023-04-11 Ben Wagner - - [sfnt, truetype] Add `size_reset` to `MetricsVariations`. - - This is a generalization of commit - - ``` - commit e6699596af5c5d6f0ae0ea06e19df87dce088df8 - Author: Werner Lemberg - Date: Thu Feb 2 11:38:04 2017 +0100 - - [truetype] Fix MVAR post-action handling. - ``` - - It is also possible for plain `CFF ` style fonts to contain an `fvar` and - `MVAR` table and use `cff_metrics_adjust`. `tt_size_reset` should only be - called with `TT_Size` and never with `CFF_Size`. - - Allow the "metrics-variations" service to specify the correct function (if - any) to reset `FT_Size`s after adjusting metrics. - - * src/truetype/ttobjs.c (tt_size_reset): Split off some functionality - into... - (tt_size_reset_height): ... this new function. - - * src/truetype/ttdriver.c (tt_service_metrics_variations): Add - `size_reset`. - (tt_size_select, tt_size_request): Updated. - - * src/truetype/ttobjs.h: Updated. - - * include/freetype/internal/services/svmetric.h (MetricsVariations): Add - `size_reset`. - (FT_DEFINE_SERVICE_METRICSVARIATIONSREC): Updated. - - * include/freetype/internal/tttypes.h (TT_FaceRec_): Rename `var` to - `tt_var` and add `face_var`. - - * src/cff/cffdrivr.c (cff_service_metrics_variations): Add `size_reset`. - (cff_hadvance_adjust, cff_metrics_adjust): Updated. - - * src/cff/cffobjs.c (cff_face_init): Use `face_var`. - - * src/sfnt/sfobjs.c (sfnt_init_face): Initialize `face_var`. - - * src/sfnt/ttmtx.c (tt_face_get_metrics): Use `tt_var`. - - * src/truetype/ttgxvar.c (tt_size_reset_iterator): Renamed to... - (ft_size_reset_iterator): ... this new function. - Call `size_reset`. - (tt_apply_mvar): Pass `size_reset` to `ft_size_reset_iterator`. - - Fixes #1211 - -2023-04-10 Alexei Podtelezhnikov - - * src/cff/cffcmap.c (cff_cmap_encoding_char_next): Abbreviate. - -2023-04-10 Alexei Podtelezhnikov - - Align `char_next` return types. - - This is mostly cosmetic because FT_UInt and FT_UInt32 are likely identical. - - * src/sfnt/ttcmap.c, src/cff/cffcmap.c, src/psaux/t1cmap.c, - src/psnames/psmodule.c, include/freetype/internal/service/svpcsmap.h, - src/pfr/pfrcmap.c, src/winfonts/winfnt.c (*_char_next): return FT_UInt. - -2023-04-09 Alexei Podtelezhnikov - - [sfnt] Clean up CMAP{4,12,13} handling. - - This moves the charcode overflow checks upstream and turns some - while-loops into the do-while ones to avoid the uninitialized warnings. - This should slightly reduce the number of checks and jumps. - - * src/sfnt/ttcmap.c (tt_cmap{4,12,13}_next, - tt_cmap{4.12.13}_char_map_linear): Remove the charcode overflow check. - (tt_cmap{4,12,13}_char_map_binary): Ditto and use do-while. - (tt_cmap{12,13}_char_next): Add the overflow check. - -2023-04-03 Alexei Podtelezhnikov - - * src/sfnt/ttpost.c (load_format_25): Do not abort frame reading. - -2023-04-03 Alexei Podtelezhnikov - - * src/sfnt/ttpost.c (load_format_*): Streamline frame reading. - -2023-04-02 Alexei Podtelezhnikov - - * src/sfnt/ttpost.c: Formatting and comments. - -2023-04-02 Alexei Podtelezhnikov - - [sfnt] Consolidate POST version 2.0 and 2.5 (pt 2). - - * src/sfnt/ttpost.c (load_format_20, load_format_25): Update arguments - and move shared calls and checks upstream to... - (load_post_names): ... this function. - (tt_face_free_ps_names, tt_face_get_ps_name): Updated. - -2023-04-02 Alexei Podtelezhnikov - - [sfnt] Consolidate POST version 2.0 and 2.5 (pt 1). - - The deprecated POST version 2.5 can be handled using the data - structures of version 2.0. The goal is to reduce the footprint. - - * include/freetype/internal/tttypes.h (TT_Post_Names): Absorb and... - (TT_Post_20, TT_Post_25): ... remove these structures. - src/sfnt/ttpost.c (load_post_names, tt_face_get_ps_name, - tt_face_free_ps_names, load_format_20): Updated accordingly. - (load_format_25): ditto and convert offsets to glyph indices. - -2023-04-01 Alexei Podtelezhnikov - - [sfnt] Miscellaneous POST clean-ups. - - * src/sfnt/ttpost.c (load_format_20): Decrease casts. - (load_format_25): Check the table length and impose a theoretical - glyph number limit usable with 8-bit offset. Decrease casts. - (load_post_names): Pass the mapping data length without 2 bytes. - -2023-03-30 Alexei Podtelezhnikov - - * src/sfnt/ttpost.c (load_format_20): Simplify comutations. - -2023-03-29 Alexei Podtelezhnikov - - [sfnt] Streamline POST format 2.0 handing (cont'd). - - * src/sfnt/ttpost.c (load_format_20): Co-allocate the string data and - their pointers, which makes it easier to handle and free them. - (tt_face_free_ps_names): Updated. - * include/freetype/internal/tttypes.h (TT_Post_20): Update type. - -2023-03-20 Alexei Podtelezhnikov - - [cff] Simplify `t2_strings` management in the old engine. - - * src/cff/cffparse.c (cff_parser_run): Allocate the charstring buffers - and the list nodes together so that they can be freed at once. - (finalize_t2_strings): Removed as no longer needed. - (cff_parser_done): Updated. - -2023-03-19 Alexei Podtelezhnikov - - [cff] Rework the stream limit checks. - - The old stream limit checks, before 6986ddac1ece, were good but - pointless for the crafted t2_strings. Checking limits there is - not necessary as they are created to hold all data. By using two - conditions, we can detect the actual crossing of the stream boundary - as appropriate for the stream pointer only. The t2_strings parsing - will not be triggering these checks. - - * src/cff/cffparse.c (cff_parser_within_limits): Removed. - (cff_parse_real, cff_parse_integer): Redesign the stream limit check. - (cff_parse_num, do fixed, cff_parse_fixed_dynamic): Update callers. - -2023-03-18 Alexei Podtelezhnikov - - * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Use for-loop. - - Even though we never call `TT_Load_Simple_Glyph` with zero contours, - out of abundance of precaution, let's handle this case properly. - -2023-03-18 Alexei Podtelezhnikov - - [truetype] Clean up zeroing and local variables. - - * src/truetype/ttgload.c (TT_Process_Simple_Glyph): Avoid zeroing. - (load_truetype_glyph): Avoid zeroing and clean local variables. - -2023-03-16 Werner Lemberg - - * include/freetype/ftsystem.h (FT_Stream_IoFunc): Improve documentation. - - Fixes #1208. - -2023-03-16 Alexei Podtelezhnikov - - * src/base/ftsynth.c (FT_GlyphSlot_AdjustWeight): New API. - -2023-03-16 Alexei Podtelezhnikov - - [truetype] Clean up glyph loading. - - * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Clean space checking. - (TT_Hint_Glyph): Don't copy the outline structure. - (TT_Process_Simple_Glyph): Cosmetic update. - -2023-03-15 Alexei Podtelezhnikov - - * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Clean up. - -2023-03-13 Werner Lemberg - - builds/vms/apinames_vms.bash: Fix `unzip` artifact - - The problem occured when unpacking a zip file created on OpenVMS on Linux. - While OpenVMS knows many different file formats, Unix only knows stream-LF - and binary. In principle `zip` on Linux should have translated the file to - stream-LF but failed to do so. That caused the file to incorrectly contain - only one line with control-characters. - -2023-03-11 Alexei Podtelezhnikov - - [truetype] Fix recent fallout in memory management. - - * src/truetype/ttgload.c (TT_Process_Composite_Glyph, - TT_Load_Simple_Glyph): Clean up old instructions regardless of - new ones, postpone setting `control_len` and `control_data` until... - (TT_Load_Glyph): ... the exit from this function. - -2023-03-10 Jouk Jansen - - Update VMS installation support. - -2023-03-10 Alexei Podtelezhnikov - - * src/truetype/ttgload.c (TT_Hint_Glyph): Mostly cosmetic update. - - The number of instructions is now taken from the executed context. - Technically, this means that `control_len` and `control_data` - values are no longer _used_ internally but only expose them. - -2023-03-08 Werner Lemberg - - apinames.c: Add comment. - -2023-03-07 Werner Lemberg - - [gzip] File `infback.c` is not needed. - - * src/gzip/infback.c: Remove. - * src/gzip/rules.mk (GZIP_DRV_SRCS): Updated. - -2023-03-07 Werner Lemberg - - [apinames] Fix VMS handling of overly long function names. - - Based on ideas from Jouk Jansen . - - * src/tools/vms_shorten_symbol.c: New file, taken from - - https://sourceforge.net/p/vms-ports/vmsshortsym/ci/default/tree/vms_shorten_symbol.c - - with some minor edits to allow compilation with C++ and being included in - another source code file. - - * src/tools/apinames.c: Include `vms_shorten_symbol.c`. - (PROGRAM_VERSION): Set to '0.5'. - (names_dump) [OUTPUT_VMS_OPT]: Call `vms_shorten_symbol` to get unique function - identifiers not longer than 31 characters. - -2023-03-07 Werner Lemberg - - * src/tools/apinames.c (panic): Accept variable number of arguments. - -2023-03-07 Alexei Podtelezhnikov - - * src/truetype/ttgload.c (TT_Process_Composite_Glyph): Fix leak too. - -2023-03-07 Alexei Podtelezhnikov - - * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Triage memory leak. - - This leak has been introduced in the previous commit and immediately - detected: - https://chromium-review.googlesource.com/c/chromium/src/+/4313202 - -2023-03-06 Alexei Podtelezhnikov - - [truetype] Simplify memory management. - - Instead of using `Update_Max`, switch to regular FreeType memory - allocation macros, stop pre-allocating the glyph instruction arrays. - - * src/truetype/ttgload.c (TT_Load_Simple_Glyph, - TT_Process_Composite_Glyph): Switch to regular memory allocation. - * src/truetype/ttinterp.c (Update_Max): Removed. - (TT_Load_Context): Reallocate stack and free old instructions. - (Modify_CVT_Check, Ins_WS): Switch to regular memory allocation. - * src/truetype/ttinterp.h (Update_Max): Removed. - -2023-03-06 David PROVENT - - Added information about the zlib version update in the changelog - -2023-03-06 Alexei Podtelezhnikov - - Fix a couple of MSVC warnings. - - * src/base/ftcalc.c (FT_MulAddFix): Add cast. - * src/sfnt/ttcolr.c (tt_face_get_colorline_stops, read_paint): Ditto. - -2023-03-05 Alexei Podtelezhnikov - - * builds/windows/vc2010/freetype.vcxproj: Suppress C4267 on _WIN64. - - This usually comes from `strlen` returning 64-bit `size_t`, which - we often assign to 32-bit `FT_ULong` on Windows-64 (LLP64). - -2023-03-05 Alexei Podtelezhnikov - - * src/cff/cffparse.c (cff_parser_run): Thinko. - -2023-03-05 Alexei Podtelezhnikov - - [cff] Clean up CharString number encoding. - - * src/cff/cffparser.c (cff_parser_run): Work with signed numbers. - -2023-03-05 Alexei Podtelezhnikov - - * src/cff/cffparse.c (cff_parser_run): Fix variable type. - -2023-03-04 Alexei Podtelezhnikov - - [cff] Clean up memory management in the old engine. - - * src/cff/cffparse.c (finalize_t2_strings): Fix NULL-dereferencing - in the out-of-memory situation, use `FT_FREE`. - (cff_parser_run): Use FreeType memory allocation macros and avoid - uninitialized pointers. - -2023-03-04 Alexei Podtelezhnikov - - * src/cff/cffobjs.c (cff_size_init): Synonymous change. - -2023-03-04 Alexei Podtelezhnikov - - * src/sfnt/sfobjs.c (sfnt_load_face): Shorten de-referencing. - -2023-03-04 Alexei Podtelezhnikov - - [pfr] Shorten de-referencing. - - * src/pfr/pfrobjs.c (pfr_face_done, pfr_face_init): Use closer `memory`. - * src/pfr/pfrgload.c (pfr_glyph_load_compound): Remove `loader`. - -2023-03-03 Alexei Podtelezhnikov - - * src/cff/cffobjs.c (cff_size_get_globals_funcs): Shorten de-referencing. - -2023-03-03 Alexei Podtelezhnikov - - [cff,cid,type1] Shorten de-referencing. - - * src/cff/cffobjs.c (cff_clot_init): Use immediate library reference. - * src/cid/cidobjs.c (cid_slot_init): Ditto. - * src/type1/t1objs.c (T1_GlyphSlot_Init): Ditto. - -2023-03-02 Alexei Podtelezhnikov - - * configure: Use `sed` instead of `grep`. - - This is more portable and consistent with `autogen.sh`. - -2023-03-02 Ben Wagner - - Avoid strtol on non-null-terminated data. - - Technically, `strtol` can only be used with C strings terminated with - `\0`. CID data is not generally null-terminated and often does not - contain a `\0` if it is hex-encoded. AddressSanitizer with `ASAN_OPTIONS` - containing `strict_string_checks=1` verifies this by using an adversarial - `strtol` that always reads to the terminating `\0`. - - To avoid undefined behavior from `strtol` in `cid_parser_new`, use the - parser to parse the tokens instead of attempting to parse them ad-hoc. - This will internally use `PS_Conv_Strtol` to parse the integer, which - respects the parser's limits and directly implements the PostScript - parsing rules for integers. - - * src/cid/cidparse.c (cid_parser_new): Use the parser to parse the - tokens. - - Fixes: https://bugs.chromium.org/p/chromium/issues/detail?id=1420329 - -2023-03-02 Alexei Podtelezhnikov - - * src/cff/cffload.c (cff_subfont_load): Synonymous update. - -2023-03-01 ubawurinna - - * src/gzip/README.freetype: Update version. - -2023-03-01 ubawurinna - - [gzip] Fix static linking. - - Without this patch, static linking with MS Visual Studio causes linking - errors. - - * src/gzip/ftgzip.c: Set `ZEXPORT` to nothing and `ZEXTERN` to static for - all compilers. - -2023-03-01 Werner Lemberg - - * include/freetype/internal/compiler-macros.h (FALL_THROUGH): Update. - - This follows - - https://lists.gnu.org/archive/html/bug-gnulib/2023-02/msg00200.html - -2023-02-28 Alexei Podtelezhnikov - - [truetype] Treat 38 as 40 without Infinality. - - * include/freetype/ftdriver.h (TT_INTERPRETER_VERSION_38): Reinstate. - * src/truetype/ttdriver.c (tt_property_set): Fallback from 38 to 40. - -2023-02-26 Werner Lemberg - - * include/freetype/internal/compiler-macros.h (FALL_THROUGH): Update. - - This follows - - https://lists.gnu.org/archive/html/bug-gnulib/2023-02/msg00159.html - -2023-02-26 Werner Lemberg - - * src/*: Replace leading underscores with trailing ones in dummy variables. - - This is to avoid clang warnings. - -2023-02-26 Karl Berry - - * configure: Don't hardcode `grep -E`. - - TeXLive still supports Solaris 5.10, where the system's `grep` doesn't - accept the `-E` option. We thus introduce an `EGREP` variable that is set - to either `grep -E` or `-egrep`. - -2023-02-26 Alexei Podtelezhnikov - - * src/cff/cffload.c (cff_encoding_load): Optimize array zeroing. - - This is unnecessary for predefined standard and expert encodings. - Even for custom encodings the arrays might be already zeroed when - CFF_FontRec is created but we keep it just in case. - -2023-02-25 Alexei Podtelezhnikov - - * src/type1/t1load.c (T1_Get_MM_Var): Optimize array zeroing. - -2023-02-25 Tamir Duberstein - - * src/base/ftsystem.c (ft_ansi_stream_io): Avoid undefined behaviour. - Also short-circuit on `offset` to avoid checking `count` a second time when - `ft_ansi_stream_io` is used for reading. - - Per ISO/IEC 9899: - - If an argument to a function has an invalid value (such as a value outside - the domain of the function, or a pointer outside the address space of the - program, or a null pointer, or apointer to non-modifiable storage when the - corresponding parameter is not const-qualified) or a type (after - promotion) not expected by a function with variable number of arguments, - the behavior is undefined. If a function argument is described as being - an array, the pointer actually passed to the function shall have a value - such that all address computations and accesses to objects (that would be - valid if the pointer did point to the first element of such an array) are - in fact valid. - - Per IEEE Std 1003.1: - - size_t fread(void *restrict ptr, size_t size, size_t nitems, - FILE *restrict stream); - - The `fread` function shall read into the array pointed to by `ptr` up to - `nitems` elements whose size is specified by `size` in bytes, from the - stream pointed to by `stream`. - - Since the first argument to `fread` is described as being an array, its - behavior is undefined when that argument is a null pointer. - - Per the documentation on `ft_ansi_stream_io`: - - If `count' is zero (this is, the function is used for seeking), a non-zero - return value indicates an error. - - Thus the intent is clear, and the call to `fread` can be skipped, avoiding - undefined behaviour. - -2023-02-21 Alexei Podtelezhnikov - - [raster] Clean up contour indexing. - - * src/raster/ftraster.c (Decompose_Curve, Convert_Glyph): Use consistent - index types (Int) and compact iterations. - -2023-02-21 Alexei Podtelezhnikov - - [autofit] Clean up contour indexing. - - * src/autofit/aflatin.c (af_latin_metrics_init_blues): Refactor. - * src/autofit/afcjk.c (af_cjk_metrics_init_blues): Ditto. - -2023-02-21 Alexei Podtelezhnikov - - * src/base/ftoutln.c (FT_Outline_Check): Fix C4701 warning. - -2023-02-21 Alexei Podtelezhnikov - - * src/sdf/ftsdf.c (get_min_distance_cubic): Fix C4701, typos. - -2023-02-20 Alexei Podtelezhnikov - - * src/base/ftstroke.c (FT_Stroker_ParseOutline): Clean up contour indexing. - -2023-02-20 Alexei Podtelezhnikov - - [base] Clean up contour indexing. - - * src/base/ftoutln.c (FT_Outline_Reverse, FT_Outline_EmboldenXY, - FT_Outline_Get_Orientation): Set the first and last indexes together. - (FT_Outline_Decompose): Ditto and check them more stringently. - * src/smooth/ftgrays.c (FT_Outline_Decompose)[STANDALONE_]: Ditto. - -2023-02-20 Alexei Podtelezhnikov - - * src/base/ftoutln.c (FT_Outline_Check): Update error code, clean up. - -2023-02-17 Alexei Podtelezhnikov - - [truetype] Hide Infinality. - - Remove Infinality as an option before its complete extraction. - - * include/freetype/ftoption.h: Remove the Infinality option. - * devel/ftoption.h: Ditto. - * include/freetype/ftdriver.h (TT_INTERPRETER_VERSION_38): Is 40 now. - -2023-02-17 Alex Ringlein - - * src/base/ftoutln.c (FT_Outline_Reverse): Anchor first contour points. - - A cubic contour has to always start from an on-point. Therefore, we - should not swap the first with the last point, which might be off, and - obtain an invalid contour. This does not matter for conic contours. - If anything, it also saves one swap there. Fixes #1207. - -2023-02-16 Werner Lemberg - - Documentation improvement for `FT_Bitmap`. - - Fixes #1205. - -2023-02-10 Alexei Podtelezhnikov - - [type1/MM] Round design coordinates. - - The design coordinates for MM fonts were not rounded. For example, - `FT_Get_Var_Design_Coordinates` returned values with fractional part. - - * src/type1/t1load.c (mm_axis_unmap): Refactor with rounding. - - * include/freetype/ftmm.h (FT_Var_Axis, FT_Set_Var_Design_Coordinates, - FT_Get_Var_Design_Coordinates): Reword documentation. - -2023-02-09 Jan Alexander Steffens (heftig) - - * builds/meson/parse_modules_cfg.py: Handle `gxvalid` and `otvalid`. - - These need a name mapping similar to what was done for other modules, - or linking will fail. - -2023-02-09 Werner Lemberg - - * build/toplevel.mk (do_dist): Fix typo. - -2023-02-09 Werner Lemberg - - * Version 2.13 released. - ========================== - - Tag sources with `VER-2-13-0'. - - * docs/VERSION.TXT: Add entry for version 2.13. - * docs/CHANGES: Updated. - - * README, src/base/ftver.rc, builds/windows/vc2010/index.html, - builds/windows/visualc/index.html, builds/windows/visualce/index.html, - builds/wince/vc2005-ce/index.html, builds/wince/vc2008-ce/index.html, - docs/freetype-config.1: s/2.12.1/2.13/, s/2121/2130/. - - * include/freetype/freetype.h (FREETYPE_MINOR): Set to 13. - (FREETYPE_PATCH): Set to 0. - - * builds/unix/configure.raw (version_info): Set to 25:0:19. - * CMakeLists.txt (VERSION_MINOR): Set to 13. - (VERSION_PATCH): Set to 0. - -2023-02-09 Alexei Podtelezhnikov - - Comment on `FT_GlyphSlot_Slant'. - -2023-02-08 Werner Lemberg - - [autofit] Fix 'multi' compilation. - - * src/autofit/ft-hb.c: Decorate with `FT_LOCAL_DEF`. - Add ANSI boilerplate code for otherwise empty file. - * src/autofit/ft-hb.h: Include `compiler-macros.h` and `freetype.h`. - Use `FT_BEGIN_HEADER` and `FT_END_HEADER`. - Decorate with `FT_LOCAL`. - - * src/autofit/rules.mk (AUTOF_DRV_SRC): Add `ft-hb.c`. - -2023-02-08 Werner Lemberg - - Fix `FT_LOCAL` and `FT_LOCAL_DEF` tags. - -2023-02-08 Werner Lemberg - - Fix 'fall-through' warning messages. - - Modern compilers get more insistent on that... - - * include/freetype/internal/compiler-macros.h (FALL_THROUGH): Define. - * src/*: Use it instead of `/* fall through */` comments. - -2023-02-08 Werner Lemberg - - For debugging, avoid implicit conversion from integer to double. - - Otherwise we get zillions of clang 15 warnings. - - * src/autofit/afcjk.c, src/autofit/afhints.c, src/autofit/aflatin.c, - src/base/ftobjs.c, src/base/ftoutln.c, src/cff/cffparse.c, - src/raster/ftraster.c, src/sfnt/pngshim.c, src/truetype/ttgload.c, - src/truetype/ttgxvar.c, src/truetype/ttobjs.c, src/type1/t1gload.c: Use - `double` cast in debugging and tracing macros. - -2023-02-08 Werner Lemberg - - Avoid reserved identifiers that are globally defined. - - This is mandated by the C99 standard, and clang 15 produces zillions of - warnings otherwise. - - * devel/ftoption.h, include/freetype/config/ftoption.h, - include/freetype/internal/ftmemory.h, src/autofit/afhints.h, - src/autofit/afmodule.c, src/autofit/aftypes.h, src/base/ftadvanc.c, - src/base/ftdbgmem.c, src/base/ftstream.c, src/bdf/bdflib.c, - src/truetype/ttinterp.c: Replace identifiers of the form `_foo` with `foo_`. - -2023-02-08 Werner Lemberg - - Fix minor clang and clang++ warnings. - -2023-02-08 Alexei Podtelezhnikov - - [truetype, type1] Additional variation tags. - - Sync with - https://learn.microsoft.com/en-us/typography/opentype/spec/dvaraxisreg#registered-axis-tags - - * src/truetype/ttgxvar.h (TTAG_ital): New tag. - * src/truetype/ttgxvar.c (TT_Get_MM_Var): Use it. - * src/type1/t1load.c (T1_Get_MM_Var): Handle 'slnt' and 'ital'. - -2023-02-08 Alexei Podtelezhnikov - - * src/base/ftsynth.c (FT_GlyphSlot_Slant): Add vertical slant. - * include/freetype/ftsynth.h (FT_GlyphSlot_Slant): Update it. - -2023-02-08 anuj <95867901+anuj99@users.noreply.github.com> - - [sdf] Use 32-bit integers internally. - - * src/sdf/ftsdfcommon.h (FT_16D16, FT_26D6): Use 32-bit integers - instead of `FT_Fixed` for internal data types. `FT_Fixed` i.e. - `signed long` is 64-bit on some architectures. - -2023-02-07 Werner Lemberg - - docs/CHANGES: Updated. - -2023-02-04 Alexei Podtelezhnikov - - Comment on optional ascender and descender. - -2023-02-04 Alexei Podtelezhnikov - - * src/type1/t1afm.c (T1_Read_Metrics): Reaffirm ascender and descender. - -2023-02-04 Alexei Podtelezhnikov - - * src/type1/t1afm.c (T1_Read_Metrics): Validate ascender and descender. - - The ascender and descender are optional in the AFM specifications. - They could be omitted or even set to zero, e.g., in the current release - of URW++ base 35 fonts. - -2023-02-02 Werner Lemberg - - * src/cff/cffgload.c (cff_slot_load): Avoid memory leak. - - Fixes issue #1204. - -2023-02-01 Werner Lemberg - - * src/truetype/ttgxvar.c (tt_var_get_item_delta): Check `face->blend`. - - Reported as - - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=55581 - -2023-02-01 Werner Lemberg - - * docs/CHANGES: Add news for 'freetype-demos'. - -2023-01-30 Werner Lemberg - - * subprojects/harfbuzz.wrap, subprojects/libpng.wrap: Updated. - -2023-01-28 Werner Lemberg - - Minor changes. - - Comment fixes, typos, removing of unnecessary parentheses. - -2023-01-28 Werner Lemberg - - Whitespace. - -2023-01-27 Behdad Esfahbod - - [ttgxvar] Fix crash in COLRv1. - - This is a stopgap until issue #1202 is properly fixed. - - * src/truetype/ttxgvar.c (tt_var_get_item_delta): Check `normalizedcoords`. - -2023-01-19 Werner Lemberg - - The 'COLR' v1 API will no longer be experimental in the next release. - -2023-01-18 Alexei Podtelezhnikov - - * docs/oldlogs/ChangeLog.210: Typos. - -2023-01-18 Ben Wagner - - [base] Fix typo. - - * src/base/ftobjs.c (open_face_PS_from_sfnt_stream): Request module 't1cid', - not 'cid'. - -2023-01-18 Ben Wagner - - [base] Return error if requested driver is not found. - - In `open_face_from_buffer` it is possible that a driver is requested but - FreeType was built without the requested module. Return an error in this - case to indicate that the request could not be satisfied, rather than trying - all existing driver modules. - - * src/base/ftobjs.c (open_face_from_buffer): Return `FT_Err_Missing_Module` - if a driver is specified but not found. - -2023-01-18 Dominik Röttsches - - [sfnt] Avoid nullptr dereference in reading malformed 'COLR' v1 table. - - Fixes https://bugs.chromium.org/p/chromium/issues/detail?id=1408044. - - * src/sfnt/ttcolr.c (tt_face_load_colr): When the 'COLR' v1 table header is - too small, don't deallocate delta set index map structures. - -2023-01-17 Werner Lemberg - - * src/tools/update-copyright: Allow execution from other repositories. - - We use this for `freetype-demos`. - -2023-01-17 Werner Lemberg - - Update all copyright notices. - -2023-01-17 Werner Lemberg - - * src/tools/no-copyright: Updated. - -2023-01-17 Ben Wagner - - [base] 'close' callback may not use `stream->memory`. - - The documentation for `FT_StreamRec::memory` states that it 'shouldn't be - touched by stream implementations'. This is true even for internal - implementations of the 'close' callback, since it is not guaranteed that - `memory` will even be set when the 'close' callback occurs. - - * src/base/ftobjs.c (new_memory_stream): stash current `memory` in - `stream->descriptor`. - (memory_stream_close): Use it. - -2023-01-17 Ben Wagner - - [base] Always close user-provided stream. - - The `FT_Open_Face` documentation states - - > If `FT_OPEN_STREAM` is set in `args->flags`, the stream in `args->stream` - > is automatically closed before this function returns any error (including - > `FT_Err_Invalid_Argument`). - - However, if the user provides a stream in `args.stream` with - `FT_OPEN_STREAM` set and a `close` function, but then for some reason passes - NULL for `aface` and a non-negative `face_index`, the error - `Invalid_Argument` is returned but the `close` callback will not be called - on the user-provided stream. This may cause resource leaks if the caller is - depending on the `close` callback to free resources. - - The difficulty is that a user may fill out a `FT_StreamRec` and pass its - address as `args.stream`, but the stream isn't really 'live' until - `FT_Stream_New` is called on it (and `memory` is set). In particular, it - cannot really be cleaned up properly in `ft_open_face_internal` until the - stream pointer has been copied into the `stream` local variable. - - * src/base/ftobj.c (ft_open_face_internal): Ensure that user-provided - `args.stream.close` is called even with early errors. - -2023-01-17 Ben Wagner - - [base] Fix leak of internal stream marked external. - - `open_face_from_buffer` allocates a new `FT_Stream` to pass to - `ft_open_face_internal`. Because this is an `FT_OPEN_STREAM`, - `ft_open_face_internal` will mark this as an 'external stream', which the - caller must free. However, `open_face_from_buffer` cannot directly free it - because the stream must last as long as the face. There is currently an - attempt at this by clearing the 'external stream' bit after - `open_face_from_buffer` returns successfully. However, this is too late as - the original stream may have already been closed and the stream on the face - may not be the same stream as originally passed. - - It is tempting to use `FT_OPEN_MEMORY` and let `ft_open_face_internal` - create the stream internally. However, with this method there is no means - to pass through a 'close' function to the created stream to free the - underlying data, which must be owned by the stream. - - A possibility is to check on success if the stream of the face is the same - as the original stream. If it is then unset the external flag. If not, - then free the original stream. Unfortunately, while no current - implementation does so, it is possible that the face still has the original - stream somewhere other than as the `FT_FaceRec::stream`. The stream needs - to remain available for the life of the face or until it is closed, - whichever comes earlier. - - The approach taken here is to let the stream own itself. When the stream is - closed it will free itself. - - * src/base/ftobjs.c (memory_stream_close): Free `stream`. - (open_face_from_buffer): Simplify error handling, since - `ft_open_face_internal` always closes `args.stream` on any error. - - Fixes: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=54930 - -2023-01-16 Werner Lemberg - - sr/*.c: Various minor fixes. - - * src/autofit/ft-hb.c (_hb_ft_reference_table): Call `FT_UNUSED` after - variable declarations. - - * src/gxvalid/gxvjust.c (gxv_just_widthDeltaClusters_validate): Eliminate - unused variable. - - * src/gzip/ftgzip.c: Don't call GCC '-Wstrict-prototypes' pragma for C++ - compiler. - - * src/sfnt/ttcolr.c (ENSURE_READ_BYTES): Remove final semicolon to avoid - compiler warning. - - * src/sfnt/ttsvg.c (tt_face_load_svg_doc): Fix signedness warning. - -2023-01-16 Dominik Röttsches - - [sfnt] Remove temporary runtime flag for variable 'COLR' v1. - - Fixes #1187. - - * src/sfnt/ttcolr.c (top level, read_paint, tt_face_load_colr, - tt_face_free_colr, get_deltas_for_var_index_base, - tt_face_get_color_glyph_clipbox, tt_face_get_colorline_stops): Remove macro - definition `VARIABLE_COLRV1_ENABLED` and its usage. - - * src/truetype/ttdriver.c (tt_property_set): Remove parsing of - 'TEMPORARY-enable-variable-colrv1' property name. - - * src/truetype/ttobjs.h (TT_DriverRec): Remove `enable_variable_colrv1` - flag. - -2023-01-07 Werner Lemberg - - * src/autofit/ft-hb.c (_hb_ft_reference_table): Minor integration fixes. - -2023-01-07 Ben Wagner - - [truetype] Reset cvt and storage in context load. - - Currently the cvt and storage are saved and restored in `TT_RunIns`. - However, this is too granular as the cvt and storage area should be set to - the original cvt and storage area only when setting up the hinting context. - This allows for the cvt and storage area to be modified while parsing - multiple glyphs, as is the case with composite glyphs. - - * src/truetype/ttinterp.h (TT_ExecContextRec): Remove `origCvt` and - `origStorage`. - - * src/truetype/ttinterp.c (TT_RunIns): Don't save and restore the cvt and - storage area. - (Modify_CVT_Check, Ins_WS): Switch from "if in glyph and using original data - do copy on write" to "if in glyph and not using glyph specific data do copy - on write". - -2023-01-06 Matthias Clasen - - [autofit] Don't depend on 'hb-ft'. - - The circular dependency is still there, but at least we no longer depend on - the HarfBuzz API that is only present if HarfBuzz has been built with - FreeType support, making the bootstrapping a bit easier. - - * src/autofit/ft-hb.c, src/autofit/ft-hb.h: New files, providing - `_hb_ft_font_create`, which is more or less a verbatim copy of the - corresponding HarfBuzz code from file `hb-ft.cc`. - - * src/autofit/afglobal.c (af_face_globals_new): Use it. - * src/autofit/afshaper.h: Don't include `hb-ft.h` but `ft-hb.h`. - * src/autofit/autofit.c: Include `ft-hb.c`. - - * LICENSE.TXT: Updated. - -2023-01-06 Ben Wagner - - [truetype] Keep variation store consistent. - - `tt_var_load_item_variation_store` fills out a `GX_ItemVarStore`. While it - may return an error, the item store must be left in a consistent state so - that any use or destruction of the item store can properly use or free the - data in it. Before this change the counts from the font data were read - directly into the item store before the actual allocation of the arrays to - which they referred. There exist many opportunities between the time the - counts are read and the arrays are allocated to return early due to invalid - data. When this happened the item store claimed to have entires it actually - did not, leading to crashes later when it was used. - - Fixes: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=54449 - - * src/truetype/ttgxvar.c (tt_var_load_item_variation_store): Read the counts - into local variables and store them in the item store only after the related - arrays are actually created on the item store. - -2023-01-05 Ben Wagner - - [base] Report used stream's external status. - - In `open_face` the initial stream is set on the face, along with the - information about if FreeType is the owner of the stream object itself. The - loaders may in the course of their work replace this stream with a new - stream (as is the case for 'woff' and 'woff2'), which may have a different - ownership than the initial stream object (likely the original stream object - is owned by the user and is external, while the new stream object is created - internally to FreeType and is internal). When the stream is replaced, the - face's flags are updated with the new ownership status. - - However, `open_face` cannot itself free this stream as its caller - `ft_open_face_internal` is responsible for this. In addition, in the case - of an error `open_face` cannot return an actual face with the new stream and - its ownership status to the caller. As a result, it must pass this - information back to the caller as a sort of "failed face" so that the caller - can clean up. - - `open_face` was already passing back the new stream but was not passing back - the stream ownership information. As a result the stream may not have been - free'd when needed. - - Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=54700 - - * src/base/ftobjs.c (open_face): Pass back the ownership information as - well. - (ft_open_face_internal): Updated. - -2023-01-05 Noah Cabral - - fix spelling err in LICENSE.txt - -2023-01-05 Dominik Röttsches - - [sfnt] Fix color stop bounds check calculation at table end. - - Fixes https://bugs.chromium.org/p/skia/issues/detail?id=14021 - - * src/sfnt/ttcolr.c (VAR_IDX_BASE_SIZE): New macro. - (tt_face_get_colorline_stops): Fix off-by-one bounds check calculation, take - `VarColorStop` into account, and hopefully make it easier to read. - -2023-01-05 Alexei Podtelezhnikov - - * src/base/ftobjs.c (FT_Request_Metrics): Avoid division by zero. - - The division-by-zero might happen in broken fonts (see #1194). - Instead of returning a huge number from FT_DivFix and failing - to scale later, we now bail immediately. - -2022-12-20 Alexei Podtelezhnikov - - [psaux] Delay the upem validity assertion. - - Fixes #1194. - - * src/psaux/psft.c (cf2_getUnitsPerEm): Remove the upem assert. - (cf2_checkTransform): Assert the upem validity after checking the scale. - -2022-12-14 David Vanderson - Werner Lemberg - - [gzip] Make static compilation not leak global symbols. - - * src/gzip/ftgzip.c (HAVE_HIDDEN): Do not define; it is no longer needed - because everything is static. - (HAVE_MEMCPY): Define. - (zcalloc, zcfree): Remove no longer needed definitions (because `Z_SOLO` is - active). - - * src/gzip/patches/freetype-zlib.diff: Regenerated. - - Fixes #1146. - -2022-12-14 Werner Lemberg - - * src/gzip/ftzconf.h: Updated to zlib 1.2.13. - - I forgot to copy that file. - -2022-12-14 Werner Lemberg - - * builds/unix/configure.raw: Don't check for `memcpy` and `memmove`. - - We expect a C99 compiler, and both functions are part of this standard. - -2022-12-13 Werner Lemberg - - [sdf, sfnt] Handle minor compiler warnings. - - * src/sdf/ftsdf.c (get_min_distance_conic): Initialize `nearest_point`. - - * src/sfnt/ttsvg.c (find_doc): Initialize `mid_doc`. - - Fixes #1195. - -2022-12-07 Werner Lemberg - - * subprojects/zlib.wrap: Micro-update from upstream. - -2022-12-06 Jiří Malák - - * include/freetype/internal/ftcalc.h (FT_MSB): Support Open Watcom 2.0. - - Closes !232. - -2022-11-23 Luca Bacci - - * src/base/ftdbgmem.c (ft_mem_source_compare): Add FT_COMPARE_DEF. - - Closes !230. - -2022-11-21 Alexei Podtelezhnikov - - * src/autofit/afloader.c (af_loader_load_glyph): Remove `size` check. - - This is done by `FT_Load_Glyph`. - -2022-11-18 Alexei Podtelezhnikov - - Comments added. - -2022-11-16 Johan Matsson - - * src/autofit/afloader.c (af_loader_load_glyph): Fix dereference. - - This must happen after the NULL check. - - Taken from - - https://github.com/freetype/freetype/pull/2 - -2022-11-15 Alexei Podtelezhnikov - - * src/pcf/pcfutil.c ({Two,Four}ByteSwap): Use builtins or shifts. - - We trust glibc which uses shifts or builtins to swap bytes. This - must be more efficient. - -2022-11-14 Werner Lemberg - - * src/truetype/ttgxvar.c (tt_hvadvance_adjust): Integer overflow. - - Reported as - - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=50462 - -2022-11-14 Loïc Yhuel - - [meson] Use generated ftmodule.h - - ftmodule.h is generated at the root of the build directory, but FT_CONFIG_MODULES_H - (freetype/config/ftmodule.h) is used instead. - This makes the build fail when disabling modules in modules.cfg. - - * meson.build (harfbuzz_dep): Add '-DFT_CONFIG_MODULES_H='. - -2022-11-14 Loïc Yhuel - - [meson] Fix generated ftmodule.h - - The sdf module wasn't recognized, so the generated ftmodule.h had "None_renderer_class". - - * builds/meson/parse_modules_cfg.py: Handle sdf in RASTER_MODULES. - -2022-11-12 Dominik Röttsches - - Add `TT_CONFIG_OPTION_NO_BORING_EXPANSION` configuration macro. - - This gives users a possibility to deactivate new features not (yet) in the - OpenType standard. - - * include/freetype/config/ftoption.h, devel/ftoption.h - (TT_CONFIG_OPTION_NO_BORING_EXPANSION): New macro. - - * src/truetype/ttgxvar.c (ft_var_load_avar): Use it to disable 'avar' - version 2.0 support. - -2022-11-12 Behdad Esfahbod - - [truetype] Improve bounds checks for `ItemVariationStore`. - - * src/truetype/ttgxvar.c (tt_hvadvance_adjust): Move bounds check ... - (tt_var_get_item_delta): ... to this function, because it is safer. For - example, the 'avar' table 2.0 codepath was not performing a bounds check at - all. - -2022-11-12 Behdad Esfahbod - - [truetype] In `ItemVariationStore`, value 0xFFFF for `dataCount` is valid. - - It corresponds to outer indices of 0 to 0xFFFE. - - * src/truetype/ttgxvar.c (tt_var_load_item_variation_store): Remove invalid - code. - -2022-11-11 Alexei Podtelezhnikov - - [pcf] Improve CMap efficiency and readability. - - * src/pcf/pcfdrivr.c (pcf_cmap_char_{index,next}): Check and walk - the encoding array indexes. - -2022-11-10 Sam James - - Fix `-Wstrict-prototypes`. - - * builds/unix/configure.raw: Fix `-Wstrict-prototypes`. - Clang 16 warns on these and they will be dropped in C23. - - * builds/unix/freetype2.m4: Ditto. - -2022-11-09 Ben Wagner - - [truetype] Check avar_segment before access - - * src/truetype/ttgxvar.c (tt_done_blend): check `avar_segment` before - accessing to free its `correspondence`. - - Reported as: - - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=53062 - -2022-11-09 Ben Wagner - - [truetype] Restore behavior of ft_var_load_hvvar - - * src/truetype/ttgcvar.c (ft_var_load_hvvar): restore previous behavior - - In a previous change [0] the behavior of `ft_var_load_hvvar` was changed - to not load the item variation store if it was at offset 0, but not - return an error when this happened. This broke any users, like - `tt_hvadvance_adjust`, that rely on successful completion of - `ft_var_load_hvvar` to imply that returned table's `itemStore` had been - initialized. This lead such users to dereference NULL. - - This change appears to have been unintentional and unrelated to the - actual avar2 changes. As a result, fix these NULL dereferences by - restoring the code to always attempt to initialize the `itemStore`. - - [0] ae4eb996 "[truetype] Add support for `avar` table 2.0 format." - - Reported as - - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=53061 - -2022-11-08 Werner Lemberg - - docs/CHANGES: Updated. - -2022-11-08 suzuki toshiya - - [build] use AC_CHECK_PROG() macro for libpng-config detection - - * builds/unix/configure.raw: use AC_CHECK_PROG() instead of `which` to find `libpng-config`. - -2022-11-08 suzuki toshiya - - [build] fix for make multi - - Fix "make multi" by MR !223 - - * include/freetype/internal/services/svmm.h: include ftmm.h to define FT_Get_MM_Func. - * src/truetype/ttgxvar.h: include ftmmtypes.h to use GX_AVarTable properly. - * src/base/ftmac.c: include ftdebug.h to use FT_THROW() properly. - -2022-11-08 Alexei Podtelezhnikov - - * src/pfr/pfrsbit.c (pfr_lookup_bitmap_data): Accelerate the search. - - This is mostly for consistency because PFR fonts with bitmap strikes - do not seem to exist. - -2022-11-06 Alexei Podtelezhnikov - - [bdf, pfr, psnames] Accelarate charmap searches. - - The binary searches within charmaps can be accelerated because they - often contain dense continuous blocks of character codes. Within such - blocks, you can predict matches based on misses. This method has been - deployed in `bdf` since 0f122fef34; we only refactor it there. We now - use it in `pfr` and `psnames`, which speeds up the unicode charmap - access by about 50% in PFR and Type 1 fonts. - - * src/bdf/bdfdrivr.c (bdf_cmap_char_{index,next}): Refactor. - * src/pfr/pfrcmap.c (pfr_cmap_char_{index,next}): Predict `mid` based - on the mismatch distance. - * src/psnames/psmodule.c (ps_unicodes_char_{index,next}): Ditto. - -2022-11-04 Behdad Esfahbod - - [truetype] Add support for `avar` table 2.0 format. - - See - - https://github.com/harfbuzz/boring-expansion-spec/blob/main/avar2.md - - for the specification. - - Currently, this is implemented only in most recent OS versions on Apple - platforms and in the HarfBuzz library, but it is expected to be added to the - OpenType standard soon. - - * src/truetype/ttgxvar.h (GX_AVarTableRec): New structure. - (GX_BlendRec): Use it to replace `avar_segment` with `avar_table`. - - * src/truetype/ttgxvar.c (ft_var_load_avar): Load new table version. - (ft_var_to_normalized, tt_done_blend): Extend for new format. - (ft_var_load_hvvar, ft_var_to_design): Updated. - -2022-10-24 Werner Lemberg - - Replace '1/64th' (and similar entries) with '1/64' in docs and comments. - -2022-10-24 Ivan Panchenko - - * include/freetype/*: Fix documentation typos. - -2022-10-21 Alexei Podtelezhnikov - - * src/truetype/ttgload.c: Cosmetic changes. - -2022-10-21 Alexei Podtelezhnikov - - [cff, truetype] Simplify SVG metrics scaling. - - Use pre-calculated scaling factors. Also, the advance widths used - to be rounded, which was incorrect. - - * src/cff/cffgload.c (cff_slot_load): Use `x_scale` and `y_scale`. - * src/truetype/ttgload.c (TT_Load_Glyph): Ditto. - -2022-10-20 Werner Lemberg - - * subprojects/zlib.wrap: Update to zlib version 1.2.13. - -2022-10-18 Dominik Röttsches - - [sfnt] Additional bounds checks for `COLR` v1 table handling. - - * src/sfnt/ttcolr.c (read_paint): Add `colr` argument, necessary for... - ... another use of `ENSURE_READ_BYTES`. - Update callers. - (tt_face_get_paint_layers): Ensure that the 4-byte paint table - offset can be read. - - This is a follow-up to !124 and issue - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=52404 - -2022-10-18 Werner Lemberg - - [gzip] Update sources to zlib 1.2.13. - -2022-10-18 Alexei Podtelezhnikov - - * src/sfnt/ttsbit.c (tt_face_load_strike_metrics): Simplify calculations. - -2022-10-18 Werner Lemberg - - Minor formatting. - -2022-10-18 Dominik Röttsches - - [sfnt] Guard individual `COLR` v1 paint field reads. - - * src/sfnt/ttcolr.c (ENSURE_READ_BYTES): New macro. - (read_paint): Use it – after the start pointer `p` has been checked for - whether it allows reading the format byte, each successive paint table field - read need to be bounds-checked before reading further values. - - Reported as - - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=52404 - -2022-10-17 Xiang Xiao - - * builds/toplevel.mk: Prefix all paths with `$(TOP_DIR)/`. - - This is useful for builds that are not started from the root directory. - -2022-10-17 Liu Kunpeng(柳鲲é¹) - - * src/base/ftsynth.c (FT_GlyphSlot_Slant): New API with custom slant. - * include/freetype/ftsynth.h (FT_GlyphSlot_Slant): Declare it. - -2022-10-15 Alexei Podtelezhnikov - - Note the lack of floating-point data types. - -2022-10-10 Werner Lemberg - - [cff] Remove `FT_CONFIG_OPTION_NO_GLYPH_NAMES`. - - This ancient option stayed completely undocumented. Given that the 'cff' - driver requires the 'psnames' module, it makes no sense today to have this - macro. - - * src/cff/cffdrivr.c (cff_services), src/cff/cffobjs.c (cff_face_init): - Remove corresponding conditional code. - -2022-10-10 Werner Lemberg - - Synchronize `ftoption.h` flavours. - -2022-10-10 Werner Lemberg - - Minor comment changes. - -2022-10-05 Alexei Podtelezhnikov - - Improve FT_Get_Name_Index docs and place it next to FT_Get_Glyph_Name. - -2022-10-04 Alexei Podtelezhnikov - - [autofit] Reset the face charmap directly. - - There is no need to validate the original charmap in `FT_Set_Charmap`. - It can be reset directly. - - * src/autofit/afglobal.c (af_face_globals_compute_style_coverage): - Use direct assignment. - * src/autofit/af{latin,cjk,indic}.c (af_latin_metrics_init): Ditto. - -2022-10-04 Alexei Podtelezhnikov - - * src/type1/t1afm.c (T1_Read_PFM): Set charmaps directly. - - As with the previous commit, we can avoid the validation checks - of `FT_Set_Charmap` and set it directly when choosing from the - available list. - -2022-10-03 Alexei Podtelezhnikov - - * src/cache/ftccmap.c (FTC_CMapCache_Lookup): Avoid `FT_Set_Charmap`. - - Set charmap aggressively without all validations of `FT_Set_Charmap` - because we take it from the available array and only temporarily. - Even CMap Format 14 will gracefully return 0. - -2022-10-03 Alexei Podtelezhnikov - - * src/cache/ftcbasic.c (ftc_basic_family_get_count): Remove redundancy. - -2022-09-30 Werner Lemberg - - * src/psaux/pshints.c (cf2_hintmap_insertHint): Fix midpoint computation. - - Replace '(start + end) / 2' with 'start + (end - start) / 2' to avoid - overflow. - - Fixes #1180. - -2022-09-30 Werner Lemberg - - * src/psaux/pshints.c (cf2_hintmap_build): Improve debugging output. - -2022-09-29 mlugg - - [truetype] Fix undefined pointer arithmetic. - - * src/truetype/ttgxvar.c (tt_var_get_item_delta, ft_var_load_mvar): Use - `FT_OFFSET`. - -2022-09-29 Alexei Podtelezhnikov - - * src/sfnt/ttsbit.c (tt_face_load_strike_metrics): Use lighter FT_DivFix. - -2022-09-29 Ali Chraghi - - [base] FT_Attach_Stream: Make `parameters` argument constant. - -2022-09-29 Azamat Hackimov - - * src/tools/*.py: Migrate to Python 3. - - Fixes #1185, closes !205. Formatting changes according to PEP8. - -2022-09-27 Dominik Röttsches - - [sfnt] Guard access in 'COLR' table when requesting child table pointer. - - * src/sfnt/ttcolr.c (tt_face_get_colorline_stops, read_paint): Tighten - pointer bounds checks. - (get_child_table_pointer): Check whether incoming pointer `p` lies within - the 'COLR' table. - - Reported as - - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=51816 - -2022-09-27 Ben Wagner - - [sfnt] Add SVG document bounds checking. - - Add a check that the document content is actually contained within the - `SVG ` table. Without this check a malformed font may claim arbitrary - memory as its document content. - - * src/sfnt/ttsvg.c (tt_face_load_svg): Take `numEntries` into account when - testing 'documentRecord' extents. - (find_doc): Rename `stream` to `document_records` for clarity. - (tt_face_load_svg_doc): Split `doc` from `doc_list` pointer for clarity. - Test that the document content is contained within the table. - Ensure minimum length of document before testing for gzip format. - - Reported as - - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=51812 - -2022-09-23 Alexei Podtelezhnikov - - [base] Clean up the bitmap flow control. - - * src/base/ftbitmap.c (FT_Bitmap_Copy): Flip the copy if its pitch - is trully opposite, zero is not a positive value. - (FT_Bitmap_Convert): Set negative pitch as needed, accept negative - alignment values. - -2022-09-22 Alexei Podtelezhnikov - - [base] Discard and recreate bitmaps for copying and converting. - - Reusing target bitmaps for copying and converting is permitted. It is, - however, pointless to preserve their content before overwriting. Free- - malloc might be faster than realloc. - - * src/base/ftbitmap.c (FT_Bitmap_Copy, FT_Bitmap_Convert): Free - an old buffer and create a new one. - -2022-09-16 Dominik Röttsches - - Reject 'COLR' table if version is 1 but header too small. - - * src/sfnt/ttcolr.c (tt_face_load_colr): If the version is determined to - be 1, then the table size has to be at least the size of the v1 header. - Also, for peeking the number of base glyphs and entries in the layer list, - ensure that the table is sufficiently long. - - Fixes #1179. Original patch by Sergey Temnikov. - -2022-09-15 Werner Lemberg - - * src/otvalid/otvgsub.c (otv_SingleSubst_validate): Fix format 1 handling. - - Fixes #1181. - -2022-09-06 Dominik Röttsches - - [truetype] Reject 'fvar' loading when `num_instances` is too small. - - * src/truetype/ttgxvar.c (TT_Get_MM_Var): Reject retrieving master when - 'fvar' values locally do not match with sanitized values from initialization - at `sfnt_init_face` time. - - Reported as - - https://bugs.chromium.org/p/chromium/issues/detail?id=1360295 - -2022-09-05 Dominik Röttsches - - [sfnt] Handle variable `COLR` v1 fonts without delta set index map - - Fixes #1178. - - * src/sfnt/ttcolr.c (get_deltas_for_var_index_base): Set outer index to - 0 and inner index to the delta index when retrieving deltas if the - `COLR` table has no delta set index map. - -2022-09-05 Dominik Röttsches - - [sfnt] Pointer sanity checks before reading layer info in 'COLR' v0 - - * src/sfnt/ttcolr.c (tt_face_get_colr_layer): Check that the pointer to - read from is within the 'COLR' table. - - Reported as - - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=50633 - -2022-09-05 Werner Lemberg - - [autofit] Minor fix. - - * src/autofit/afglobal.c (af_face_globals_compute_style_coverage): Avoid - compiler warning. - -2022-09-05 Dominik Röttsches - - [sfnt] Don't require 'gvar' table to support variation fonts. - - Fixes #1172. - - * src/sfnt/sfobjs.c (sfnt_load_face): Tag font as Multiple Masters font if - `fvar` is present; do not require other tables to be present. - - * src/truetype/ttgxvar.c (tt_set_mm_blend): Allow for a missing 'gvar' table - when setting variation coordinates. However, if a 'gvar' table is actually - present, do perform a sanity check and fail on malformedness. - (TT_Get_MM_Var): Don't assume 'fvar' needs 'gvar' or 'CFF2 tables in all - cases, which is an overly tight check. - -2022-08-27 Alexei Podtelezhnikov - - * src/base/ftver.rc: Explicitly use UTF-16. - - Fixes #1177 to avoid mistranslation and other problems. - -2022-08-26 Dominik Röttsches - - [sfnt] Avoid undefined shifts in `COLR` v1 color line retrieval - - * src/sfnt/ttcolr.c (tt_face_get_colorline_stops): Disambiguate shift - behavior by using multiplication using macros from ftcalc.h. - - Fixes: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=50573 - -2022-08-21 Sean Farrell - - CMakeLists.txt (FT_ENABLE_ERROR_STRINGS): New configuration option. - - This option uncomments FreeType configuration macro - `FT_CONFIG_OPTION_ERROR_STRINGS` to make function `FT_Error_String` return - meaningful error strings. - - This option is off by default. - -2022-08-21 Chris Liddell - - [base, type1] Better handling of out-of-memory situations. - - This follows similar code in `cff_slot_done`. - - * src/base/ftobjs.c (ft_glyphslot_done), src/type1/t1objs.c - (T1_GlyphSlot_Done): Check `internal` pointer. - - The Type1 problems was reported as - - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=50057. - -2022-08-06 Tim-Philipp Müller - - ci: bump windows image and use newer runner and vs2019 - - The old 1809 runner will be decommissioned at some point. - -2022-08-04 @udoudou <> - - * src/cache/ftcmanag.c (FTC_Manager_New): Initialize `cur_weight`. - - See !192. - -2022-08-02 Alexei Podtelezhnikov - - * src/sfnt/ttload.c: Trace formatting updates. - -2022-08-02 Alexei Podtelezhnikov - - * src/psaux/psobjs.c (ps_table_release): Remove redundant casting. - -2022-08-02 Alexei Podtelezhnikov - - * src/base/ftobjs.c (Mac_Read_sfnt_Resource): Reduce casting. - -2022-08-02 Alexei Podtelezhnikov - - [cache] Remove some casts, clean up tracing. - - * src/cache/ftcbasic.c (FTC_ImageCache_Lookup, FTC_SBitCache_Lookup): - Clean up tracing types. - * src/cache/ftccache.c (ftc_node_destroy): Ditto. - * src/cache/ftcmanag.c (FTC_Manager_Check): Ditto. - (FTC_Manager_Check, FTC_Node_Unref): Remove a cast. - * src/cache/ftccmap.c (FTC_CMapCache_Lookup): Ditto. - -2022-08-01 Alexei Podtelezhnikov - - [autofit] Updated to reduce casting (cont'd). - - * src/autofit/afmodule.h (AF_ModuleRec): Change `default_script` type. - * src/autofit/afglobal.c (af_face_globals_compute_style_coverage): - Remove casting. - * src/autofit/afmodule.c (af_property_{set,get}): Updated accordingly. - -2022-08-01 Alexei Podtelezhnikov - - [autofit] Updated to reduce casting. - - * src/autofit/afglobal.h (AF_FaceGlobalsRec): Change `glyph_count` type. - * src/autofit/afglobal.c (af_face_globals_compute_style_coverage, - af_face_globals_get_metrics, af_face_globals_is_digit, - af_face_globals_new): Changed local types and updated accordingly. - * src/autofit/aflatin.c (af_latin_metrics_init_blues): Ditto. - -2022-08-01 Alexei Podtelezhnikov - - [psaux] Remove unused structure field. - - * include/freetype/internal/psaux.h (PS_TableRec): Remove `num_elems`. - * src/psaux/psobjs.c (ps_table_new): Remoove its initialization. - -2022-07-30 Dominik Röttsches - - [sfnt] Implement VarClipBox. - - * src/sfnt/ttcolr.c (tt_face_get_color_glyph_clipbox): Depending on the - format, read `var_index_base`, then retrieve and apply scaled deltas. - -2022-07-30 Dominik Röttsches - - [sfnt] Fix typo in clip box computation. - - * src/sfnt/ttcolr.c (tt_face_get_color_glyph_clipbox): Use appropriate - scale factor for `yMin` and `yMax`. - -2022-07-30 Alexei Podtelezhnikov - - [autofit] Use unsigned accounting for hints. - - * src/autofit/afhints.h (AF_AxisHintsRec): Use unsigned types. - - * src/autofit/afhints.c (af_axis_hints_new_{segment,edge}, - af_glyph_hints_get_num_segments, af_glyph_hints_get_segment_offset): - Updated accordingly. - * src/autofit/aflatin.c (af_cjk_hints_compute_edges): Ditto. - * src/autofit/afcjk.c (af_cjk_hints_compute_edges): Ditto. - -2022-07-30 Alexei Podtelezhnikov - - * src/autofit/afhints.h: Remove dead code. - -2022-07-29 Werner Lemberg - - * src/base/ftglyph.c (FT_Get_Glyph): Set `*aglyph` to NULL in case of error. - -2022-07-29 Werner Lemberg - - Fix compilation if `TT_CONFIG_OPTION_GX_VAR_SUPPORT` is not set. - - * src/sfnt/ttcolr.c: Protect relevant code with - `TT_CONFIG_OPTION_GX_VAR_SUPPORT`. - -2022-07-29 Werner Lemberg - - Fix clang14 compiler warnings. - - * include/freetype/internal/ftstream.h (FT_GET_SHORT_LE, FT_GET_USHORT_LE): - Fix type. - - * src/sfnt/ttcolr.c (get_deltas_for_var_index_base): Always return boolean - value. - (tt_face_get_colorline_stops): Fix type of `var_index_base`. - -2022-07-26 Alexei Podtelezhnikov - - [pfr] Fortify the kerning code. - - Any array index must be strictly less then the array size. Therefore, - we must reject indexes that are equal to the array size. Alternatively, - we should move the bounds check before the index decrement but that - would be confusing. - - In addition, it is ok to decrement zero (.notdef) and get UINT_MAX, - which is then automatically rejected in the bounds check. - - * src/pfr/pfrobjs.c (pfr_face_get_kerning): Fix the bounds checking. - -2022-07-26 Werner Lemberg - - [pfr] Add some safety guards. - - * src/pfr/pfrload.c (pfr_phy_font_load): Check resolutions and number of - characters. - - Fixes #1174. - -2022-07-26 Werner Lemberg - - * src/pfr/*.c: Trivial improvements and formatting. - -2022-07-24 Werner Lemberg - - * configure: s/egrep/grep -E/ - - `egrep` is deprecated. - -2022-07-23 Ben Wagner - - [base] Build outlines in amortized constant time. - - When resizing the loader's points and contours, resize them to at least 1.5 - times their current size. The code currently only reserves as much space as - is currently required, leading to O(n^2) runtime when adding points one at a - time. - - This change does not attempt to ever shrink the loader's point and contour - storage since this was not attempted previously either. The 1.5 multiple - was chosen as a trade-off between potentially unused space and the runtime. - - * src/base/ftgloader.c (FT_GlyphLoader_CheckPoints): Implement it. - - Fixes #1173. - -2022-07-09 Dominik Röttsches - - [sfnt] Support variable 'COLR' v1 `PaintVarSkew*`. - - * src/sfnt/ttcolr.c (FT_PaintFormat_Internal): New enumeration values - `FT_COLR_PAINTFORMAT_INTERNAL_VAR_SKEW`, - `FT_COLR_PAINTFORMAT_INTERNAL_SKEW_CENTER`, and - `FT_COLR_PAINTFORMAT_INTERNAL_VAR_SKEW_CENTER`. - (read_paint): Handle new enumeration values. - -2022-07-09 Dominik Röttsches - - [sfnt] Support variable 'COLR' v1 `PaintVarRotate*`. - - * src/sfnt/ttcolr.c (FT_PaintFormat_Internal): New enumeration values - `FT_COLR_PAINTFORMAT_INTERNAL_VAR_ROTATE` and - `FT_COLR_PAINTFORMAT_INTERNAL_VAR_ROTATE_CENTER`. - (read_paint): Handle new enumeration values. - -2022-07-09 Dominik Röttsches - - [sfnt] Support 'COLR' v1 variable `PaintVarScale*`. - - * src/sfnt/ttcolr.c: (FT_PaintFormatInternal): New enumeration values - `FT_COLR_PAINTFORMAT_INTERNAL_VAR_SCALE`, - `FT_COLR_PAINTFORMAT_INTERNAL_VAR_SCALE_CENTER`, - `FT_COLR_PAINTFORMAT_INTERNAL_VAR_SCALE_UNIFORM`, and - `FT_COLR_PAINTFORMAT_INTERNAL_VAR_SCALE_UNIFORM_CENTER`. - (read_paint): Handle new enumeration values. - -2022-07-09 Dominik Röttsches - - [sfnt] Support for 'COLR' v1 variable translate. - - * src/sfnt/ttcolr.c (FT_PaintFormat_Internal): New enumeration value - `FT_COLR_PAINTFORMAT_INTERNAL_VAR_TRANSLATE`. - (read_paint): Handle new enumeration value. - -2022-07-09 Dominik Röttsches - - [sfnt] Support for 'COLR' v1 variable transforms. - - * src/sfnt/ttcolr.c (FT_PaintFormat_Internal): New enumeration value - `FT_COLR_PAINTFORMAT_INTERNAL_VAR_TRANSFORM`. - (read_paint): Handle new enumeration value. - -2022-07-09 Dominik Röttsches - - [sfnt] Deltas for 'COLR' v1 gradient coordinates. - - * src/sfnt/ttcolr.c (read_paint) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Read and - apply deltas to radial, linear, and sweep gradient coordinates such as 'p0', - 'p1', 'p2', 'center', 'radii', and 'angles'. - -2022-07-08 Dominik Röttsches - - [sfnt] Support variable 'COLR' v1 color lines. - - * include/freetype/ftcolor.h (FT_ColorStopIterator): Add field - `read_variable` to indicate whether a variation index base should be read. - - * src/sfnt/ttcolr.c: (FT_PaintFormat_Internal): New enumerations - `FT_COLR_PAINTFORMAT_INTERNAL_VAR_LINEAR_GRADIENT` - `FT_COLR_PAINTFORMAT_INTERNAL_VAR_RADIAL_GRADIENT`, and - `FT_COLR_PAINTFORMAT_INTERNAL_VAR_SWEEP_GRADIENT`. - (read_color_line): New parameter `read_variable`; update callers. - (read_paint): Handle new enumerations. - -2022-07-07 Dominik Röttsches - - [sfnt] Apply variation deltas to `PaintVarSolid`. - - * src/sfnt/ttcolr.c (FT_PaintFormat_Internal_): New enumeration - `FT_COLR_PAINTFORMAT_INTERNAL_VAR_SOLID`. - - (get_deltas_for_var_index_base) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: New - function to retrieve an array of delta values, which will be used for most - of 'COLR' v1 variation formats (in follow-up commits). - - (read_paint): Add `face` parameter; update caller. - Handle `FT_COLR_PAINTFORMAT_INTERNAL_VAR_SOLID`. - -2022-07-07 Dominik Röttsches - - [sfnt] Check safety of cast to `TT_Driver` before accessing member. - - * src/sfnt/ttcolr.c (VARIABLE_COLRV1_ENABLED): Access - `enable_variable_colrv1` only if driver class matches. - -2022-07-06 Stephen Holdaway - - doc: Clarify description of `FT_Stream_IoFunc`. - - The existing documentation comments on `FT_Stream_IoFunc` hinted at the dual - seek/read behavior required for custom stream implementations to work, but - it didn't explicitly explain it. Without looking at the internals of - FreeType, it was easy for someone to assume their implementation should - handle both seek and read operations all the time. If this is done, you get - a variety of errors, but mostly just `Unknown_File_Format` (error code - 0x02). - -2022-07-04 Dominik Röttsches - - [sfnt] Load variation store for 'COLR' v1. - - * src/sfnt/ttcolr.c: Include `ttobjs.h` temporarily. - (VARIABLE_COLRV1_ENABLED): New temporary macro to detect whether variable - COLRv1 is enabled. - (Colr): New fields `var_store` and `delta_set_idx_map`. - (tt_face_load_colr, tt_face_free_colr) [VARIABLE_COLRV1_ENABLED]: Load and - free variation store data using the functions from the Multiple Masters - service. - -2022-07-03 Chris Liddell - - [base] Improve error handling in `FT_GlyphLoader_CheckPoints`. - - If `FT_GlyphLoader_CreateExtra` returns an error (and a couple of other - places), `FT_GlyphLoader_CheckPoints` would propagate the error immediately, - rather than cleaning up the partially set up `FT_GlyphLoader`. As a - consequence, a subsequent attempt to create a glyph could result in a crash. - - * src/base/ftgloadr.c (FT_GlyphLoader_CheckPoints): Ensure all the error - conditions exits are consistent, eventually calling `FT_GlyphLoader_Reset`. - -2022-07-03 Thomas Sondergaard - - CMakeLists.txt: Provide both 'freetype' and 'Freetype::Freetype' targets. - - FreeType can be located by consuming projects that use - `find_package(Freetype)` either via the old `MODULE` path (which uses - `FindFreetype.cmake` supplied by CMake), or via the new `CONFIG` path (which - uses `freetype-config.cmake` as supplied by this project). Up to this point - the CMake module has supplied the target `Freetype::Freetype` and the config - file provided by this project the target `freetype`. Now we supply both - `freetype` and `Freetype::Freetype` so that consuming projects can always - use the target `Freetype::Freetype` regardless of what path was taken by - `find_package(Freetype)`. - - Fixes #1165. - -2022-07-02 Werner Lemberg - - include/freetype/ftmm.h: Improve documentation. - -2022-07-01 Dominik Röttsches - - [base] Round values in `FT_MulAdd_Fix`. - - This avoids regressing Blink layout tests and makes `FT_MulAdd_Fix` delta - retrieval implementation consistent with the previous implementation, which - used `FT_fixedToInt` and included rounding. - - * src/base/ftcalc.c (FT_MulAdd_Fix): Implement it. - Also fix remaining `temp` initialization compilation issue. - - Fixes #1169. - -2022-07-01 Werner Lemberg - - Minor formatting. - -2022-06-30 Dominik Röttsches - - Fix initialisation of temp variable in new FT_MulAddFix - - src/truetype/ttgxvar.c (FT_MulAddFix): Initialise `temp`. - -2022-06-29 Dominik Röttsches - - [truetype] Perform variation store delta computation with 64-bit precision. - - * include/freetype/internal/ftmmtypes.h (FT_ItemVarDelta): Make type - explicitly 32-bit. - * include/freetype/internal/services/svmm.h - (FT_Var_Get_Item_Delta_Func): Change return type to `FT_ItemVarDelta` - * truetype/ttgxvar.h (tt_var_get_item_delta): Change return type to - `FT_ItemVarDelta`. - * truetype/ttgxvar.c (tt_var_get_item_delta): Store scalars and deltas - to intermediate array, perform computation using new method - `FT_MulAddFix`. - -2022-06-29 Dominik Röttsches - - New function `FT_MulAddFix` to compute the sum of fixed-point products. - - This function, based on the code of `FT_MulFix`, uses 64-bit precision - internally for intermediate computations. - - * include/freetype/internal/ftcalc.h, base/ftcalc.c (FT_MulAddFix): - Implement it. - -2022-06-22 Werner Lemberg - - CMakeLists.txt: Move inclusion of `FindPkgConfig` down. - - It must come after `CMAKE_TOOLCHAIN_FILE`. - - Fixes #1167. - -2022-06-22 Dominik Röttsches - - [sfnt] Upgrade stop_offset to FT_Fixed from FT_F2Dot14 - -2022-06-21 Alexei Podtelezhnikov - - * docs/CHANGES: Announce impending Infinality removal. - -2022-06-21 Alexei Podtelezhnikov - - * ttgload.c (TT_Process_Composite_Glyph): Fix a signedness warning. - -2022-06-21 Werner Lemberg - - s/fixed point/fixed-point/ - -2022-06-21 Werner Lemberg - - .gitlab-ci.yml: Correctly upgrade `meson`. - -2022-06-21 Dominik Röttsches - - Proposal: Feature control for variable COLRv1 - - * include/freetype/ftdriver.h (variable-color-v1 property): Add documentation - for variable-colr-v1 property. - * src/truetype/ttdriver.c (tt_property_set): Ingest variable-control property - when called, set to enable_variable_colrv1 driver flag. - * src/truetype/ttobjs.h (TT_DriverRec): Add enable_variable_colrv1 flag. - -2022-06-21 Xavier Claessens - - [meson] Disable FreeType in HarfBuzz fallback. - - This avoids cyclic subproject configuration when the 'harfbuzz' feature is - enabled, or `--wrap-mode=forcefallback` is used, but HarfBuzz is built as a - subproject. HarfBuzz does the same and disables HarfBuzz support when - configuring FreeType as a subproject. - - * meson.build (harfbuzz_dep): Implement it. - - * subprojects/harfbuzz.wrap: New file. - - * .gitlab-ci.yml [windows meson]: Use latest version of the meson 0.59 - series, which has a necessary bug fix to make CI work. - -2022-06-19 Alexei Podtelezhnikov - - [truetype] Clean up phantom point accounting. - - This formalizes that the phantom points appended in the outline - do not increase its point count, nor are they tagged or included - in any additional contours. Only their coordinates are stored. - They are counted in the glyph zone, however. - - * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Infer `n_points` - from the outline size plus four phantom points. - * src/truetype/ttgxvar.h (TT_Vary_Apply_Glyph_Deltas): Remove this - argument. - * src/truetype/ttgload.c (tt_prepare_zone): Add phantom four. - (TT_Process_Simple_Glyph, load_truetype_glyph): Update all callers. - -2022-06-19 Alexei Podtelezhnikov - - [truetype/GX] Clean up phantom point adjustment. - - This moves phantom point and advance variation adjustment next to - calculations. The logic stays the same, HVAR and VVAR take priority. - - * src/truetype/ttgload.c (load_truetype_glyph): Move it from here... - * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): ... to here - and check for HVAR and VVAR presence outside the main loop. - -2022-06-18 Ben Wagner - - [stream] Fix reading s32 when long is s64 - - `FT_READ_LONG`, `FT_GET_LONG`, and related macros did not return - negative values when `long` is more than 32 bits. `FT_Stream_ReadULong` - would read four bytes into the LSB of an `FT_ULong` and return that. - Since this can never set the MSb of the `FT_ULong` when `FT_ULong` is - more than 32 bits the cast to `FT_Long` never resulted in a negative - value. - - Fix this by modifying `FT_Stream_Read*` to return a type of the same - size as the bytes it is reading and changing the `FT_READ_*` and - `FT_GET_*` macros to cast to the same type returned by `FT_Stream_Read*` - but with the correctly signed type (instead of casting to what is - assumed to be the type of `var` which will happen automatically anyway). - - There exist a few cases like with the `OFF3` variants where there isn't - generally a type with the correct size. `FT_PEEK_OFF3` works around this - loading the bytes into the three most significant bits and then doing a - signed shift down. `FT_NEXT_OFF3` also already worked correctly by - casting this signed value to another signed type. `FT_Stream_GetUOffset` - works correctly but one must be careful not to attempt to cast the - returned value to a signed type. Fortunately there is only - `FT_GET_UOFF3` and no `FT_GET_OFF3`. - - All of these cases are handled correctly when reading values through - `FT_Stream_ReadFields` since it generically computes the signed value - through an `FT_Int32`. This change is essentially doing the same for - these macros. - - * include/freetype/internal/ftstream.h (FT_NEXT_*, FT_GET_*, FT_READ*): - Update macros and return types to use fixed size types for fixed size - values. - - * src/base/ftstream.c (FT_StreamGet*, FT_StreamRead*): Dito. - - Issue: #1161 - -2022-06-17 Alexei Podtelezhnikov - - [truetype/GX] Fix an old typo. - - * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Vertical - advance is measured along y-coordinate. - -2022-06-16 Alexei Podtelezhnikov - - [truetype/GX] Clean up advance adjustment (Brrr). - - * src/truetype/ttgload.c (load_truetype_glyph): Remove remaining code. - -2022-06-16 Ben Wagner - - [type1] Directly search for eexec in private dict - - This code originally just searched for `eexec`. This was later modified - to check that the `eexec` found is valid (not in a string or comment). - This was done by searching for `eexec` as before and then, for each - `eexec` found, searching from the beginning using the correct parsing to - see if the `eexec` was still found. If the private dictionary is large - and contains many copies of `eexec` which are not valid, the initial - part of the private dictionary is scanned once for each, potentially - leading to n^2 parsing time. - - Instead of finding an initial `eexec` and then re-parsing to discover if - it is valid, drop the initial search for `eexec` and just parse to find - a valid `eexec`. This is strictly faster since the validation must - happen anyway and avoids restarting from the beginning each time an - `eexec` is found in the data. - - * src/type1/t1parse.c (T1_Get_Private_Dict): avoid n^2 parsing - - Bug: https://bugs.chromium.org/p/chromium/issues/detail?id=1328883 - -2022-06-16 Alexei Podtelezhnikov - - [truetype/GX] Clean up advance adjustment. - - * src/truetype/ttgload.c (TT_Process_Simple_Glyph, load_truetype_glyph): - Move the advance adjustment from here... - * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): ... to here and - simplify arguments. - * src/truetype/ttgxvar.h (TT_Vary_Apply_Glyph_Deltas): Update prototype - with fewer arguments. - -2022-06-14 Ben Wagner - - [gzip] Handle inflate returning Z_NEED_DICT - - When `inflate` returns `Z_NEED_DICT` this is currently not reported as - an error and callers may assume that the decompression succeeded when it - did not. In particular, a compressed table in a woff file may not - actually be decompressed and written as expected, leaving the backing - memory for the expanded table uninitialized. - - * src/gzlip/ftgzip.c (FT_Gzip_Uncompress): treat `Z_NEED_DICT` as - indicating invalid data since there is no means to provide a dictionary. - - Bug: https://bugs.chromium.org/p/chromium/issues/detail?id=1335712 - -2022-06-13 Ben Wagner - - [woff] Don't allocate table entries until needed - - * src/sfnt/sfwoff.c (woff_open_font): delay allocating space for the - table entries until they are actually written out with the data. - -2022-06-12 Alexei Podtelezhnikov - - * src/sfnt/sfwoff2.c (woff2_open_font): Partial revert. - - Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=47981. - -2022-06-12 Alexei Podtelezhnikov - - * src/lzw/ftzopen.c (ft_lzwstate_stack_grow): Cosmetic macro change. - -2022-06-11 Alexei Podtelezhnikov - - [woff, woff2] Avoid buffer zeroing. - - * src/sfnt/sfwoff.c (woff_open_font): Use Q-macros. - * src/sfnt/sfwoff2.c: Ditto. - (reconstruct_font): Allocate table_entry on stack. - -2022-06-10 Alexei Podtelezhnikov - - [smooth] Fix GCC LTO crashes on Windows. - - Fixes #1164 by using a volatile variable around `setjmp`. It is hard to - say how this fixes crashes related to certain link-time optimizations. - This does not decrease the rendering performance. - - * src/smooth/ftgrays.c (gray_convert_glyph_inner): Use volatile `error`. - -2022-06-09 bruvzg <@bruvzg> - - * src/smooth/ftgrays.c [FT_STATIC_RASTER]: Fix compilation. - -2022-06-06 Ben Wagner - - [svg] Set linear advances when loading SVG glyphs - - * include/freetype/freetype.h (FT_GlyphSlotRec_): update doc - * src/cff/cffgload.c (cff_slot_load): do it - * src/truetype/ttgload.c (TT_Load_Glyph): do it - - Fixes: #1156 - -2022-06-01 Ben Wagner - - [svg] Clear correct flags for doc ownership - - This issue was discovered with an SVG based font with some documents - compressed and other uncompressed. After loading the first compressed - document the ownership flag on the glyph slot was set to true but never - set to false. As a result after loading a compressed document a glyph - from an uncompressed document would load fine, but when this glyph slot - was cleared it would try to free its document resulting in a wild free. - - * src/base/ftobjs.c (ft_glyphslot_clear): clear correct flags - - Fixes: #1162 - -2022-06-01 Alexei Podtelezhnikov - - [docs] Correct favicon. - -2022-06-01 Alexei Podtelezhnikov - - [docs] Use hinted favicon. - -2022-05-27 Alexei Podtelezhnikov - - [docs] Update favicon. - -2022-05-25 Behdad Esfahbod (بهداد اسÙهبد) - - * src/sfnt/ttmtx.c (tt_face_get_metrics): Apply variations unconditionally. - - This causes a speed-up of approx. 20% for getting advance widths. - -2022-05-23 Dominik Röttsches - - [truetype] Support reading 32bit/16bit VarStore deltas - - * include/freetype/internal/ftmmtypes.h (FT_ItemVarDelta): Define type - to be used for delta arrays, upgrade to FT_long. - * src/truetype/ttgxvar.c: Adhere to long_words bit and read either - Short/Byte pairs or Long/Short pairs, as defined by spec. For better - readability, define macro for repetitive read code. - -2022-05-20 Dominik Röttsches - - [truetype] Handle 0xFFFF special value inside delta retrieval function - - * truetype/ttgxvar.c (tt_hvadvance_adjust, tt_apply_mvar, - tt_var_get_item_delta): Remove special 0xFFFF handling in favor of less - redundant handling inside the tt_var_get_item_delta function, as it is - equivalent to returning a 0 delta. Avoids code-duplication checking for - special value 0xFFFF. - -2022-05-19 Dominik Röttsches - - [truetype, snft] Add service methods for `DeltaSetIdxMap` and `VarStore`. - - This will be needed for 'COLR' v1 variation support. - - * src/truetype/ttgxvar.h (GX_ItemVarData, GX_AxisCoords, GX_VarRegion, - GX_VarItemStore, GX_DeltaSetIdxMap): Move structures to... - * include/freetype/internal/ftmmtypes.h: ... this new file. - - * include/freetype/internal/service/svmm.h (MultiMasters): Include - `ftmmtypes.h`. - (FT_Var_Load_Delta_Set_Idx_Map_Func, FT_Var_Load_Item_Var_Store_Func, - FT_Var_Get_Item_Delta_Func, FT_Var_Done_Item_Var_Store_Func, - FT_Var_Done_Delta_Set_Idx_Map_Func): New function typedefs. - (MultiMasters): Add them. - (FT_DEFINE_SERVICE_MULTIMASTERSREC): Updated. - - * src/cff/cffdrivr.c (cff_load_item_variation_store, - cff_load_delta_set_index_mapping, cff_get_item_delta, - cff_done_item_variation_store, cff_done_delta_set_index_map): New wrapper - methods calling into mm service. - (cff_service_multi_masters): Updated. - - * src/truetype/ttgxvar.c (ft_var_load_item_variation_store, - ft_var_load_delta_set_index_mapping, ft_var_get_item_delta, - ft_var_done_item_variation_store, ft_var_done_delta_set_index_map): Renamed - to ... - (tt_var_load_item_variation_store, tt_var_load_delta_set_index_mapping, - tt_var_get_item_delta, tt_var_done_item_variation_store, - tt_var_done_delta_set_index_map): ... this for consistency. - Mark them as non-static. - * src/truetype/ttgxvar.h: Add corresponding prototypes. - - * src/truetype/ttdriver.c (tt_service_gx_multi_masters): Updated. - - * src/type1/t1driver.c (t1_service_multi_masters): Updated. - -2022-05-19 Dominik Röttsches - - [truetype] Move deallocation of `DeltaSetIdxMap` into own function. - - This is a preparation for handling `DeltaSetIdxMap` and `VarStore` as a - FreeType service. - - * src/truetype/ttgxvar.c (ft_var_done_delta_set_index_map): New function. - (tt_done_blend): Use it. - -2022-05-18 Werner Lemberg - - * builds/toplevel.mk (do-dist): Don't remove meson wrap files. - - Fixes #1157. - -2022-05-18 Werner Lemberg - - * subprojects/zlib.wrap: Update to zlib version 1.2.12. - -2022-05-18 Werner Lemberg - - REAMDE: Mention that gitlab's 'download' button doesn't work. - - This is because the `git archive` command doesn't preserve submodules. - - Note that currently there is no support for disabling the 'download' button - in gitlab (https://gitlab.com/gitlab-org/gitlab/-/issues/17032). - - Fixes issue #1158. - -2022-05-11 Werner Lemberg - - [truetype] Handle inner/outer index values 0xFFFF/0xFFFF. - - This was introduced in OpenType 1.8.4. - - * src/truetype/ttgxvar.c (ft_var_load_delta_set_index_mapping, - tt_hvadvance_adjust, ft_var_load_mvar, tt_apply_mvar): Handle special - inner/outer index values. - (ft_var_load_item_variation_store): Add test. - - Fixes #1154. - -2022-05-01 Werner Lemberg - - * Version 2.12.1 released. - ========================== - - Tag sources with `VER-2-12-1'. - - * docs/VERSION.TXT: Add entry for version 2.12.1. - * docs/CHANGES, docs/release: Updated. - - * README, src/base/ftver.rc, builds/windows/vc2010/index.html, - builds/windows/visualc/index.html, builds/windows/visualce/index.html, - builds/wince/vc2005-ce/index.html, builds/wince/vc2008-ce/index.html, - docs/freetype-config.1: s/2.12.0/2.12.1/, s/2120/2121/. - - * include/freetype/freetype.h (FREETYPE_PATCH): Set to 1. - - * builds/unix/configure.raw (version_info): Set to 24:3:18. - * CMakeLists.txt (VERSION_PATCH): Set to 1. - -2022-04-30 Anuj Verma - - [sdf] Do not throw errors for invisible glyphs. - - * src/sdf/ftsdfrend.c (ft_sdf_render, ft_bsdf_render): Return `FT_Err_Ok` if - width or height is zero, since some glyphs do not generate visible bitmaps. - - Fixes #1150. - -2022-04-30 Werner Lemberg - - * src/sfnt/sfobjs.c (sfnt_load_face): Set `FT_FACE_FLAG_COLOR` for SVG fonts. - - Fixes #1151. - -2022-04-27 Brendan Shanks - - autogen.sh: Fix building when freetype is itself a git submodule. - - There are situations where .git is not a directory, like when - freetype is a submodule in another repository. - -2022-04-26 Alexei Podtelezhnikov - - [builds/windows] Simplify non-desktop UWP check. - - Fixes mingw compilation described in !159. - - * builds/windows/ftsystem.c: Do not use WINAPI_FAMILY_PARTITION macro. - -2022-04-25 Alexei Podtelezhnikov - - [truetype] Reset IUP flags in `TT_RunIns`. - - Fixes #1148 by moving the flag initialization back, partly reverting - 7809007a and fd03dcc1. Initializing these flags elsewhere skips 'cvt'. - - * src/truetype/ttinterp.c (TT_RunIns): Initialize the IUP flag here... - (TT_Run_Context): ... instead of here. - -2022-04-24 Xavier Claessens - - [meson] Remove `default_library=both` from `default_options`. - - It is inconsistent with what all other Meson projects do. - - It also prevents static linking to FreeType when it is a subproject because - `default_options` in a subproject takes precedence on values set on the main - project. For example, building 'GStreamer' with `-Ddefault_library=static` - would still dynamically link on FreeType unless the user also sets - `-Dfreetype2:default_library=static`. - - * meson.build: Updated. - - * .gitlab-ci.yml: Retain `both` option for testing. - -2022-04-19 Werner Lemberg - - * src/truetype/ttgload.c (TT_Process_Simple_Glyph): Integer overflow. - - Reported as - - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=46792 - -2022-04-16 Georg Brandl - - * src/cff/cffgload.c (cff_slot_load) [FT_CONFIG_OPTION_SVG]: Fix segfault. - - This can happen if the function is called with `size` being `NULL`. - - Fixes #1147. - -2022-04-14 Steve Lhomme - - .gitlab-ci.yml: Add a Universal Windows build target - - It's compiled for Windows 10 and up, ensuring UNICODE is set (default for UWP) - and selecting the proper WINAPI_FAMILY (WINAPI_FAMILY_APP). - - Do not try to run the UWP exe in the Docker as it doesn't work. - -2022-04-04 Ben Wagner - - [sfnt] Correct FT_ColorStopIterator documentation. - - * include/freetype/ftcolor.h (FT_ColorStopIterator): the user should not - set `p` to NULL before calling `FT_Get_Colorline_Stops`. `p` and - `num_color_stops` are set by `FT_Get_Paint`. `p` and - `current_color_stop` are updated by `FT_Get_Colorline_Stops`. - -2022-04-01 Werner Lemberg - - * builds/unix/configure.raw: Add option `--with-librsvg`. - - Since 'librsvg' is written in Rust, this option allows distributions to - avoid a dependency on the entire Rust toolchain to provide the FreeType demo - programs. - - Suggested by Lars Wendler in !156. - -2022-04-01 Werner Lemberg - - * src/sfnt/sfwoff.c (reconstruct_glyf): Fix gcc 10 warning. - -2022-04-01 Werner Lemberg - - [gzip] Update sources to zlib 1.2.12. - -2022-04-01 Eric Jing <@CPUcontrol> - - CMakeLists.txt: Fix `Info.plist` path. - - When building a framework using CMake with `add_subdirectory`, CMake must be - able to find `freetype-Info.plist` when configuring the framework - properties. - - Fixes #1145. - -2022-04-01 Werner Lemberg - - Whitespace. - -2022-04-01 Ben Wagner - - [truetype] Use SUB_LONG for component offset. - - * src/truetype/ttgload.c (TT_Process_Composite_Component): do it. - - Bug: https://crbug.com/1309429 - -2022-03-31 Werner Lemberg - - CMakeList.txt: Update code to handle recent changes for `freetype.pc`. - - Fixes #1144. - -2022-03-31 Werner Lemberg - - CMakeLists.txt: s/PKG_CONFIG/PKGCONFIG/, s/REQUIRED_/REQUIRES_/. - -2022-03-31 Werner Lemberg - - * Version 2.12.0 released. - ========================== - - Tag sources with `VER-2-12-0'. - - * docs/VERSION.TXT: Add entry for version 2.12.0. - * docs/CHANGES, docs/release: Updated. - - * README, src/base/ftver.rc, builds/windows/vc2010/index.html, - builds/windows/visualc/index.html, builds/windows/visualce/index.html, - builds/wince/vc2005-ce/index.html, builds/wince/vc2008-ce/index.html, - docs/freetype-config.1: s/2.11.1/2.12.0/, s/2111/2120/. - - * include/freetype/freetype.h (FREETYPE_MINOR): Set to 12. - (FREETYPE_PATCH): Set to 0. - - * builds/unix/configure.raw (version_info): Set to 24:2:18. - * CMakeLists.txt (VERSION_MINOR): Set to 12. - (VERSION_PATCH): Set to 0. - - * builds/toplevel.mk (do-dist): Generate `ChangeLog` entries for all commits - since version 2.11.0 (when we stopped creating this file manually). - -2022-03-31 Werner Lemberg - - Fix clang++ warnings. - - * src/base/ftglyph.c (ft_svg_glyph_prepare), src/base/ftobj.c - (ft_glyphslot_init), src/cache/ftccmap.c (ftc_cmap_node_new), - src/cache/ftcimage.c (FTC_INode_New), src/lzw/ftlzw.c (FT_Stream_OpenLZW), - src/psaux/psobjs.c (ps_parser_load_field), src/pshinter/pshglob.c - (psh_globals_new), src/sfnt/ttsvg.c (tt_face_load_svg_doc): Initialize - variables used for allocation. - - * src/sdf/ftsdf.c (split_sdf_conic, split_sdf_cubic): Change type of - `max_splits` to FT_UInt. - (sdf_generate_bounding_box): Add cast. - -2022-03-30 Werner Lemberg - - Whitespace. - -2022-03-30 Werner Lemberg - - [builds] Fix creation of `freetype2.pc` for static-only builds. - - We have to help `pkg-config` since it can't recognize that there is no - shared library installed. - - Note that meson already does exactly the same. - - * builds/unix/configure.raw (REQUIRES_PRIVATE, LIBS_PRIVATE): Rename to... - (PKGCONFIG_REQUIRES_PRIVATE, PKGCONFIG_LIBS_PRIVATE): This. Adjust them - depending on `$enable_shared`. - (PKGCONFIG_REQUIRES, PKGCONFIG_LIBS): New variables. - - * builds/unix/freetype2.in, builds/unix/unix-def.in: Use new and updated - variables. - -2022-03-25 Werner Lemberg - - Add `FT_FACE_FLAG_SBIX_OVERLAY` and `FT_HAS_SBIX_OVERLAY`. - - * include/freetype/freetype.h (FT_FACE_FLAG_SBIX_OVERLAY, - FT_HAS_SBIX_OVERLAY): New macro. - - * src/sfnt/ttsbit.c (tt_face_load_sbit): Handle `FT_FACE_FLAG_SBIX_OVERLAY`. - Remove obsolete tracing message. - -2022-03-25 Werner Lemberg - - Add `FT_PARAM_TAG_IGNORE_SBIX`. - - This is another bit to handle 'sbix' tables as described in the OpenType - specification. - - * include/freetype/ftparams.h (FT_PARAM_TAG_IGNORE_SBIX): New macro. - - * src/sfnt/sfobjc.c (is_apple_sbix): Rename to... - (has_sbix): ... this. - Check for more sbit tables. - Handle `FT_PARAM_TAG_IGNORE_SBIX` to eventually control `has_sbix`. - Only call sbit table loader if an sbit table is present. - -2022-03-25 Werner Lemberg - - [truetype] Fix 'sbix' table handling. - - * src/sfnt/ttsbit.c (tt_face_load_sbix_image): Correct calculation of - 'metrics->horiBearingY'. - Set vertical metrics. - - * src/sfnt/sfobjs.c (sfnt_load_face): Adjust setting of `FT_FACE_FLAG_SBIX`. - Handle metrics of fonts with 'sbix' table. - - * src/truetype/ttgload.c (TT_Load_Glyph): For 'sbix' embedded bitmaps, apply - bbox offset and bearing values of the corresponding glyph in the 'glyf' - table if it exists and has a contour. - - * src/truetype/ttobjs.c (tt_face_init): Handle font with 'sbix' table. - - Fixes issue #998. - -2022-03-25 Werner Lemberg - - Add `FT_FACE_FLAG_SBIX` and `FT_HAS_SBIX`. - - Fonts with 'sbix' tables need special handling by the application. - - * include/freetype/freetype.h (FT_FACE_FLAG_SBIX, FT_HAS_SBIX): New macros. - - * src/sfnt/sfobjs.c (sfnt_load_face): Set `FT_FACE_FLAG_SBIX` if 'sbix' - table is present. - -2022-03-25 Werner Lemberg - - * include/freetype/freetype.h (FT_LOAD_SBITS_ONLY): Tag macro as public. - -2022-03-24 Carlo Bramini - - [builds/windows] Fix WCE support. - - * builds/windows/ftsystem.c [_WIN32_WCE]: Include needed by - _alloca. - -2022-03-24 Steve Lhomme - - [build/windows] Improve UWP support. - - * builds/windows/ftsystem.c [UWP]: Wrap CreateFile2 into CreateFileA. - -2022-03-21 Werner Lemberg - - * src/sfnt/ttkern.c (tt_face_get_kerning): Exit early if no table. - - Fixes #1141. - -2022-03-20 Ben Wagner - - [woff2] Support overlap flag for simple glyphs. - - In the woff2 spec it has been proposed to allow the OVERLAP_SIMPLE flag - to be retained through the woff2 format [0]. - - [0] https://www.w3.org/TR/WOFF2/#glyf_table_format - - * src/sfnt/sfwoff2.h (GLYF_OVERLAP_SIMPLE): add glyf flag. - - * src/sfnt/sfwoff2.c (reconstruct_glyf): parse optionFlags and - overlapSimpleBitmap[]. (store_points): set OVERLAP_SIMPLE on first point's - flag if the overlap bit is set. - -2022-03-19 Werner Lemberg - - [cff] Synchronize `cff_slot_load` with `TT_Load_Glyph`. - - * src/cff/cffgload.c (IS_DEFAULT_INSTANCE): New macro. - (cff_slot_load): Use it. - -2022-03-19 Werner Lemberg - - * src/base/ftobjs.c (FT_Request_Size): Guard `face->size`. - - Fixes #1140. - -2022-03-19 Werner Lemberg - - * src/base/ftobjs.c (ft_open_face_internal): Thinko. - -2022-03-19 Ben Wagner - - [doc] FT_OUTLINE_OVERLAP was introduced in 2.10.3. - - * include/freetype/ftimage.h (FT_OUTLINE_OVERLAP): Document when added. - -2022-03-19 Werner Lemberg - - * src/base/ftobjs.c (ft_open_face_internal): Properly guard `face_index`. - - We must ensure that the cast to `FT_Int` doesn't change the sign. - - Fixes #1139. - -2022-03-17 Werner Lemberg - - [sfnt] Avoid invalid face index. - - Fixes #1138. - - * src/sfnt/sfobjs.c (sfnt_init_face), src/sfnt/sfwoff2.c (woff2_open_font): - Check `face_index` before decrementing. - -2022-03-07 Werner Lemberg - - Documentation, whitespace. - -2022-03-05 Anuj Verma - - [sdf] Fix corner checks and improve performance. - - * src/sdf/ftsdf.c (sdf_generate_bounding_box): Always check for a corner if - two distances (for different curves) are very close. - - (sdf_conic_to): Check whether the conic curve can be treated as a line - (which happens if the control point coincides with any end point). - -2022-03-05 Anuj Verma - - [sdf] Implement deviation-based splitting for Bezier curves. - - * src/sdf/ftsdf.c (split_sdf_cubic, split_sdf_shape): Add checks to figure - out the deviation of Bezier curves and stop splitting if the curve is flat - enough. - - * src/sdf/ftsdfcommon.h (ONE_PIXEL): New macro. - -2022-03-05 Anuj Verma - - * include/freetype/freetype.h: Improve SDF documentation. - -2022-03-03 Ben Wagner - - [sfnt] Fix bounds check in SVG. - - The `SVG_DOCUMENT_LIST_MINIMUM_SIZE` macro is non trivial and not - protected by parentheses. As a result, the expression - `table_size - SVG_DOCUMENT_LIST_MINIMUM_SIZE` expands to - `table_size - 2U + SVG_DOCUMENT_RECORD_SIZE` instead of the expected - `table_size - (2U + SVG_DOCUMENT_RECORD_SIZE)`. This causes an incorrect - bounds check which may lead to reading past the end of the `SVG ` table. - - * src/sfnt/ttsvg.c (tt_face_load_svg): wrap macro definitions in - parentheses. - - Bug: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=45179 - -2022-02-23 Ben Wagner - - [psaux] Full bounds check for OtherSubr 19. - - It is possible for OtherSubr 19 to be invoked when `decoder->buildchar` is - NULL (so that `decoder->len_buildchar` is 0), the `blend` is non-NULL with - `blend->num_designs` set to 2, and the user supplied `idx` to be large (for - example 0xFFFFFFFE). Since these are all `FT_UInt32` the existing bounds - check overflows in a well defined manner, allowing for an invalid call to - `memcpy`. - - In addition, it is possible to call OtherSubr 19 with - `decoder->len_buildchar`, `blend->num_designs`, and `idx` all zero (implying - that `blend->weight_vector` and `decoder->buildchar` are NULL). This passes - the bounds check (it is logically always fine to copy nothing starting at - index zero) but may invoke undefined behavior in `ft_memcpy` if it is backed - by `memcpy`. Calling `memcpy` with either the `src` or `dst` NULL is - undefined behavior (even if `count` is zero). - - * src/psaux/psintrp.c (cf2_interpT2CharString): Correctly check that - `blend->num_designs` can be copied to `decoder->buildchar[idx]`. - Also avoid passing NULL to `ft_memcpy`. - - Bug: https://crbug.com/1299259 - -2022-02-21 suzuki toshiya - - [cmake] Drop the support of CMake 2.x. - - * CMakeLists.txt: Require CMake 3.0 (released on 2014) or newer. - - The issue #1059 reports the difficulty to support both of - CMake 2.x and newer one by single CMakeLists.txt without - the inflation of cmake_policy() workarounds. - - For better maintainability, the support of CMake 2.x is - dropped. - -2022-02-19 Werner Lemberg - - * src/bdf/README: Updated. - -2022-02-19 Werner Lemberg - - * builds/mac/ftmac.c, src/base/ftmac.c: s|FT_MAC_H||. - -2022-02-19 Werner Lemberg - - src/sfnt/ttkern.c (tt_face_load_kern): Micro-optimize. - - A kerning table can be handled by binary search if it has equal entries. - - Fixes #1132. - -2022-02-17 Steve Lhomme - Alexei Podtelezhnikov - - [builds/windows] Add support for legacy UWP builds. - - * builds/windows/ftsystem.c: Add neccessary macro substitutions to - enable strict UWP builds. - - See !141. - -2022-02-16 Werner Lemberg - - ftmm.h: Minor documentation improvement. - -2022-02-13 Alexei Podtelezhnikov - - [pshinter] Tune PSH_STRONG_THRESHOLD_MAXIMUM value. - - Before the change, the hinting engine frequently confused horizontal - stem and serif hints making some stems too thin and some serifs too - thick. The value was tuned using serif fonts from the URW+ base 35 - collection. - - * src/pshinter/pshalgo.c [PSH_STRONG_THRESHOLD_MAXIMUM]: s/30/12/. - -2022-02-12 Werner Lemberg - - t1tables.h: Documentation improvements. - -2022-02-12 Werner Lemberg - - t1tables.h: Whitespace. - -2022-02-11 Werner Lemberg - - [type42] Fix `FT_Get_PS_Font_Private` for this format. - - Since Type42 fonts don't have a 'Private' dictionary, the return value - should be `FT_Err_Invalid_Argument`. - - * src/type42/t42drivr.c (t42_ps_get_font_private): Removed. - (t42_service_ps_info): Updated. - -2022-02-09 Alexei Podtelezhnikov - - [pshinter] Clear reused mask. - - In PS hinter, memory allocations persist until the module is done. - Therefore, we have to clear reused masks. - - * src/pshinter/pshrec.c (ps_mask_table_alloc): Clear reused mask. - -2022-02-09 Alexei Podtelezhnikov - - [pshinter] Use unsigned indices. - - This reduces casting and eliminates some checks. - - * src/pshinter/pshrec.c (ps_mask_test_bit, ps_mask_table_merge, - ps_dimension_add_t1stem, ps_hints_t1stem3): Updated. - (ps_dimension_add_counter): Updated, unnecessary checks removed. - -2022-02-08 Alexei Podtelezhnikov - - [pshinter] Fix mask merging. - - We forgot to update the number of bits when merging a larger mask - into a smaller one. This fix might have rendering effects. - - * src/pshinter/pshrec.c (ps_mask_table_merge): Inherit the number - of bits from a larger mask. There is no need to zero unused bits, - already zeroed during allocation. - (ps_mask_clear_bit): Removed. - (ps_mask_ensure): Minor. - -2022-02-08 Alexei Podtelezhnikov - - [pshinter] Revise the hint table handling. - - * src/pshinter/pshrec.c (ps_hint_table_ensure): Remove redundant size - check; avoid array zeroing because it is fully initialized when used. - (ps_hint_table_alloc): Fix off-by-one comparison and remove another - zeroing of the array elements. - -2022-02-06 Werner Lemberg - - Various minor doc fixes. - -2022-02-06 Alexei Podtelezhnikov - - [builds/windows] Add SVG to to project files. - - * builds/windows/vc2010/freetype.vcxproj: Updated. - * builds/windows/vc2010/freetype.vcxproj.filters: Updated. - * builds/windows/visualc/freetype.vcproj: Updated. - -2022-02-03 Alexei Podtelezhnikov - - * src/winfonts/winfnt.c (fnt_face_get_dll_font): Trace font resources. - -2022-02-02 Eric Jing <@CPUcontrol> - - [cmake] Fix build on MacOS. - - * CMakeLists.txt (CMAKE_OSX_ARCHITECTURES): Update value to fix the building - of a framework on MacOS. - - * builds/mac/freetype-Info.plist (CFBundleExecutable): Make identifier - lowercase only. - - Fixes #1127. - -2022-02-02 Alexei Podtelezhnikov - - [psaux] Revise `PS_Table` handling. - - The old impleemntation was not using `FT_REALLOC`, buing too careful - with the offset rebasing. It shoudl be safe to rely on the base - movements. - - * src/psaux/psobjs.c (reallocate_t1_table, shift_elements): Combine - into... - (ps_table_realloc): ... this function based on `FT_REALLOC`. - (ps_table_done): Simplified. - (ps_table_add): Updated. - -2022-02-02 Alexei Podtelezhnikov - - * src/cache/ftcmru.c (FTC_MruList_New): Explain zeroing. - -2022-01-31 Alexei Podtelezhnikov - - [cache] Partially revert 9870b6c07e2c. - - Fix crashes reported by Werner. - - * src/cache/ftcmru.c (FTC_MruList_New): Use `FT_ALLOC` again. - -2022-01-31 Werner Lemberg - - freetype.h: Minor documentation improvement. - -2022-01-31 Alexei Podtelezhnikov - - [cache] Fix fallouts from edd4fedc5427. - - Reported by Werner. - - * src/cache/ftcimage.c (FTC_INode_New): Always initialize FT_Glyph. - * src/cache/ftcsbits.c (FTC_SNode_New): Always initialize FT_SBit. - -2022-01-31 Alexei Podtelezhnikov - - Clean-up - do not doubt FT_FREE. - - * src/base/ftobjs.c (memory_stream_close): Do not reassign zero - after `FT_FREE`. - * src/sfnt/sfwoff.c (sfnt_stream_close): Ditto. - * src/sfnt/sfwoff2.c (stream_close): Ditto. - * src/psaux/psobjs.c (ps_parser_load_field): Ditto. - * src/truetype/ttgxvar.c (ft_var_load_avar, tt_set_mm_blend, - tt_set_mm_blend): Ditto. - -2022-01-30 Werner Lemberg - - * CMakeLists.txt: Include 'FindPkgConfig' module. - - Older cmake versions don't provide `pkg_check_modules` by default. - - Fixes #1126. - -2022-01-30 Alexei Podtelezhnikov - - * src/psaux/psobjs.c (ps_parser_load_field): Reduce `string` scope. - -2022-01-29 suzuki toshiya - - [cmake] Check the availability of `bzip2.pc'. - - (CMakeLists.txt): Check the availability of `bzip2.pc'. - - * If `bzip2.pc' is available, Requires.private should include - bzip2, but Libs.private should not include -lbz2. - - * If `bzip2.pc' is unavailable, Requires.private cannot include - bzip2, but Libs.private should include -lbz2. - - Fix #897. - -2022-01-28 Werner Lemberg - - * unix/configure.raw: We need 'librsvg' version 2.46.0 or newer. - - Older versions don't have function `rsvg_handle_get_intrinsic_dimensions`. - -2022-01-28 Alexei Podtelezhnikov - - Minor clean-ups. - - * src/base/ftrfork.c (raccess_make_file_name): Do not set error. - * src/sfnt/sfdriver.c (get_win_string, get_apple_string): Ditto. - * src/cff/cffobjs.c (cff_strcpy): Do not confuse about error. - * src/psaux/psobjs.c (ps_table_done): Ditto. - * src/truetype/ttgxvar.c (ft_var_readpacked*, ft_var_load_avar): Ditto. - -2022-01-27 Ben Wagner - - Document `FT_Outline_Decompose` degenerate segments. - - `FT_Outline_Decompose` does not filter out and can return degenerate - segments in an outline. This can be surprising when attemping to - stroke such an outline. Clarify the existing documentation on this - matter to cover all forms of degeneracy (without specifying exactly - how they will be reported), why they might arise, and better explain in - what cases they may be an issue. - - * include/freetype/ftoutlin.h (FT_Outline_Decompose): update - documentation. - - Fixes #952. - -2022-01-27 Anuj Verma - - Fix sdf computation while `USE_SQUARED_DISTANCES`. - - Function `map_fixed_to_sdf` expects spread to be absolute - and not squared. - - * src/sdf/ftbsdf.c (finalize_sdf): Pass absolute spread - while `map_fixed_to_sdf`. - - * src/sdf/ftsdf.c (sdf_generate_bounding_box): Ditto. - -2022-01-27 Tapish Ojha - - [sfnt] Improve sRGB constants. - - * src/base/ftbitmap.c (ft_gray_for_premultiplied_srgb_bgra): Use slightly - more precise values. - - Fixes #1018. - -2022-01-27 Werner Lemberg - - docs/release: Updated. - -2022-01-26 Alexei Podtelezhnikov - - * src/pfr/pfrload.c (pfr_phy_font_load): Use FT_QNEW_ARRAY. - -2022-01-26 Alexei Podtelezhnikov - - * src/sdf/ftsdf.c (sdf_*_new): Use standard macro. - -2022-01-26 Alexei Podtelezhnikov - - [pcf] Delay encoding allocation and avoid its zeroing. - - * src/pcf/pcfread.c (pcf_get_encodings): Refactor and use FT_QNEW_ARRAY. - -2022-01-25 Werner Lemberg - - Aarg, typo. - -2022-01-25 Werner Lemberg - - freetype.h: More updates to `FT_LOAD_COLOR` description. - -2022-01-25 Werner Lemberg - - * builds/unix/configure.raw (FT_DEMO_CFLAGS): Pass `-DHAVE-LIBRSVG`. - - This helps in decoupling library support from `pkg-config` for other - platforms. - -2022-01-25 Werner Lemberg - - Update documentation for `FT_LOAD_COLOR`. - -2022-01-24 Ben Wagner - - [pshinter] Ensure all point flags are initialized. - - Only off curve point flags were fully initialized. - - * src/pshinter/pshalgo.c (psh_glyph_init): always initialize flags. - - Fixes: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=43930 - -2022-01-24 Werner Lemberg - - .mailmap: Typo. - -2022-01-23 Werner Lemberg - - * src/svg/ftsvg.c (ft_svg_property_set): Disallow NULL pointers. - -2022-01-23 Werner Lemberg - - .mailmap: Updated. - -2022-01-23 Werner Lemberg - - More documentation on handling OT-SVG. - -2022-01-23 Werner Lemberg - - * src/svg/ftsvg.c: Rename `svg_hooks` to `svg-hooks` for consistency. - -2022-01-22 Werner Lemberg - - [sfnt] Reject malformed SVG tables. - - * src/sfnt/ttsvg.c (SVG_TABLE_HEADER_SIZE, SVG_DOCUMENT_RECORD_SIZE, - SVG_DOCUMENT_LIST_MINIMUM_SIZE, SVG_MINIMUM_SIZE): New macros. - (tt_face_load_svg): Check offsets. - Check table and record sizes. - - Reported as - - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=43918 - -2022-01-22 Alexei Podtelezhnikov - - * src/psaux/psobjs.c (ps_table_new): Revert to zeroing. - -2022-01-20 Alexei Podtelezhnikov - - [psaux, type1, type42] Avoid annecessary zeroing. - - * src/psaux/psobjs.c (ps_table_new): Use FT_QNEW_ARRAY. - * src/type1/t1load.c (parse_encoding): Ditto. - * src/type42/t42parse.c (t42_parse_encoding): Ditto. - -2022-01-20 Werner Lemberg - - [builds/unix] Handle 'librsvg' for demo programs. - - * builds/unix/configure.raw: Check for 'librsvg'. - (LIB_CLOCK_GETTIME): Don't call `AC_SUBST` on this but on... - (FT_DEMO_CFLAGS, FT_DEMO_LDFLAGS): ... these two new variables. - - * builds/unix/unix-cc.in (LIB_CLOCK_GETTIME): Replaced by... - (FT_DEMO_CFLAGS, FT_DEMO_LDFLAGS): ... these two new variables. - -2022-01-20 Moazin Khatti - - Add 'svg' module for OT-SVG rendering. - - * CMakeLists.txt (BASE_SRCS): Add svg module file. - * meson.build (ft2_public_headers): Add `otsvg.h`. - - * modules.cfg (RASTER_MODULES): Add `svg` module. - - * builds/meson/parse_modules_cfg.py: Add svg module. - - * include/freetype/config/ftmodule.h: Add `ft_svg_renderer_class`. - * include/freetype/fterrdef.h: Add `Invalid_SVG_Document` and - `Missing_SVG_Hooks` error codes. - * include/freetype/internal/fttrace.h: Add tracing for `otsvg`. - * include/freetype/internal/svginterface.h: New file. It adds an interface - to enable the presetting hook from the `base` module. - * include/freetype/otsvg.h (SVG_Lib_Init_Func, SVG_Lib_Free_Func, - SVG_Lib_Render_Func, SVG_Lib_Preset_Slot_Func): New hooks for SVG rendering. - (SVG_RendererHooks): New structure to access them. - - * src/base/ftobjs.c: Include `svginterface.h`. - (ft_glyphslot_preset_bitmap): Add code for presetting the slot for SVG - glyphs. - (ft_add_renderer): Updated. - - * src/svg/*: New files. - -2022-01-20 Moazin Khatti - - Add `FT_Glyph` support for OT-SVG glyphs. - - * include/freetype/ftglyph.h (FT_SvgGlyphRec, FT_SvgGlyph): New structure. - - * src/base/ftglyph.c: Include `otsvg.h`. - (ft_svg_glyph_init, ft_svg_glyph_done, ft_svg_glyph_copy, - ft_svg_glyph_transform, ft_svg_glyph_prepare): New function. - (ft_svg_glyph_class): New class. - (FT_New_Glyph, FT_Glyph_To_Bitmap): Updated to handle OT-SVG glyphs. - * src/base/ftglyph.h: Updated. - -2022-01-20 Moazin Khatti - - [truetype, cff] Add code to load SVG document. - - * src/cff/cffgload.c (cff_slot_load): Add code to load SVG doc. - * src/truetype/ttgload.c (TT_Load_Glyph): Add code to load SVG doc. - -2022-01-20 Moazin Khatti - - Add code to load OT-SVG glyph documents. - - * include/freetype/config/ftheader.h (FT_OTSVG_H): New macro. - * include/freetype/freetype.h (FT_FACE_FLAG_SVG, FT_HAS_SVG): New macros. - (FT_LOAD_SVG_ONLY): New internal macro. - * include/freetype/ftimage.h (FT_Glyph_Format): New enumeration value - `FT_GLYPH_FORMAT_SVG`. - * include/freetype/internal/ftobjs.h (FT_GLYPH_OWN_GZIP_SVG): New macro. - * include/freetype/internal/fttrace.h: Add `ttsvg` for `ttsvg.c`. - * include/freetype/internal/sfnt.h(load_svg, free_svg, load_svg_doc): New - functions. - * include/freetype/internal/tttypes.h (TT_FaceRec): Add `svg` for - the SVG table. - * include/freetype/otsvg.h (FT_SVG_DocumentRec): New structure to hold the - SVG document and other necessary information of an OT-SVG glyph in a glyph - slot. - * include/freetype/tttags.h (TTAG_SVG): New macro. - - * src/base/ftobjs.c: Include `otsvg.h`. - (ft_glyphslot_init): Allocate `FT_SVG_DocumentRec` in `slot->other` - if the SVG table exists. - (ft_glyphslot_clear): Free it upon clean-up if it is a GZIP compressed - glyph. - (ft_glyphslot_done): Free the document data if it is a GZIP compressed - glyph. - (FT_Load_Glyph): Don't auto-hint SVG documents. - - * src/cache/ftcbasic.c (ftc_basic_family_load_glyph): Add support for - FT_GLYPH_FORMAT_SVG. - - * src/sfnt/rules.mk (SFNT_DRV_SRC): Add `ttsvg.c`. - * src/sfnt/sfdriver.c: Include `ttsvg.h`. - (sfnt_interface): Add `tt_face_load_svg`, `tt_face_free_svg` and - `tt_face_load_svg_doc`. - * src/sfnt/sfnt.c: Include `ttsvg.c`. - * src/sfnt/sfobjs.c (sfnt_load_face, sfnt_done_face): Add code to load and - free data of the the SVG table. - * src/sfnt/ttsvg.c: New file, implementing `tt_face_load_svg`, - `tt_face_free_svg` and `tt_face_load_svg_doc`. - * src/sfnt/ttsvg.h: Declarations of the SVG functions in - `ttsvg.c`. - -2022-01-20 Moazin Khatti - - Add flag `FT_CONFIG_OPTION_SVG`. - - This flag is going to be used to conditionally compile support for OT-SVG - glyphs. FreeType will do the parsing and rely on external hooks for - rendering of OT-SVG glyphs. - - * devel/ftoption.h, include/freetype/config/ftoption.h - (FT_CONFIG_OPTION_SVG): New flag. - -2022-01-20 Alexei Podtelezhnikov - - [pshinter] Avoid unnecessary zeroing. - - * src/pshinter/pshalgo.c (psh_hint_table_init,psh_glyph_init, - psh_glyph_interpolate_normal_points): Use FT_QNEW_ARRAY. - -2022-01-20 Alexei Podtelezhnikov - - * include/freetype/freetype.h: Clarify `FT_Size` life cycle. - -2022-01-20 Alexei Podtelezhnikov - - [base] Undefined scale means no scale. - - It might be surprising that FreeType does not have default ppem and - the size has to be set explicitly or face undefined behavior with - undefined variables and errors. This offers an alternative to - missing or zero scale by simply setting FT_LOAD_NO_SCALE. Defined - behavior is bettr than undefined one. - - This is alternative to !132 and discussed in - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=43708 - - * src/base/ftobjs.c (FT_Load_Glyph): Deal with zero scale. - * include/freetype/freetype.h: Document it. - -2022-01-18 Alexei Podtelezhnikov - - * src/autofit/afglobal.c (af_face_globals_new): Reduce zeroing. - - Everything in AF_FaceGlobals is initialized except metrics. Those - are zeroed here and initialized on demand later. - -2022-01-16 Alexei Podtelezhnikov - - [bdf,type1] Avoid unnecessary hash zeroing. - - * src/bdf/bdflib.c (_bdf_parse_start): Use `FT_QALLOC`. - * src/type1/t1load.c (parse_subrs): Use `FT_QNEW`. - -2022-01-16 Ozkan Sezer - - Add Watcom C/C++ calling. - - In the unlikely case the source is built with OpenWatcom's -ec? - switches to enforce a calling convention, the qsort() compare - function must still be set to __watcall. - - * include/freetype/internal/compiler-macros.h (FT_COMPARE_DEF): - Updated. - -2022-01-15 Ben Wagner - - [pshinter] Avoid accessing uninitialized zone. - - The `normal_top.count` may be 0, implying no `normal_top.zones` exist. - The code must not access these (non-existent) `normal_top.zones`. - - * src/pshinter/pshalgo.c (ps_hints_apply): Do not assume that - `normal_top.zones[0]` is initialized. Test `normal_top.count` - before using `normal_top.zones[0]`. Do not rescale if there are no - `zones`. - - Fixes: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=43675 - -2022-01-15 Alexei Podtelezhnikov - - [cache] Avoid unnecessary zeroing. - - * src/cache/ftccmap.c (ftc_cmap_node_new): Use `FT_QNEW`. - * src/cache/ftcimage.c (FTC_INode_New): Ditto. - * src/cache/ftcsbits.c (FTC_SNode_New): Ditto. - -2022-01-15 Ozkan Sezer - - Add Watcom C/C++ support. - - * include/freetype/config/integer-types.h: Make sure `long long` is - used then available. - * include/freetype/internal/ftcalc.h (FT_MSB): Add Watcom C/C++ pragma. - -2022-01-15 Alexei Podtelezhnikov - - * src/sdf/ftbsdf.c (ED): s/near/prox/. - - This works around the Watcom C definition of `near` as restricted - __near. - -2022-01-15 Alexei Podtelezhnikov - - * include/freetype/internal/compiler-macros.h [FT_COMPARE_DEF]: Tighten. - - This works around Watcom C library using __watcall. - -2022-01-14 Alexei Podtelezhnikov - - * src/pshinter/pshglob.c (psh_globals_new): Avoid zeroing. - - This large allocation is followed by careful initialization. Whatever - is missed should be initialized manually. - -2022-01-14 Alexei Podtelezhnikov - - * src/base/fthash.c (hash_insert): Avoid unnecessary zeroing. - -2022-01-14 Alexei Podtelezhnikov - - * src/bdf/bdflib.c (_bdf_parse_glyphs): Remove redundant assignment. - -2022-01-13 Alexei Podtelezhnikov - - * src/lzw/ftlzw.c (FT_Stream_OpenLZW): Avoid unnecessary zeroing. - -2022-01-13 Ben Wagner - - [bzip2] Reset bzip stream on any error. - - According to the bzip documentation it is undefined what will happen if - `BZ2_bzDecompress` is called on a `bz_stream` it has previously returned an - error against. If `BZ2_bzDecompress` returns anything other than `BZ_OK` - the only valid next action is `BZ2_bzDecompressEnd`. - - Reported as - - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=43564 - - * src/bzip2/ftbzip2.c (FT_BZip2FileRec_): Add `reset` to track the need to - reset the stream. - (ft_bzip2_file_init): Initialize `reset` to 0. - (ft_bzip2_file_reset): Set `reset` to 0 after resetting. - (ft_bzip2_file_fill_output): Set `reset` to 1 when `BZ2_bzDecompress` - returns anything other than `BZ_OK`. - -2022-01-12 Werner Lemberg - - .gitlab-ci.yml: Minor comment cleanups. - -2022-01-12 Azamat H. Hackimov - - .gitlab-ci.yml: Add steps to `before_script` to ensure recent CA. - - Fetch current list of valid CAs from Windows Update and manually import them - to trusted datastore. This action is required to make downloads work from - sites that need recent Let's Encrypt ISRG Root X1 certificate. - -2022-01-11 Ben Wagner - - Revert "[bzip2] Avoid use of uninitialized memory." - - This reverts commit d276bcb7f0c02c20d3585b2e5626702df6d140a6. - - The original commit did avoid the use of uninitialized memory. However, - it appears that the original commit is no longer required. The - underlying issue was resolved by a change in freetype2-testing "Build - bzip2 correctly." [0]. Prior to [0] bzip2 was built without msan, so - bzip2 writes were not tracked or considered initialized. Clearing - `buffer` in the original commit allowed msan to see the `buffer` content - initialized once in FreeType code, but msan saw no writes into buffer - from bzip2. With bzip2 now built with msan, the bzip2 writes are - properly instrumented and msan sees the bzip2 writes into the buffer. As - a result the original commit can be safely reverted to allow for better - detection of other uninitialized data scenarios. - - * src/bzip2/ftbzip2.c (FT_Stream_OpenBzip2): Revert to using `FT_QNEW`. - - [0] https://github.com/freetype/freetype2-testing/commit/3c052a837a3c960709227a0d6ddd256e87b88853 - -2022-01-11 Ben Wagner - - [type42] Track how much type42 ttf data is available. - - Currently `T42_Open_Face` eagerly allocates 12 bytes for the ttf header - data which it expects `t42_parse_sfnts` to fill out from /sfnts data. - However, there is no guarantee that `t42_parse_sfnts` will actually be - called while parsing the type42 data as the /sfnts array may be missing - or very short. This is also confusing behavior as it means - `T42_Open_Face` is tightly coupled to the implementation of the very - distant `t42_parse_sfnts` code which requires at least 12 bytes to - already be reserved in `face->ttf_data`. - - `t42_parse_sfnts` itself eagerly updates `face->ttf_size` to track how - much space is reserved for ttf data instead of traking how much data has - actually been written into `face->ttf_data`. It will also act strangely - in the presense of multiple /sfnts arrays. - - * src/type42/t42objs.c (T42_Open_Face): ensure `ttf_data` is initialized - to NULL. Free `ttf_data` on error. - - * src/type42/t42parse.c (t42_parse_sfnts): delay setting `ttf_size` and - set it to the actual number of bytes read. Ensure `ttf_data` is freed - if there are multiple /sfnts arrays or there are any errors. - -2022-01-11 Dominik Röttsches - - [sfnt] Fix limit checks for `COLR` v1 ClipBoxes - - * src/sfnt/ttcolr.c (tt_face_get_color_glyph_clipbox): Fix off-by-one in - limit checks. - -2022-01-11 Werner Lemberg - - Update all copyright notices. - -2022-01-11 Werner Lemberg - - * src/sfnt/ttcolr.c (read_paint): Fix undefined left-shift operation. - - Reported as - - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=43151 - -2022-01-11 Werner Lemberg - - * src/type42/t42objs.c (T42_Open_Face): Avoid use of uninitialized memory. - - Reported as - - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=43508 - -2022-01-11 Werner Lemberg - - .gitlab-ci.yml: Fix typo in previous commit. - -2022-01-11 Werner Lemberg - - .gitlab-ci.yml: Update Windows image. - - The old image produced errors like - - ``` - Downloading zlib patch from - https://wrapdb.mesonbuild.com/v2/zlib_1.2.11-5/get_patch - A fallback URL could be specified using patch_fallback_url key in the wrap file - WrapDB connection failed to - https://wrapdb.mesonbuild.com/v2/zlib_1.2.11-5/get_patch - with error - - ``` - -2022-01-11 Werner Lemberg - - * subprojects/zlib.wrap: Update from upstream. - -2022-01-10 Werner Lemberg - - * src/sfnt/ttcolr.c (tt_face_get_color_glyph_clipbox): Add limit checks. - - Reported as - - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=40716 - -2022-01-10 Werner Lemberg - - [zlib] Don't typedef `ptrdiff_t`. - - While using zlib in 'solo' mode (via the `Z_SOLO` macro), we actually - include some standard header files, making the typedef fail on systems where - the native `ptrdiff_t` type differs. - - Fixes #1124. - - * src/zlib/zutil.h: Comment out definition; it doesn't work on Windows. - - * src/zlib/patches/freetype-zlib.diff: Updated. - -2022-01-10 Werner Lemberg - - [zlib] Some organizational changes. - - We now first apply zlib's `zlib2ansi` script, then FreeType's patch file. - - * src/gzip/README.freetype: Updated. - - * patches/0001-zlib-Fix-zlib-sources-to-compile-for-FreeType.patch: Renamed - to... - * patches/freetype-zlib.diff: This. - Clean up description, then regenerate it as follows: - - - Copy unmodified files from `zlib` repository. - - Run `zlib2ansi` script. - - Run `git diff -R > patches/freetype-zlib.diff.new`. - - Insert patch description of old diff file, then replace old diff with - new diff file. - -2022-01-09 David Turner - - [gzip] Update sources to zlib 1.2.11 - - This can be tested by building with the Unix development build - - make setup devel - make - - or by building the freetype-demos programs with - - meson setup build -Dfreetype2:zlib=internal - meson compile -C out - - and trying to run `ftview` with a `.pcf.gz` font file. - - * src/gzip/ftgzip.c, src/gzip/rules.mk: Update for new zlib sources. Also - remove the temporary fix introduced in commit 6a431038 to work around the - fact that the internal sources were too old. - - * src/gzip/README.freetype: New file describing the origin of the sources - and how they were modified. - - * src/gzip/patches/*: Patch files applied to original sources. - - * src/gzip/*: Updated zlib sources with the patch file(s) from - `src/gzip/patches/` applied, followed by a conversion with zlib's - `zlib2ansi` script. - -2022-01-09 David Turner - - [meson] Change Zlib configuration option. - - * meson_options.txt, meson.build: Change the format of the 'zlib' meson - build configuration option to be a combo with the following choices: - - - none: Do not support gzip-compressed streams at all. - - - internal: Support gzip-compressed streams using the copy of the gzip - sources under `src/gzip/`; this should only be used during development - to ensure these work properly. - - - external: Support gzip-compressed streams using the 'zlib' Meson - subproject, linked as a static library. - - - system: Support gzip-compressed streams using a system-installed version - of zlib. - - - auto: Support gzip-compressed streams using a system-installed version - of zlib, if available, or using the 'zlib' subproject otherwise. This - is the default. - - - disabled: Backward-compatible alias for 'none'. - - - enabled: Backward-compatible alias for 'auto'. - -2022-01-09 Werner Lemberg - - [bzip2] Avoid use of uninitialized memory. - - * src/bzip2/ftbzip2.c (FT_Stream_OpenBzip2): Don't use `FT_QNEW` but - `FT_NEW` for setting up `zip` to avoid uninitialized memory access while - handling malformed PCF fonts later on. - - Fixes - - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=42800 - -2022-01-09 Alexei Podtelezhnikov - - [sfnt] Fix off-by-one error. - - The 0-base index is equal to the number of previosly parsed entries. - It is an error to adjust it by one to get the number truncated by - a stream error. This is probably inconsequential because valid - entries are correctly accounted for. - - * src/sfnt/ttload.c (check_table_dir): Do not adjust the truncated - number of tables. - -2022-01-08 Werner Lemberg - - [sfnt, type42] Correct previous commit. - - Really fix https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=42773. - - * src/sfnt/ttload.c (check_table_dir): Revert change. - - * src/type42/t42.parse.c (t42_parse_sfnts): Don't use `FT_QREALLOC` but - `FT_REALLOC` for setting up `ttf_data` to avoid uninitialized memory access - while handling malformed TrueType fonts later on. - -2022-01-07 Werner Lemberg - - * src/sfnt/ttload.c (check_table_dir): Initialize `table`. - - Reported as - - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=42773 - -2022-01-07 Werner Lemberg - - [sfnt] Avoid 'runtime error: applying zero offset to null pointer'. - - * src/sfnt/ttsbit.c (tt_sbit_decoder_load_byte_aligned): Exit early if - `line` is NULL. - -2022-01-07 Werner Lemberg - - [autofit, pshinter] Use `FT_OFFSET`. - - This avoids - - ``` - runtime error: applying zero offset to null pointer - ``` - - warnings of clang's undefined behaviour sanitizer. - - * src/autofit/afcjk.c (af_cjk_hints_link_segments, - af_cjk_hints_compute_edges, af_cjk_hints_compute_blue_edges, - af_cjk_hint_edges, af_cjk_align_edge_points): Do it. - - * src/autofit/afhints.c (af_glyph_hints_align_edge_points, - af_glyph_hints_align_strong_points): Ditto. - - * src/autofit/aflatin.c (af_latin_metrics_init_widths, - af_latin_hints_link_segments, af_latin_hints_compute_edges, - af_latin_hints_compute_blue_edges, af_latin_hint_edges): Ditto. - - * src/pshinter/pshalgo.c (psh_hint_table_init): Ditto. - -2022-01-06 Ben Wagner - - [truetype] Reset localpoints when varying cvt. - - When iterating over the cvt tuples and reading in the points it is necessary - to set all of `localpoints`, `points`, and `point_count` in all cases. The - existing code did not reset `localpoints` to `NULL` when there were no - private point numbers. If the previous tuple did have private point numbers - and set `localpoints` to `ALL_POINTS` this would not be cleared and the - wrong branch would be taken later, leading to possible heap buffer overflow. - - * src/truetype/ttgxvar.c (tt_face_vary_cvt): Reset `localpoints` to `NULL` - when it isn't valid. - - Fixes: https://crbug.com/1284742 - -2022-01-02 Werner Lemberg - - * builds/unix/configure.raw: Restore `SYSTEM_ZLIB` variable. - - This was accidentally removed with commit 93ebcbd0 almost eight years ago. - -2021-12-27 Alexander Borsuk - - Fix warnings for CMake Unity builds. - - * src/cache/ftcbasic.c (FT_COMPONENT): Undefine macro before redefinition. - * src/smooth/ftgrays.c (TRUNC, FRACT): Ditto. - -2021-12-18 Alexander Borsuk - - Clang-Tidy warning fixes. - - * src/base/ftobjs.c (FT_Get_Paint): Operator has equivalent nested operands. - * src/bdf/bdflib.c (_bdf_add_property): Value stored to `fp` is never read. - * src/sdf/ftbsdf.c (bsdf_init_distance_map): Value stored to `pixel` is - never read. - * src/sdf/ftsdf.c (split_sdf_shape): Value stored to `error` is never read. - -2021-12-17 Eli Schwartz - - * meson.build: Optimize lookup for `python3` program. - - The python module's `find_installation` method is intended to provide - routines for compiling and installing python modules into the - `site-packages` directory. It does a couple of slow things, including run - an introspection command to scrape sysconfig info from the detected - interpreter, which are not needed for the sole use case of invoking the - found installation as an executable. - - Furthermore, when invoked without the name or path of a python binary, it is - hardcoded to always look for `python3` corresponding to the interpreter - meson itself uses to run. So using `find_installation` did not even allow - detecting `python2` as a fallback. - - Instead, switch to a simple `find_program` lookup that finishes as soon as - the program is found. - -2021-12-17 Eli Schwartz - - * builds/meson/*.py: Fix name of python executable for auxiliary scripts. - - The previous change to check the return code of `run_command` invocations - caused the CI to fail. Although most scripts used `python_exe` as the - program command, the script to determine the project version did not. - - But, all scripts used `python` as the shebang, and this is not available on - all systems. Particularly Debian does not provide a `python` command, - though `python3` does exist. This meant that formerly the version number - was lacking, and now the build simply fails. - - Instead, rely on `python3` since it is guaranteed to exist when running - meson, and `python2` is end of life anyway. - -2021-12-17 Eli Schwartz - - * meson.build: Check the return value of `run_command`. - - By default, errors are not checked and a command that is somehow broken will - just capture incorrect output (likely an empty string). Current development - versions of meson now raise a warning for this implicit behavior, and advise - explicitly setting the `check:` keyword argumend to determine whether a - failing return code should be considered an error. - - Since none of the commands in this project are expected to fail, mark them - as required to succeed. - -2021-12-13 Alexei Podtelezhnikov - - [truetype] Upstream the hdmx binary search. - - * src/truetype/ttobjs.h (TT_SizeRec): Add `widthp` for the hdmx - widths. - * src/truetype/ttobjs.c (tt_size_reset): Initialize `widthp` even - though it might never be used by the interpreter. - * src/truetype/ttgload.c (tt_loader_init): Avoid repeated searches - in the hdmx table. - -2021-12-12 Alexei Podtelezhnikov - - [truetype] Reset the IUP-called flags for each subglyph. - - This fixes fall-out from 7809007a5b88b15, where the composite - accents were no longer hinted. - - * src/truetype/ttgload.c (ttloader_init): Move the IUP-called flag - initialization from here... - * src/truetype/ttinterp.c (TT_Run_Context): ... to here. - -2021-12-12 Alexei Podtelezhnikov - - [truetype] Binary search through the `hdmx` records. - - The `hdmx` table is supposed to be sorted by ppem size, which - enables binary search. We also drop the check for the sufficient - length of the record because it is now enforced when the table - is loaded. - - * include/freetype/internal/tttypes.h (TT_FaceRec): Store the `hdmx` - record pointers sorted by ppem instead of ppem's themselves. - * src/truetype/ttpload.c (tt_face_load_hdmx): Prudently sort records. - (tt_face_get_device_metrics): Implement binary search to retrieve - advances. - -2021-12-12 Alexei Podtelezhnikov - - [truetype] Honor FT_LOAD_ADVANCE_ONLY if `hdmx` is usable. - - This simply shortcuts the glyph loading if FT_LOAD_ADVANCE_ONLY - is specified by FT_Get_Advances and the `hdmx` data are located. - Particularly, the classic v35 interpreter or "verified" ClearType - fonts might see 100x speed up in retrieving the hdmx cache. - - * src/truetype/ttgload.c (TT_Load_Glyph): Insert the shortcut. - -2021-12-12 Alexei Podtelezhnikov - - [truetype] Initialize the loader with `hdmx` data. - - The `hdmx` matching can be done before the glyph is loaded. - - * include/freetype/internal/tttypes.h (TT_LoaderRec): Add a field. - * src/truetype/ttgload.c (compute_glyph_metrics): Relocate the `hdmx` - code from here... - (tt_loader_init): ... to here, before the glyph is loaded. - -2021-12-12 Alexei Podtelezhnikov - - [truetype] Relocate subpixel flag setting. - - `TT_RunIns` is too busy to deal with subpixel flags. It is better - to set them in `tt_loader_init`, which is executed before each - glyph program. - - * src/truetype/ttinterp.c (TT_RunIns): Move the flag setting from - here... - * src/truetype/ttgload.c (tt_loader_init): ... to here. - -2021-12-12 Alexei Podtelezhnikov - - [truetype] Limit INSTCTRL appication within specs. - - * src/truetype/ttinterp.c (Ins_INSTCTRL): Limit its global effects - to the CVT program and local effects to the glyph program. - - This also fixes an Infinality buglet. The `ignore_x_mode` should be - locally unset by the glyph program. - -2021-12-09 Ben Wagner - - [bdf] Fix use of uninitialized value. - - In _bdf_readstream if the data contained no newline then the buffer - would continue to grow and uninitialized data read until either the - uninitialized data contained a newline or the buffer reached its - maxiumum size. The assumption was that the line was always too long and - the buffer had been filled, however this case can also happen when there - is not enough data to fill the buffer. - - Correct this by properly setting the cursor to the end of the available - data, which may be different from the end of the buffer. This may still - result in one extra allocation, but only on malformed fonts. - - * src/bdf/bdflib.c (_bfd_readstream): Correctly update cursor. Remove - unread set of `avail`. - - Bug: https://lists.nongnu.org/archive/html/freetype-devel/2021-12/msg00001.html - -2021-12-07 Alexei Podtelezhnikov - - [truetype] Reduce Infinality footprint again. - - * src/truetype/ttgload.c (compute_glyph_metrics): Streamline and - prioritize the Infinality checks to use `hdmx`. - -2021-12-07 Cameron Cawley - - [builds/windows] Guard some non-ancient API. - - We can support Windows 98 and NT 4.0 in principle... - - * builds/windows/ftdebug.c, builds/windows/ftsystem.c: Check for the - ancient SDK using _WIN32_WINDOWS, _WIN32_WCE, or _WIN32_WINNT. - -2021-12-07 Cameron Cawley - - * builds/windows/visualc/freetype.vcproj: Add missing file. - -2021-12-02 Werner Lemberg - - * Version 2.11.1 released. - ========================== - - Tag sources with `VER-2-11-1'. - - * docs/VERSION.TXT: Add entry for version 2.11.1. - * docs/CHANGES, docs/release: Updated. - - * README, src/base/ftver.rc, builds/windows/vc2010/index.html, - builds/windows/visualc/index.html, builds/windows/visualce/index.html, - builds/wince/vc2005-ce/index.html, builds/wince/vc2008-ce/index.html, - docs/freetype-config.1: s/2.11.0/2.11.1/, s/2110/2111/. - - * include/freetype/freetype.h (FREETYPE_PATCH): Set to 1. - - * builds/unix/configure.raw (version_info): Set to 24:1:18. - * CMakeLists.txt (VERSION_PATCH): Set to 1. - - * builds/toplevel.mk (version_tag, CHANGELOG_SCRIPT): New variables. - (do-dist): Generate `ChangeLog` file with all commits since last release. - -2021-11-30 Alexei Podtelezhnikov - - [builds/windows] Improve debugging. - - * builds/windows/ftdebug.c (FT_Message, FT_Panic): Buffer output - and call `OutputDebugStringA` only if `IsDebuggerPresent`. - [_WIN32_WCE] (OutputDebugStringA): Implement the missing API. - -2021-11-29 Seigo Nonaka - - * src/base/ftobjs.c (FT_Request_Metrics): Fix build warning on Android. - - Use casts since `FT_USHORT_MAX` is unsigned short in bionic (libc used in - Android). - -2021-11-28 Alexei Podtelezhnikov - - * builds/windows/vc2010/freetype.vcxproj (DlgCopy): Minor tweak. - -2021-11-26 Alexei Podtelezhnikov - - * src/truetype/ttpload.c (tt_face_load_hdmx): Added comments. - -2021-11-26 Alexei Podtelezhnikov - - [truetype] Quietly reject out-of-spec `hdmx` tables. - - The `hdmx` table is optional and can be safely rejected without - an error if it does not follow specifications. The record size - must be equal to the number of glyphs + 2 + 32-bit padding. - - * src/truetype/ttpload.c (tt_face_load_hdmx): Thoroughly check - the record size and improve tracing. - -2021-11-23 Alexei Podtelezhnikov - - [truetype] Partly revert 5b626281. - - Fixes #1118. - - * src/truetype/ttpload.c (tt_face_load_hdmx): Do not assume that - `record_size` is rounded even though the records are padded. - -2021-11-23 Alexei Podtelezhnikov - - * builds/windows/vc2010/freetype.vcxproj (DlgCopy): Use transforms. - -2021-11-22 Werner Lemberg - - Update `CHANGES` files, other minor whitespace and documentation issues. - -2021-11-21 Werner Lemberg - - formats.txt: Add info about WOFF and WOFF2. - -2021-11-21 Werner Lemberg - - meson.build: Initialize `common_ldflags`. - -2021-11-21 Lukas Oberhuber <@lukaso> - - * meson.build: Fix compatibility version on MacOS. - - Fixes #1117. - -2021-11-21 Werner Lemberg - - * src/truetype/ttinterp.c (Ins_MD): Avoid `FT_ABS`. - - Reported as - - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=38562 - -2021-11-20 Alexei Podtelezhnikov - - * include/freetype/fttypes.h (FT_MAKE_TAG): Remove the same casting. - -2021-11-20 Werner Lemberg - - [gxvalid] Fix minor compilation warning. - - * src/gxvalid/gxvmort5.c (gxv_mort_subtable_type5_subtable_setup): Declare - as static. - -2021-11-20 Werner Lemberg - - [smooth] Fix stand-alone compilation. - - * src/smooth/ftgrays.c (FT_Trace_Enable, FT_Trace_Disable)[STANDALONE_]: - Define. - -2021-11-20 Werner Lemberg - - Avoid undefined left-shifts. - - We really have to use double casts to avoid issues with C's and C++'s - signedness propagation rules in implicit casts. - - Reported as - - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=41178 - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=41182 - - * include/freetype/config/public-macros.h (FT_STATIC_CAST, - FT_REINTERPRET_CAST): Modify macro to take two arguments. - Update all callers. - (FT_STATIC_BYTE_CAST): New macro. - - * include/freetype/freetype.h (FT_ENC_TAG): Use `FT_STATIC_BYTE_CAST`. - * include/freetype/ftimage.h (FT_IMAGE_TAG): Ditto. - * include/freetype/fttypes.h (FT_MAKE_TAG): Ditto. - Use `FT_Tag` for casting. - - * src/ftraster/ftmisc.h (FT_MAKE_TAG): Removed, no longer needed. - (FT_STATIC_BYTE_CAST): New macro. - - * src/smooth/ftgrays.c (FT_STATIC_CAST): Replace with... - (FT_STATIC_BYTE_CAST): ... this. - -2021-11-18 Werner Lemberg - - Provide C++ versions for public macros with casts. - - Many FreeType clients use C++. However `g++ -Wold-style-cast` warns for - macros with C-style casts even for system header files; this also affects - directories included with `-isystem`. While this could be seen as a problem - with g++, the problem is more a philosophical one: Over the time, C and C++ - diverged more and more, and some features of C are no longer the 'right' - solution in C++. - - * include/freetype/config/public-macros.h (FT_STATIC_CAST, - FT_REINTERPRET_CAST): New macros. - - * include/freetype/freetype.h (FT_ENC_TAG, FT_LOAD_TARGET_, - FT_LOAD_TARGET_MODE): Use `FT_STATIC_CAST`. - Correctly handle negative 'signed char' input. - * include/freetype/ftimage.h (FT_IMAGE_TAG): Ditto. - * include/freetype/fttypes.h (FT_MAKE_TAG, FT_BOOL): Ditto. - * include/freetype/ftmodapi.h (FT_FACE_DRIVER_NAME): Use - `FT_REINTERPRET_CAST`. - - * src/smooth/ftgrays.c (FT_STATIC_CAST)[STANDALONE_]: New macro. - [!STANDALONE]: Include `FT_CONFIG_CONFIG_H`. - - Fixes #1116. - -2021-11-16 Werner Lemberg - - Fix clang++ warnings. - - * src/*: Initialize some variables to NULL. - -2021-11-16 Werner Lemberg - - [truetype] Updates for the forthcoming OpenType 1.9 standard (2/2). - - * src/truetype/ttgxvar.c (ft_var_load_item_variation_store): - s/shortDeltaCount/wordDeltaCount/ (as done in the specification, too). - Recognize new format and reject it for now. - -2021-11-16 Werner Lemberg - - [truetype] Updates for the forthcoming OpenType 1.9 standard (1/2). - - This is in preparation for implementing `DeltaSetIndexMap` format 1, which - is used by `COLR` v1 tables, and which allows 32bit indices. - - https://docs.microsoft.com/en-us/typography/opentype/otspec190/delta/otvarcommonformats_delta.html - - * src/truetype/ttgxvar.h (GX_DeltaSetIdxMapRec): Change type of `mapCount` - to `FT_ULong`. - - * src/truetype/ttgxvar.c (ft_var_load_delta_set_index_mapping): Add argument - for passing the table size; update caller. - Implement new format. - -2021-11-14 Werner Lemberg - - Fix clang warnings. - - * src/gxvalid/gxvcmmn.h (GXV_SET_ERR_IF_PARANOID): Use 'do' block. - * src/gxvalid/gxvmod.c (GXV_TABLE_LOAD, GXV_TABLE_VALIDATE): Ditto. - - * src/smooth/ftgrays.c (gray_convert_glyph): Add cast. - - * src/type1/t1gload.c (T1_Parse_Glyph_And_Get_Char_String): Remove cast. - * src/type1/t1load.c (read_binay_data): Use `FT_ULong` for `size` parameter. - (parse_subrs, parse_charstrings, parse_dict): Ditto; also add some casts. - -2021-11-13 Dominik Röttsches - - [sfnt] Avoid undefined shifts in `COLR` v1 paint parsing - - * src/sfnt/ttcolr.c (read_paint, tt_face_get_paint): Tighten shift - behavior by using multiplication, mostly using macros from ftcalc.h. - - Fixes: https://bugs.chromium.org/p/chromium/issues/detail?id=1269168 - -2021-11-13 Alexei Podtelezhnikov - - [builds/windows] Improve `DlgCopy` target. - - Fixes #1113. - - * builds/windows/vc2010/freetype.vcxproj: Run `DlgCopy` conditionally - and decouple it from `Build`. - -2021-11-12 Alexei Podtelezhnikov - - Explicitly define `FT_MSB` for Clang. - - * include/freetype/internal/ftcalc.h [__clang__] (FT_MSB): Updated. - -2021-11-10 Alexei Podtelezhnikov - - * src/truetype/ttgxvar.c (ft_var_to_normalized): Edge optimization. - -2021-11-10 Alexei Podtelezhnikov - - Additional `FT_MSB` macro definitions. - - Better macros for Windoes CE and ARM in general, based on !109 - from metarutaiga. - - * include/freetype/internal/ftcalc.h [_MSC_VER] (FT_MSB): Updated. - -2021-11-09 Alexei Podtelezhnikov - - [build/windows] Remove logging from default debug configurations. - - DLG is rather costly for performance and should be used judiciously. - This removes it from the default configurations but gives an example - how to enable it using the `UserDefines` property. - - * builds/windows/vc2010/freetype.vcxproj: Hide FT_DEBUG_LOGGING. - -2021-11-08 Werner Lemberg - - * src/sfnt/sfobjs.c (sfnt_open_font): Fix typo. - -2021-11-08 Werner Lemberg - - * src/gxvalid.*, src/otvalid.*: Fix `-Wformat` warnings. - -2021-11-08 Werner Lemberg - - [pshinter] Fix C++ compilation. - - * src/pshinter/pshalgo.c (psh_compute_dir): Fix type of `result`. - (psh_hint_table_find_strong_points): Add cast. - -2021-11-08 Werner Lemberg - - [sfnt] Reduce footprint if WOFF and WOFF2 support is not needed. - - Based on a patch from metarutaiga (MR !106). The gist of this commit is - that it doesn't make sense to support WOFF without compression (which would - be only possible in WOFF 1.0 anyway). - - * src/sfnt/sfobjs.c (sfnt_open_font): Guard WOFF code with - `FT_CONFIG_OPTION_USE_ZLIB` block. - Guard WOFF2 code with `FT_CONFIG_OPTION_USE_BROTLI` block. - - * src/sfnt/sfwoff.c, src/sfnt/sfwoff.h: Guard files with - `FT_CONFIG_OPTION_USE_ZLIB` blocks, not parts of the code. - - * src/sfnt/sfwoff2.c, src/sfnt/sfwoff2.h, src/sfnt/woff2tags.c, - src/sfnt/woff2tags.h: Guard files with `FT_CONFIG_OPTION_USE_BROTLI` blocks, - not parts of the code. - - Fixes #1111. - -2021-11-08 Werner Lemberg - - [truetype] Make trickyness checks depend on TT_USE_BYTECODE_INTERPRETER. - - Based on a patch from metarutaiga (MR !106). - - * src/truetype/ttobjs.c (tt_skip_pdffont_random_tag, - tt_check_trickyness_family, tt_synth_sfnt_checksum, tt_get_sfnt_checksum, - tt_check_trickyness_sfnt_ids, tt_check_trickyness): Put functions into a - `TT_USE_BYTECODE_INTERPRETER` block. - (tt_face_init): Put trickyness checks into a `TT_USE_BYTECODE_INTERPRETER` - block. - - Fixes #1111. - -2021-11-08 Alexei Podtelezhnikov - - * src/sfnt/ttload.c (tt_face_load_gasp): Fix a type mismatch warning. - -2021-11-07 Alexei Podtelezhnikov - - [dlg] Define DLG_STATIC explicitly. - - DLG_STATIC is intended to disable Windows DLL linking attributes. - It does not hurt to define it explicitly when we wrap DLG code. - This fixes tons of LNK4286 and C4273 warnings from MSVC if we - forget to define DLG_STATIC as a compiler option. - - * builds/windows/vc2010/freetype.vcxproj: Remove DLG_STATIC option. - * src/dlg/dlgwrap.c [FT_DEBUG_LOGGING]: Define DLG_STATIC. - * include/freetype/internal/ftdebug.h [FT_DEBUG_LOGGING]: Ditto. - -2021-11-07 Alexei Podtelezhnikov - - [dlg] Lighten up the inclusions. - - The DLG wrapper needs to know if FT_DEBUG_LOGGING is defined in - `ftoption.h`. It does not need entire FreeType. - - * src/dlg/dlgwrap.c: Include FT_CONFIG_OPTIONS_H directly. - -2021-11-07 Alexei Podtelezhnikov - - [truetype] Avoid some memory zeroing in variations. - - * src/truetype/ttgxvar.c (ft_var_readpackeddeltas, ft_var_load_avar, - ft_var_load_item_variation_store, ft_var_load_gvar): Use FT_QNEW_ARRAY - if memory immediately initialized or discarded otherwise. - -2021-11-05 Jany Belluz - - [truetype] Fix handling of packed deltas in Variation Fonts. - - * src/truetype/ttgxvar (ft_var_readpackeddeltas): Don't expect the number of - bytes used to encode the deltas to be higher than the number of encoded - values. The specification allows a very compact encoding; for example, a - list of 200 zeros can be encoded with just a couple of bytes. - - We now count the consumed bytes to make sure to not read more than expected. - -2021-11-04 Jany Belluz - - [truetype] Fix CVAR handling of tuples for all points. - - * src/truetype/ttgxvar (tt_face_vary_cvt): Function - `ft_var_readpackedpoints`, when it returns `ALL_POINTS`, also sets - `point_count` to value 0. However, the CVAR code was incorrectly expecting - that `point_count` would be set to match the length of the CVT table. - -2021-11-04 Jany Belluz - - * src/truetype/ttgxvar.c: Fix typos in macros that guard CVAR code. - -2021-11-04 Alexei Podtelezhnikov - - * docs/INSTALL: Mention Meson and MSBuild more prominently. - -2021-11-03 Gabor Kertesz - - [libpng] Update Meson wrap for win-arm64 - - 1.6.37-5 released patches for win-arm64 to successfully build - libpng with Meson: - https://github.com/mesonbuild/wrapdb/pull/205 - https://github.com/mesonbuild/wrapdb/pull/216 - - Updated by the following command: - meson wrap update libpng - - Tested on win-arm64 and x64. - -2021-11-03 Dominik Röttsches - - [sfnt] Clarify `COLR` v1 FT_Paint* format representations - - * include/freetype/ftcolor.h (FT_PaintLinearGradient, - FT_PaintRadialGradient, FT_PaintSweepGradient, FT_PaintTransform, - FT_PaintTranslate, FT_PaintScale, FT_PaintRotate, FT_PaintSkew): Clarify - 16.16 fixed point representation of struct fields. - * src/sfnt/ttcolr.c (read_paint): Shift coordinates for - FT_PaintLinearGradient, FT_PaintRadialGradient, FT_PaintSweepGradient - accordingly. - - Fixes: https://gitlab.freedesktop.org/freetype/freetype/-/issues/1110 - -2021-11-03 Alexei Podtelezhnikov - - [builds/windows] Let MSBuild handle DLG copy. - - * builds/windows/vc2010/freetype.vcxproj: Specify DlgCopy target. - * builds/windows/vc2010/script.bat: Deleted. - -2021-10-29 Alexei Podtelezhnikov - - * src/truetype/ttgload.c (load_truetype_glyph): Fix MSVC warning C4312. - -2021-10-29 Alexei Podtelezhnikov - - [builds/windows] Separate MSVC linker and librarian. - - MSVC uses LIB for static and LINK for dynamic libraries. They are - related but the former has much smaller set of options. - - * builds/windows/vc2010/freetype.vcxproj: Updated. - -2021-10-29 Alexei Podtelezhnikov - - [builds/windows] Revise MSVC linking optimizations. - - * builds/windows/vc2010/freetype.vcxproj: Optimize DLL linking only. - * builds/windows/visualc/freetype.dsp: Ditto. - * builds/windows/visualc/freetype.vcproj: Ditto. - -2021-10-28 Alexei Podtelezhnikov - - [woff] Optimize table tagging. - - * include/freetype/internal/wofftypes.h (WOFF_TableRec): Use - 32-bit tag. - * src/sfnt/sfwoff.c (woff_open_font): Use 32-bit tag. - -2021-10-28 Alexei Podtelezhnikov - - [woff2] Optimize table tagging. - - Fixes #1107. - - * include/freetype/internal/wofftypes.h (WOFF2_TableRec): Use - 32-bit tag. - * src/sfnt/sfwoff2.c (compare_tags, find_table, woff2_open_font): - Use 32-bit tag. - * src/sfnt/woff2tags.[ch] (woff2_known_tags): Use static storage and - return 32-bit tag. - -2021-10-26 Werner Lemberg - - Formatting. - -2021-10-26 Ben Wagner - - [mm] Tolerate missing Blend dictionary entries - - In a Multiple Master font, the Blend dictionary must contain valid - Private, FontInfo, and FontBBox. The current code will error if any of - these are present and invalid, but will not error and will provide - uninitialized data if the Blend dictionary exists but does not contain - one of these entries. This change reverts to the older behavior of - treating any missing entries as containing all zero data and not - returning an error. - - In the future it may be best to keep track of when these are actually - initialized and error if they are not. - - * src/type1/t1load.c (t1_allocate_blend): Zero initiailize. - -2021-10-26 Alexei Podtelezhnikov - - [builds/windows] Add MSVC linker optimazations. - - We continue to build static libraries with statically linked C run- - time and add options to optimize references. - - * builds/windows/vc2010/freetype.vcxproj: Sort entries, add options. - -2021-10-23 Alexei Podtelezhnikov - - * builds/windows/vc2010/freetype.vcxproj: Use MachineARM64. - -2021-10-22 Alexei Podtelezhnikov - - [builds/windows] Prioritize x64. - - * builds/windows/vc2010/freetype.sln: Sort entries. - -2021-10-22 Gabor Kertesz - - [builds/windows] Add ARM64 platform. - - * builds/windows/vc2010/freetype.sln: Updated - * builds/windows/vc2010/freetype.vcxproj: Updated. - * builds/windows/vc2010/freetype.vcxproj.filters: Minor fix. - -2021-10-21 Ben Wagner - - [mm] Delay setting blend weight and design position. - - Previously the `blend->weight_vector`, `blend->default_weight_vector`, - and `blend->design_pos` were set early to allocated but uninitialized - memory under the assumption that the memory would eventually be - initialized. However, it is possible that some of the required - keywords may not actually be present, leaving the memory uninitialized. - This is different from a present but invalid table, which would produce - an error. - - Reported as - https://bugs.chromium.org/p/chromium/issues/detail?id=1261762 - - * src/type1/t1load.c (t1_allocate_blend): Remove early allocation and - initialization. - (parse_blend_design_positions, parse_weight_vector): Parse into local - and assign to blend if valid. - (T1_Open_Face): Check that if a blend exists that it has the weight - vector and design positions. - -2021-10-21 Ben Wagner - - [cff] Commit vstore data and regions on allocation. - - The vstore->regionCount and vstore->dataCount were read directly - from the data. However, vstore->varRegionList and vstore->varData - would still contain uninitialized entries with uninitialized - pointers in the event of an error, leading to issues when attempting - to clean up. - - Reportd as - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=40104 - - * src/cff/cffload.c (cff_vstore_load): Read the region and data counts - into locals and update the vstore counts immediately after each entry - becomes free-able. - -2021-10-20 Ben Wagner - - [sfnt] Delay setting gasp ranges and count until computed. - - Previously, the gasp.numRanges was set and gasp.gaspRanges was - allocated and assigned before a possible early exit if the frame could - not be entered. It is also possible that the gaspRanges allocation - could fail but the numRanges still be set to non-zero. In such cases - an error would be returned, but the face would have a gasp in an - inconsistent state which may still be accessed. - - Reported as - https://bugs.chromium.org/p/chromium/issues/detail?id=1261450 - - * src/sfnt/ttload.c (tt_face_load_gasp): Delay setting gasp.numRanges - and gasp.gaspRanges until after the ranges are initialized. - -2021-10-20 Ben Wagner - - [sfnt] Delay setting names and langTags until computed. - - Previously, the table->names and table->langTags fields were created - pointing to uninitialized memory and an early exit could happen if the - frame could not be entered. The caller would then be unable to properly - dispose of the memory as the string fields had not been initialized. - - Reported as - https://bugs.chromium.org/p/chromium/issues/detail?id=1261343 - - * src/sfnt/ttload.c (tt_face_load_name): delay setting table->langTags - and table->names until after the memory they will point to is fully - initialized. - -2021-10-20 Alexei Podtelezhnikov - - * tests/issue-1063/main.c: s/PATH_MAX/FILENAME_MAX/. - - Closes !97 for Windows by using a standard macro. - -2021-10-19 Werner Lemberg - - [bdf, cid, pfr, winfonts] Improve rejection of other font formats. - - This is mainly for better diagnostics of malformed fonts. - - * src/bdf/bdflib.c (_bfd_readstream): Stop font format testing if the first - input line is too long or doesn't end with `\r` or `\n`. - - * src/cid/cidparse.c (cid_parser_new): Don't handle too short input as an - error but as an unknown format. - - * src/pfr/pfrobjs.c (pfr_face_init): Ditto. - - * src/winfonts/winfnt.c (fnt_font_load, fnt_face_get_dll_font): Ditto. - -2021-10-19 Alexei Podtelezhnikov - - [pcf] Zero out the allocated properties. - - Fallout reported as - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=40033 - - * src/pcf/pcfread.c (pcf_get_properties): Use FT_NEW_ARRAY and zero - out `properties` in case of failure. - -2021-10-18 Werner Lemberg - - configure: Use string comparison for directory inodes. - - Inode values might be larger than integers supported by the shell. - - Fixes #1105. - -2021-10-17 Alexei Podtelezhnikov - - * src/sfnt/ttload.c (tt_face_load_name): NULL-initialize langTag. - - Another attempt to fix fallout reported as - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=40024 - -2021-10-17 Alexei Podtelezhnikov - - [bdf] Fix up user properties. - - Fallout reported as - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=40027 - - * src/bdf/bdflib.c (_bdf_add_property): Cosmetic NULL. - (bdf_create_property): Limit allocations to customary signed - FT_Long and NULL-initialize unused storage. - (bdf_free_font): Do not free unused storage. - -2021-10-17 Alexei Podtelezhnikov - - * src/sfnt/ttload.c (tt_face_load_name): Accounting fix. - - Fallout reported as - https://crbug.com/40024 - -2021-10-16 Ben Wagner - - Fix typos in memory macros. - - FT_QNEW_ARRAY and FT_QRENEW_ARRAY were using the non-Q - FT_MEM_NEW_ARRAY and FT_MEM_RENEW_ARRAY. Change these to use the Q - versions. Also fix the one issue discovered in tt_face_load_name - where table->names is created with FT_QNEW_ARRAY but the extra - string member is not initialized to NULL. - - * include/freetype/internal/ftmemory.h (FT_Q(RE)NEW_ARRAY): - Use FT_MEM_Q(RE)NEW_ARRAY as needed. - - * src/sfnt/ttload.c (tt_face_load_name): Initialize `entry->string`. - -2021-10-15 Ben Wagner - - [truetype] Reload context after re-executing `prep`. - - When a different hinting mode from the current is selected, the `prep` table - must be re-executed with the new mode. After this happens the context must - be re-loaded in preparation for the glyph program to be run. - - Fixes #1104. - - * truetype/ttgload.c (tt_loader_init): Add call to `TT_Load_Context`. - -2021-10-15 Werner Lemberg - - [truetype] Minor documentation improvements. - -2021-10-14 Anurag Thakur - - Add clang build to linux CI - -2021-10-12 Anurag Thakur - - CI: Add macOS CI, including a clang build - -2021-10-12 Alexei Podtelezhnikov - - * src/cid/cidload.c (parse_fd_array): Protect against trancation. - -2021-10-12 Alexei Podtelezhnikov - - [type1] Revert to signed size for binary data. - - Recently introduced and reported as - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=39838 - - * src/type1/t1load.c (read_binary_data): Reject negative size. - (parse_subrs, parse_charstrings): Use customary signed size. - -2021-10-11 Alexei Podtelezhnikov - - [psaux] Signedness revisions. - - Unsigned indexes are easier to check. - - * src/psaux/cffdecode.c (cff_decoder_parse_charstrings): Updated. - * src/psaux/psintrp.c (cf2_interpT2CharString): Ditto. - * src/psaux/t1decode.c (t1_decoder_parse_charstrings): Ditto. - * src/type1/t1load.c (read_binary_data): Ditto. - -2021-10-11 Alexei Podtelezhnikov - - [cid] Signedness revisions. - - Unsigned checks are simpler. - - * include/freetype/t1tables.h (CID_FaceInfoRec): Change to unsignd - `num_dicts`. - * src/cid/cidparse.h (CID_Parser): Change to unsigned `num_dict`. - - * src/cid/cidgload.c (cid_load_glyph): Updated. - * src/cid/cidload.c (cid_load_keyword, parse_fd_array, - parse_expansion_factor, parse_font_name, cid_read_subrs, - cid_face_open): Updated. - * src/cid/cidobjs.c (cid_face_done): Updated. - * src/cid/cidparse.c (cid_parser_new): Updated. - -2021-10-09 Alexei Podtelezhnikov - - * src/cid/cidload.c (cid_face_open): Streamline CIDCount check. - -2021-10-08 Alexei Podtelezhnikov - - * src/cid/cidload.c (cid_face_open): Streamline SubrCount check. - -2021-10-08 Alexei Podtelezhnikov - - * src/cid/cidgload.c (cid_load_glyph): Fortify incremental loading. - -2021-10-08 Alexei Podtelezhnikov - - Signedness revisions. - - This eliminates explicit casting by switching to unsigned fields. - The revisions mostly impact the handling of CID fonts. - - * include/freetype/fttypes.h (FT_Data): Change to unsigned `length`. - * include/freetype/t1tables.h (CID_FaceDictRec): Ditto for `sd_bytes`. - (CID_FaceInfoRec): Ditto for `gd_bytes` and `gd_bytes`. - * include/freetype/internal/tttypes.h (TT_LoaderRec): Ditto for - `byte_len`. - - * src/cid/cidgload.c (cid_load_glyph): Updated. - * src/cid/cidload.h (cid_get_offset): Update argument. - * src/cid/cidload.c (cid_get_offset, cid_read_subrs, cid_face_open): - Updated. - * src/cff/cffgload.c (cff_get_glyph_data, cff_free_glyph_data): - Updated. - * src/psaux/psft.c (cf2_getT1SeacComponent): Updated. - * src/truetype/ttgload.c (TT_Process_Composite_Glyph, - load_truetype_glyph): Updated. - -2021-10-07 Jan Alexander Steffens (heftig) - - meson.build (gen_docs): Use `current_source_dir` instead of `source_root`. - - These two are not equal when FreeType is used as a subproject, such as in - `freetype-demos`. In that case, `source_root` points at the root project, - causing the docs build to fail. - -2021-10-05 Alexei Podtelezhnikov - - * src/smooth/ftgrays.c (FT_DIV_MOD): Limit the ARM workaround. - -2021-10-05 Alexei Podtelezhnikov - - [builds/unix, builds/vms] Standardize `mmap` failure. - - * builds/unix/ftsystem.c (FT_Stream_Open): Check for MAP_FAILED. - * builds/vms/ftsystem.c (FT_Stream_Open): Ditto. - - This should cover https://savannah.nongnu.org/patch/?5909 as well. - -2021-10-05 Hugh McMaster - - autogen.sh: Only copy submodules if building from a git branch. - - `autogen.sh` fails if building from a standard source tarball. Firstly, git - expects to be called in a git repository, then `copy_submodule_files` - blindly attempts to copy files. - - Debian, Ubuntu, Linux Mint, and other derivatives all run `autogen.sh` - before compiling to regenerate build files. - - This patch ensures that various git commands are only called and 'dlg' files - are only copied if `autogen.sh` is called from a git repository. - -2021-10-05 Alexei Podtelezhnikov - - * include/freetype/internal/ftgloadr.h: Add missing header. - - Noticed by Jouk Jansen. - -2021-10-05 Alexei Podtelezhnikov - - [pshinter] Additional clean-ups. - - * src/pshinter/pshalgo.h (psh_hint_table_find_strong_points): Streamline code. - * src/pshinter/pshalgo.h (PSH_Glyph): Remove unused fields. - -2021-10-04 Alexei Podtelezhnikov - - [pshinter] More convenient direction definition. - - It is easier to check directions using flags than integer values. - - * src/pshinter/pshalgo.h (PSH_Dir): Redefine directions. - (PSH_PointRec): Use them as an enum type. - - * src/pshinter/pshalgo.c (psh_compute_dir): Modify return type. - (psh_glyph_init, psh_hint_table_find_strong_points, - psh_glyph_find_blue_points): Update users. - -2021-10-04 Alexei Podtelezhnikov - - [pshinter] Remove unnecessary check. - - * src/pshinter/pshalgo.c (psh_hint_table_find_strong_points): Do not - check if direction is defined before checking how. - -2021-10-02 AnuthaDev - - CI: Hardcode meson version to fix build failure on windows - -2021-10-01 Alexei Podtelezhnikov - - Additional `FT_MSB` macro definitions. - - * include/freetype/internal/ftcalc.h [__DECC,_CRAYC]: Use builtins - and intrinsics. - -2021-10-01 Alexei Podtelezhnikov - - * src/autofit/afhints.c (af_glyph_hints_reload): Decrease casting. - -2021-09-30 Alexei Podtelezhnikov - - * src/tools/apinames.c: Facilitate OpenVMS linker options. - -2021-09-29 Alexei Podtelezhnikov - - * src/winfonts/winfnt.c (FNT_Face_Init): Correct reallocation. - -2021-09-25 Alexei Podtelezhnikov - - [builds/unix] Do not use autoconf SIZEOF. - - * builds/unix/ftconfig.h.in [FT_USE_AUTOCONF_SIZEOF_TYPES]: Removed. - * builds/unix/configure.raw: Remove AC_CHECK_SIZEOF and update. - - After this commit, autoconf builds will fully rely on - rather than falling back on it if AC_CHECK_SIZEOF failed for some - reason. There is a risk that misconfigured cross-compilation might - have wrong headers. Note that Meson and CMake builds always relied on - for sizes and availability of integer types. - -2021-09-25 Alexei Podtelezhnikov - - Propagate sign when reading OFF3. - - Signed 24-bit values are extremely rare. FreeType only reads them in - PFR fonts with bitmap strikes conditionally. They have not been seen - in the known fonts. That is why this bug could never be discovered. - `FT_FRAME_OFF3` propagates sign correctly. - - * include/freetype/internal/ftstream.h (FT_PEEK_OFF3, FT_PEEK_OFF3_LE): - Propagate sign into 32-bit value. - (FT_GET_OFF3, FT_READ_OFF3): Needed fixing but removed as unused. - -2021-09-25 Alexei Podtelezhnikov - - [bdf] Simplify comment collection or lack thereof. - - BDF comments are neither actually collected nor retrieved. There is - no need to be fancy with delimiters. - - * src/bdf/bdflib.c (_add_bdf_comment): Delimit comments with zeros... - (bdf_load_font): ...and do not null-terminate comments additionally. - (_bdf_parse_glyphs): Check if comments are kept, which they are not. - (_bdf_parse_start): Minor clean up. - -2021-09-24 Alexei Podtelezhnikov - - Use NULL for pointers only. - - * src/bdf/bdflib.c (*): Code changes. - * include/freetype/freetype.h: Comments only. - * src/cff/cffload.c, src/cff/cffobjs.c: Ditto. - * src/winfonts/winfnt.c: Ditto. - -2021-09-23 Werner Lemberg - - Minor documentation fixes and improvements. - -2021-09-23 Alexei Podtelezhnikov - - Reference `fopen` in the docs. - -2021-09-23 Alexei Podtelezhnikov - - [bdf, pcf] Minor optimization. - - * src/pcf/pcfread.c (pcf_load_font): Do not call `FT_MulDiv` for a - small job. - * src/bdf/bdfdrivr.c (BDF_Face_Init): Ditto. - * src/bdf/bdflib.c (_bdf_parse_glyphs): Fix a comment. - -2021-09-22 Alexei Podtelezhnikov - - [base] Initialize stream memory earlier. - - With Windows memory management tracking heap, it is important to use - it during the stream opening fallback. In Unix, the argument is - unused, but it is better to set it correctly. - - * src/base/ftobjs.c (FT_Stream_New): Set memory before calling - `FT_Stream_Open`. - * builds/windows/ftsystem.c, builds/unix/ftsystem.c (FT_Stream_Open, - ft_close_stream_by_free): Call `ft_alloc` and `ft_free` with proper - memory argumment. - -2021-09-22 Alexei Podtelezhnikov - - [builds/windows] Revert back to `CreateFileA` only. - - Calling `CreateFileW` without making sure that the patname is really - `wchar_t` is a bad idea and can lead to unpredictable overreads. For - Windows CE, we impelemnt the missing API. - - Fixes #1098 and !76 again. - - * builds/windows/ftsystem.c (FT_Stream_Open): Call `CreateFileA`. - [_WIN32_WCE] (CreateFileA, FileSizeEx): Implement missing interfaces. - -2021-09-21 Alexei Podtelezhnikov - - * src/bdf/bdflib.c (_bdf_parse_{start,glyphs}): Use appropriate scanner. - -2021-09-21 Alexei Podtelezhnikov - - Minor. - -2021-09-20 Alexei Podtelezhnikov - - * src/cff/cffdrivr.c (cff_ps_get_font_{info,extra}): Use FT_QNEW. - -2021-09-18 Alexei Podtelezhnikov - - [cache] Minor clean-ups. - - * src/cache/ftccache.h (FTC_CACHE_LOOKUP_CMP): Remove parantheses. - * src/cache/ftccache.c (FTC_Cache_Lookup): Ditto. - (FTC_Cache_RemoveFaceID): Remove unnecessary variable. - -2021-09-17 Alexei Podtelezhnikov - - [builds/windows] Try both wide and narrow `CreateFile` - - Windows handles wchar_t* UTF-16 and char* ANSI (presently UTF-8) - filenames using alternative -A and -W API. We'll try them both - when opening a file. This means that you should not worry about - about conversions. - - Fixes #1098 and !76. - - * builds/windows/ftsystem.c (FT_Stream_Open): Call alternative - `CreateFile` in the case of failure. - -2021-09-17 Edwin Steiner - - [cff] Explicitly set StandardEncoding or ExpertEncoding offsets. - - Fixes #1097. - - * src/cff/cffload.c (cff_encoding_load): Set special offset values. - -2021-09-16 Alexei Podtelezhnikov - - [cache] Miscellaneous clean-ups. - - * src/cache/ftccache.c (ftc_get_top_node_for_hash, FTC_Cache_Clear): - Remove barely used variables. - (ftc_cache_add): Adjust casting. - * src/cache/ftccmap.c (FTC_CMapCache_Lookup): Remove casting. - * src/cache/ftcsbits.c (ftc_snode_load): Remove casting. - -2021-09-16 Alexei Podtelezhnikov - - * src/cff/cffload.c (cff_fd_select_get): Remove casting. - -2021-09-16 Alexei Podtelezhnikov - - * src/pcf/pcfread.c (pcf_read_TOC): Remove casting. - -2021-09-15 Alexei Podtelezhnikov - - Minor type adjustments. - - * src/cff/cffobjs.c (cff_face_init): Reduce casting. - * src/truetype/ttobjs.c (tt_size_ready_bytecode): Ditto. - * src/type1/t1load.c (T1_Set_MM_Design): Ditto. - -2021-09-15 Alexei Podtelezhnikov - - Replace boolean allocation macros with MEM ones. - - * src/base/ftbitmap.c (FT_Bitmap_Copy): Use MEM-macro. - * src/base/ftobjs.c (ft_glyphslot_alloc_bitmap): Ditto. - * src/bzip2/ftbzip2.c (ft_bzip2_alloc): Ditto. - * src/cache/ftccache.c (ftc_cache_init): Ditto - * src/gzip/ftgzip.c (ft_gzip_alloc): Ditto. - * src/psnames/psmodule.c (ps_unicodes_init): Ditto. - * src/sfnt/sfobjs.c (sfnt_load_face): Ditto. - * src/sfnt/ttload.c (tt_face_load_name): Ditto. - -2021-09-15 Alexei Podtelezhnikov - - [cache] Revert to some zeroing. - - * src/cache/ftccache.c (ftc_cache_init, ftc_cache_resize): Zero - `buckets` again to fix some crashes. - -2021-09-14 Alexei Podtelezhnikov - - * src/pshinter/pshrec.c (ps_mask_table_merge_all): Tweak loops. - - Fixes fallout from 731d0b685685 reported as - - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=38685 - -2021-09-13 Alexei Podtelezhnikov - - [cff, pshinter] Clean up unsigned counters. - - Loops with unsigned decrement can be reliably stopped when the counter - wraps around after reaching zero. - - * src/cff/cffload.c (cff_charset_compute_cids): Use unsigned counter. - * src/pshinter/pshalgo.c (psh_hint_table_activate_mask): Ditto. - * src/pshinter/pshrec.c (ps_mask_table_merge): Ditto. - -2021-09-13 Alexei Podtelezhnikov - - [bdf, psnames, sfnt] Avoid some memory zeroing. - - * src/bdf/bdfdrivr.c (BDF_Face_Init): Use Q-macro. - * src/sfnt/sfobjs.c (sfnt_load_face): Ditto. - * src/psnames/psmodule.c (src/psnames/psmodule.c): Remove zero. - -2021-09-13 Alexei Podtelezhnikov - - * src/base/ftobjs.c (FT_CMap_New): Revert to zeroing. - - Fixes fallout from c1fa7aa2bc96, reported as - - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=38641 - -2021-09-13 Alexei Podtelezhnikov - - [truetype] Clean up `exec` initialization. - - * src/truetype/ttinterp.c (Init_Context): Absorbed into... - (TT_New_Context): ... this function. - -2021-09-13 Alexei Podtelezhnikov - - [truetype] Avoid some memory zeroing. - - * src/truetype/ttgload.c (load_truetype_glyph): Use Q-macro. - * src/truetype/ttinterp.c (Update_Max): Ditto. - * src/truetype/ttpload.c (src/truetype/ttpload.c): Ditto. - -2021-09-13 Alexei Podtelezhnikov - - [base] Avoid some memory zeroing. - - * src/base/ftobjs.c (FT_New_Size, FT_CMap_New, FT_CMap_Done, - ft_open_face_internal, ft_open_face_internal): Use Q-macros. - -2021-09-13 Alexei Podtelezhnikov - - [cache, psaux] Remove zeros. - - * src/cache/ftcmru.c (FTC_MruList_New): Remove initialization. - * src/psaux/psstack.c (cf2_stack_init): Ditto. - -2021-09-12 Alexei Podtelezhnikov - - [cache] Avoid some memory zeroing. - - * src/cache/ftcmru.c (FTC_MruList_New): Use Q-macro. - * src/cache/ftcmanag.c (FTC_Manager_RegisterCache): Ditto. - * src/cache/ftccache.c (ftc_cache_init, ftc_cache_resize): Ditto. - -2021-09-11 Alexei Podtelezhnikov - - * src/cache/ftcmanag.c (FTC_Manager_New): Add missing zero. - - Fixes fall out from a7b199d081e7. - -2021-09-10 Alexei Podtelezhnikov - - [truetype] Tweak `hdmx` checking. - - Fixes #1096. - - * src/truetype/ttpload.c (tt_face_load_hdmx): Account for padding. - -2021-09-10 Alexei Podtelezhnikov - - [truetype] Tweak `loca` clamping. - - Fixes #1095. - - * src/truetype/ttpload.c (tt_face_load_loca): Fix up clamping. - * include/freetype/internal/tttypes.h (TT_Face): Correct docs. - -2021-09-08 Alexei Podtelezhnikov - - Fortify memory debugging (cont'd). - - * src/base/ftdbgmem.c (FT_DumpMemory): Check for active debugger. - (ft_mem_table_destroy): Move `FT_DumpMemory` call from here... - (ft_mem_debug_done): ... to here. - -2021-09-08 Alexei Podtelezhnikov - - Fortify memory debugging. - - These changes are neccessary to properly recover `memory->user` that - holds the Windows heap handle now. - - * src/base/ftdbgmem.c (ft_mem_debug_init): Handle all table allocations, - initializations, and sizing instead of... - (ft_mem_table_new): ... this function removed. - (ft_mem_debug_done): Better check for the active debugger and free the - debugger table here instead of... - (ft_mem_table_destroy): ... here. - -2021-09-08 Werner Lemberg - - src/tools/ftrandom/ftrandom.c (_XOPEN_SOURCE): Set to 600. - - This allows C99 compilation on Solaris. - - Problem reported by Mojca Miklavec. - -2021-09-07 Alexei Podtelezhnikov - - [builds/windows] Use native memory allocation API. - - * builds/windows/ftsystem.c (ft_alloc, ft_realloc, ft_free): - Wrap HeapAlloc, HeapReAlloc, and HeapFree. - (FT_New_Memory): Set the heap handle. - -2021-09-07 Werner Lemberg - - [dlg] Synchronize with upstream. - - * src/dlg/dlgwrap.c (_XOPEN_SOURCE): Set to 600. - - Fixes #1093. - -2021-09-04 Alexei Podtelezhnikov - - Cosmetic zeros. - -2021-09-03 Alexei Podtelezhnikov - - * src/bdf/bdflib.c (_bdf_parse_start): Keep parser memory. - -2021-09-03 Werner Lemberg - - autogen.sh: Make it work with old Solaris 10 shell. - -2021-09-03 Alexei Podtelezhnikov - - [smooth, raster, sdf] Clean up initialization calls. - - * src/raster/ftraster.c (ft_black_init): Removed. - (ft_black_new): Clean up. - * src/sdf/ftbsdf.c (bsdf_raster_new): Ditto. - * src/sdf/ftsdf.c (sdf_raster_new): Ditto. - * src/smooth/ftgrays.c (gray_raster_new): Ditto. - -2021-09-03 Alexei Podtelezhnikov - - * src/cache/ftcmanag.c (FTC_Manager_New): Avoid some zeroing. - -2021-09-03 Alexei Podtelezhnikov - - * src/bdf/bdflib.c (bdf_load_font): Remove memory shuffling. - -2021-09-03 Alexei Podtelezhnikov - - Cosmetic zeros. - -2021-09-02 Alexei Podtelezhnikov - - [base] Clean up stream reading. - - * src/base/ftstream.c (FT_Stream_ReadUShort, FT_Stream_ReadUOffset, - FT_Stream_ReadULong and their LE variants): Remove unnecessary - initialization and slightly refactor. - (FT_Stream_GetByte, FT_Stream_ReadByte): Rename to return unsigned - value and align with sister functions. - - * include/freetype/internal/ftstream.h (FT_Stream_GetByte, - FT_Stream_ReadByte): Update prototypes and caller macros. - -2021-09-02 Alexei Podtelezhnikov - - s/0/NULL/ where appropriate. - -2021-08-30 Alexei Podtelezhnikov - - * builds/windows/ftsystem.c (FT_Stream_Open): Fix double-close. - -2021-08-30 Alexei Podtelezhnikov - - [smooth] Reduce shift in multiply-shift optimization. - - * src/smooth/ftgrays.c (FT_UDIVPREP, FT_UDIV): Reduce shift. - - Smaller shifts that keep the division operands of FT_UDIVPREP within - 32 bits result in slightly faster divisions, which is noticeable in - the overall performance. The loss of precision is tolerable until the - divisors (the components dx and dy) approach 32 - PIXEL_BITS. With - PIXEL_BITS = 8, this corresponds to 65,000 pixels or the bitmap size - that we refuse to render anyway. - - Using `ftbench -p -s60 -t5 -bc timesi.ttf`, - - Before: 8.52 us/op - After: 8.32 us/op - -2021-08-28 Werner Lemberg - - [truetype] Fix compilation if !TT_CONFIG_OPTION_BYTECODE_INTERPRETER. - - * src/truetype/ttgxvar.c (tt_cvt_ready_iterator): Compile function - conditionally. - (tt_face_vary_cvt) [!TT_CONFIG_OPTION_BYTECODE_INTERPRETER]: Add code. - - Fixes #1091. - -2021-08-27 Alexei Podtelezhnikov - - [builds/windows] Revise SSE2 settings. - - * builds/windows/vc2010/freetype.vcxproj [x64]: Remove explicit SSE2. - * builds/windows/visualc/freetype.vcproj [Win32]: Add explicit SSE2. - -2021-08-27 Ben Wagner - - [smooth] Detect SSE2 with MSVC for x86 - - MSVC does not set `__SSE2__`. Instead one must check whether `_M_IX86_FP` is - defined and greater than or equal to 2. - - * src/smooth/ftgrays.c (FT_SSE2): New macro. - Use it where appropriate. - -2021-08-26 Alexei Podtelezhnikov - - Expand comment (cont'd). - -2021-08-26 Alexei Podtelezhnikov - - Expand comment. - -2021-08-24 Alexei Podtelezhnikov - - * src/smooth/ftgrays.c (gray_render_conic): Refactor redundancy. - -2021-08-24 suzuki toshiya - - [truetype] Fix for the family name shorter than 8 characters. - - * src/truetype/ttobjs.c (tt_skip_pdffont_random_tag): - If the family name to be checked is shorter than 8 characters, - do not check its syntax. - -2021-08-24 suzuki toshiya - - [truetype] Simplify `trick_names'. - - * src/truetype/ttobjs.c (tt_check_trickyness_family): For the case - that the beginning part of a long tricky family name is already - registered as another tricky family name, no need to double-check - the longer one. Such long tricky family names are removed from - the `trick_names'. - -2021-08-24 suzuki toshiya - - [truetype] Add 2 tricky font names. - - Additional fix for the issue #1087. - - * src/truetype/ttobjs.c (tt_check_trickyness_family): Add 2 tricky - font names reported in #1087. - -2021-08-24 suzuki toshiya - - [truetype] New function to skip the randomization tag. - - * src/truetype/ttobjs.c (tt_skip_pdffont_random_tag): - New function to skip the randomization tag in the names of the - fonts embedded in a PDF. It is used by tt_check_trickyness_family(), - to keep from mistaking "DLC" in the randomization tag as a - tricky font name. See discussion in: - - https://lists.nongnu.org/archive/html/freetype-devel/2021-02/msg00002.html - - For technical detail about the randomization tag, please find - PDF Reference 5.5.3 "Font Subsets". Thanks to Justyna Wawrzynska - for pointing out the issue caused by the randomization tag. - -2021-08-24 suzuki toshiya - - [truetype] Add checksums for 2 tricky fonts. - - Thanks to Ting717 for providing sample PDF. Fixes #1087. - - * src/truetype/ttobjs.c (tt_check_trickyness_sfnt_ids): Add - checksums for 2 tricky fonts `DFHei-Bd-WIN-HK-BF' and - `DFMing-Md-WIN-HK-BF'. - -2021-08-23 Alexei Podtelezhnikov - - Whitespace formatting. - -2021-08-22 Alexei Podtelezhnikov - - Decorate const arguments. - - * src/base/ftglyph.c (FT_Glyph_Transform, FT_Glyph_To_Bitmap): Do it. - * include/freetype/ftglyph.h (FT_Glyph_Transform, FT_Glyph_To_Bitmap): - Do it. - -2021-08-21 Alexei Podtelezhnikov - - [smooth] Clean up the null cell usage. - - Put the null cell at the end of the pool and store it explicitly so that - we can use it as both the limit and the dumpster. - - * src/smooth/ftgrays.c (gray_TWorker): Store the last `cell_null` and - remove unnecesary fields. - (NULL_CELL_PTR, CELL_IS_NULL): Remove in favor of explicit `cell_null`. - (gray_dump_cells, gray_set_cell, gray_sweep{,_direct}): Update callers. - (gray_convert_glyph_inner): Trace remaining cells (oh well). - (gray_convert_glyph): Set up `cell_null` and slightly improve the pool - management. - -2021-08-20 Alexei Podtelezhnikov - - [base] Restore quiet no-op rendering of bitmap glyphs. - - Fixes #1076. - - * src/base/ftobjs.c (FT_Render_Glyph_Internal): Discard an error when - rendering a bitmap glyph. - -2021-08-20 Alexei Podtelezhnikov - - [smooth] Fortify 64-bit algorithm. - - * src/smooth/ftgrays.c (FT_UDIVPREP, FT_UDIV): s/long/FT_Int64/ and - s/unsigned long/FT_UInt64/. - (gray_render_line): Adjust a critical variable type. - -2021-08-20 Carlo Bramini - - * builds/windows/ftsystem.c (FT_Stream_Open): Support legacy Windows. - -2021-08-20 Alexei Podtelezhnikov - - Determine `long long` availability based on its size. - - MSVC, for example, used `long long` even without full C99 support. - - * include/freetype/config/ftstdlib.h: Check if `long long` limits are - defined in . - * include/freetype/config/integer-types.h: Check `long long` size and - use it to typedef FT_Int64. - -2021-08-19 Dominik Röttsches - - [sfnt] Fix format expectation for `COLR` v1 ClipList - - * src/sfnt/ttcolr.c (tt_face_get_color_glyph_clipbox): Change ClipList - format expectation to 1 instead of 0 to make it compliant with the - latest spec. - -2021-08-19 Alexei Podtelezhnikov - - Readily use `long long` as a 64-bit type in C99 mode. - - * include/freetype/config/integer-types.h (FT_INT64): - FT_CONFIG_OPTION_FORCE_INT64 is no longer required to use `long long`. - -2021-08-19 Alexei Podtelezhnikov - - Use FT_INT64 instead of FT_LONG64. - - * include/freetype/config/integer-types.h: Remove synonymous FT_LONG64. - * include/freetype/internal/ftcalc.h: s/FT_LONG64/FT_INT64/. - * src/base/ftcalc.c: Ditto. - * src/base/fttrigon.c: Ditto. - * src/smooth/ftgrays.c: Ditto. - -2021-08-18 Alexei Podtelezhnikov - - [builds/windows] Do not set CharacterSet for VC++. - - * builds/windows/vc2010/freetype.vcxproj: s/Unicode/NotSet/. - * builds/windows/visualc/freetype.vcproj: s/"1"/"0"/. - -2021-08-18 Werner Lemberg - - * src/sdf/ftsdf.c (get_control_box): Fix compiler warning. - -2021-08-18 Werner Lemberg - - [base] Fix ppem size overflow. - - Fixes #1086. - - * src/base/ftobjs.c (FT_Request_Metrics): Add return value. - Check whether ppem values fit into unsigned short values. - (FT_Request_Size): Updated. - - * include/freetype/internal/ftobjs.h: Updated. - - * src/cff/cffobjs.c (cff_size_request), src/cid/cidobjs.c - (cid_size_request), src/truetype/ttdriver.c (tt_size_request), - src/type1/t1objs.c (T1_Size_Request): Updated. - -2021-08-18 Alexei Podtelezhnikov - - * builds/windows/ftsystem.c (FT_Stream_Open): Cast to remove warning. - -2021-08-18 Alexei Podtelezhnikov - - * builds/windows/ftsystem.c (FT_Stream_Open): Support UNICODE compilation. - -2021-08-09 Werner Lemberg - - * src/sfnt/ttcolr.c (tt_face_get_color_glyph_clipbox): Minor fix. - -2021-08-09 Dominik Röttsches - - [sfnt] Add missing blend mode 'plus' to 'COLR' v1. - - * include/freetype/ftcolor.h (FT_Composite_Mode): Add missing blend mode - 'plus' after it was added to the spec. - -2021-08-08 Werner Lemberg - - include/freetype/freetype.h (FT_Encoding): Improve documentation. - - Based on a suggestion by Antony Lee . - -2021-08-07 Werner Lemberg - - [smooth] Avoid integer overflow. - - Reported as - - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=36243 - - * src/smooth/ftgrays.c(ADD_LONG, SUB_LONG, MUL_LONG, NEG_LONG) - [STANDALONE_]: Removed, unused. - (ADD_INT) [STANDALONE_]: New macro. - (FT_INTEGRATE): Use ADD_INT. - -2021-08-07 Dominik Röttsches - - [sfnt] Add API for retrieving a 'COLR' v1 'ClipBox' table. - - The optional 'COLR' v1 glyph-specific clip box helps upstream graphics - libraries allocate a sufficiently large bitmap for a glyph without having to - traverse the glyph graph for that. See - - https://github.com/googlefonts/colr-gradients-spec/issues/251 - - for background on the introduction of this specification change. - - * include/freetype/ftcolor.h (FT_ClipBox): New structure. - (FT_Get_Color_Glyph_ClipBox): New function declaration. - - * include/freetype/internal/sfnt.h (TT_Get_Color_Glyph_ClipBox_Func): - New function type. - (SFNT_Interface, FT_DEFINE_SFNT_INTERFACE): Use it. - - * src/base/ftobjs.c (FT_Get_Color_Glyph_ClipBox): New function to link API - with SFNT implementation. - - * src/sfnt/sfdriver.c (sfnt_interface): Updated. - * src/sfnt/ttcolr.c (Colr): New field `clip_list`. - (tt_face_load_colr): Parse global clip list offset. - (tt_face_get_color_glyph_clipbox): New function to find the clip box for a - glyph id from the clip list array. - * src/sfnt/ttcolr.h: Updated. - -2021-08-06 Werner Lemberg - - [smooth] Fix left shifts of negative numbers. - - Reported as - - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=36241 - - * src/smooth/ftgrays.c (LEFT_SHIFT): New macro. - (gray_render_conic) [BEZIER_USE_DDA]: Use it. - -2021-08-02 Werner Lemberg - - * meson.build: Fix zlib support. - - This commit synchronizes zlib support with both autotools and cmake: If no - external zlib is found (or intentionally disabled on the command line), use - the internal zlib by undefining `FT_CONFIG_OPTION_SYSTEM_ZLIB` without - modifying `FT_CONFIG_OPTION_USE_ZLIB`. - - Also improve summary output. - - Problem reported by Moazin. - -2021-08-02 Anuj Verma - - [sdf] Fix out-of-range-access. - - * src/sdf/ftbsdf.c (first_pass, second_pass): Fix range during forward pass. - Otherwise the index goes out of range for the last column. - - Fixes issue #1077. - -2021-08-02 Anuj Verma - - Fix invalid memory access in `bsdf` rasterizer. - - Do not generate SDF from bitmap if the `FT_GLYPH_OWN_BITMAP` flag is not - set. In some cases the bitmap buffer is freed but still points to a valid - address; to handle those cases check the flag before accessing the memory. - - * src/sdf/ftsdfrend.c (ft_bsdf_render): Handle the above case. - Also, return an error message if the bitmap's rows/pitch is invalid, - otherwise `slot->buffer` might be assigned to some invalid memory location. - (ft_sdf_render): Same as above. - Plus, move the outline back to original state after rasterization and not if - any error occurs. - -2021-07-29 Heiko Becker - - * meson.build: Honor `--includedir` instead of hard-coding 'include'. - -2021-07-29 Werner Lemberg - - src/sfnt/ttcolr.c: Minor formatting. - -2021-07-29 Dominik Röttsches - - [sfnt] 'COLR' v1 PaintSweepGradient spec update - - * src/sfnt/ttcolr.c (read_paint): PaintSweepGradient follows other - spec changes and now has the angles specified as F2DOT14, reflect - that in the implementation. - * include/freetype/ftcolor.h (FT_PaintSweepGradient): Update - documentation. - -2021-07-29 Dominik Röttsches - - [sfnt] Retrieve affine matrix from offset in 'COLR' v1 parsing. - - * src/sfnt/ttcolr.c (read_paint): Implement spec change where - affine transform matrix is now referenced by offset instead of - being placed inline in the PaintTransform table. - -2021-07-29 Dominik Röttsches - - [sfnt] 'COLR' v1 PaintSkew related spec updates - - * src/sfnt/ttcolr.c (read_paint): Implement spec changes around - PaintSkew, PaintSkewAroundCenter. Update parsing to read shorter - values as changed in the spec. - * include/freetype/ftcolor.h (FT_PaintSkew): Update documentation. - -2021-07-29 Dominik Röttsches - - [sfnt] PaintRotate/PaintRotateAroundCenter spec updates - - * src/sfnt/ttcolr.c (read_paint): Implement spec change where - PaintRotate and PaintRotateAroundCenter were split for a more - compact format definition. Update parsing to read shorter values - as changed in the spec. - * include/freetype/ftcolor.h (FT_PaintRotate): Update documentation. - -2021-07-29 Dominik Röttsches - - [sfnt] 'COLR' v1 PaintTranslate and PaintScale precision - - * src/sfnt/ttcolr.c (read_paint): Implement spec changes in - PaintTranslate and PaintScale and friends. Update parsing to read - new shorter values. - -2021-07-29 AnuthaDev - - README.git: Add Code of Conduct. - -2021-07-25 Werner Lemberg - - ChangeLog housekeeping. - - Archive old `ChangeLog` file. - - We no longer write ChangeLog entries manually; instead, the file will be - created from commit messages (which should be formatted in GNU's ChangeLog - style) by a call to - - gitlog-to-changelog --format='%B%n' - - or something similar (this script is part of the 'gnulib' repository). - -2021-07-24 Werner Lemberg - - Fix some `cppcheck` warnings. - - * src/bzip2/ftbzip2.c (ft_bzip2_file_skip_output), src/gzip/ftgzip.c - (ft_gzip_file_skip_output): Reduce scope of `delta`. - - * src/psaux/psintrp.c, src/psaux/psintrp.h (cf2_interpT2CharString): Add - `const` to `buf` parameter. - - * src/raster/ftraster.c (DelOld): Add `const` to `profile` parameter. - (Vertical_Sweep_Span): Reduce scope of `target`. - (FT_Outline_Get_CBox): Reduce scope of `xMin`, `xMax`, `yMin`, `yMax`. - - * src/smooth/ftgrays.c (gray_render_conic): Reduce scope of `split`. - (gray_sweep, gray_sweep_direct): Reduce scope of `area`. - - * src/tools/apinames.c (names_dump) : Reduce scope of - `temp`. - -2021-07-24 AnuthaDev - - * .gitlab-ci.yml: Fixed cmake build, using correct options. - -2021-07-24 AnuthaDev - - * CMakeLists.txt: Make `cmake` handle disabled dependencies correctly. - - Include 'CMakeDependentOption'. - - Replace `FT_WITH_XXX` options with `FT_DISABLE_XXX` and `FT_REQUIRE_XXX` - pairs. Update option logic accordingly. - - Fixes #1066. - -2021-07-24 Ben Wagner - - [autofit] Split `afwrtsys.h`. - - The header file `afwrtsys.h` has two distinct functions: to include the - required writing system headers and also to generate code for each writing - system. At each current use site only one or the other is used, with - various macro trickery selecting one or the other. Split this header into - `afws-decl.h` for the required writing system declarations and `afws-iter.h` - for iterating over the writing systems to generate code. - - The motivation for this change is that the Visual C++ compiler treats the - standard include guard idiom like `#pragma once` 'if no non-comment code or - preprocessor directive comes before or after the standard form of the - idiom'. It appears to check this after macro expansion, so if - `WRITING_SYSTEM` expands to empty the bottom of `afwrtsys.h` is empty and - looks like the standard include guard idiom which is treated like `#pragma - once`, so subsequent inclusion of `afwrtsys.h` is elided. - - Fixes #1075. - - * src/autofit/afglobal.c (af_writing_system_classes), src/autofit/aftypes.h - (AF_WritingSystem), src/autofit/rules.mk (AUTOF_DRV_H): Updated. - - * src/autofit/afwrtsys.h: Split into... - * src/autofit/afws-decl.h, src/autofit/afws-iter.h: New files. diff --git a/vendor/freetype/README b/vendor/freetype/README index 515e4d1c7af..9e85fc8070b 100644 --- a/vendor/freetype/README +++ b/vendor/freetype/README @@ -1,4 +1,4 @@ -FreeType 2.14.1 +FreeType 2.14.3 =============== Homepage: https://freetype.org @@ -32,9 +32,9 @@ sites. Go to and download one of the following files. - freetype-doc-2.14.1.tar.xz - freetype-doc-2.14.1.tar.gz - ftdoc2141.zip + freetype-doc-2.14.3.tar.xz + freetype-doc-2.14.3.tar.gz + ftdoc2143.zip To view the documentation online, go to @@ -66,10 +66,13 @@ Please submit bug reports at https://gitlab.freedesktop.org/freetype/freetype/-/issues -Alternatively, you might report bugs by e-mail to -`freetype-devel@nongnu.org`. Don't forget to send a detailed -explanation of the problem -- there is nothing worse than receiving a -terse message that only says 'it doesn't work'. +This gitlab instance also supports confidential reports. + +Alternatively, but less preferable, you might report bugs by sending +an e-mail to the public mailing list `freetype-devel@nongnu.org`. +Don't forget to submit a detailed explanation of the problem -- there +is nothing worse than receiving a terse message that only says 'it +doesn't work'. Patches @@ -94,7 +97,7 @@ Enjoy! ---------------------------------------------------------------------- -Copyright (C) 2006-2025 by +Copyright (C) 2006-2026 by David Turner, Robert Wilhelm, and Werner Lemberg. This file is part of the FreeType project, and may only be used, diff --git a/vendor/freetype/docs/CHANGES b/vendor/freetype/docs/CHANGES new file mode 100644 index 00000000000..3e3c20a13eb --- /dev/null +++ b/vendor/freetype/docs/CHANGES @@ -0,0 +1,5922 @@ +CHANGES BETWEEN 2.14.3 and 2.15.0 (2026-Mmm-DD) + + I. IMPORTANT CHANGES + + - The anti-aliased rasterizer now uses dynamic heap memory for large + glyphs, which significantly improves its performance at sizes + above 40 ppem. + + - Experimental HVF driver has been contributed by Apple, currently + available on macOS only. + + + II. IMPORTANT BUG FIXES + + - Continued efforts to scrutinize FreeType with AI tools resulted in + more bugs being fixed, some with potential security implications. + + +====================================================================== + +CHANGES BETWEEN 2.14.2 and 2.14.3 (2026-Mar-22) + + I. IMPORTANT BUG FIXES + + - A bunch of potential security problems have been found. All users + should update. + + + II. MISCELLANEOUS + + - If configuration option `TT_CONFIG_OPTION_GPOS_KERNING` is active, + GPOS-based kerning could miss some value pairs (bug introduced in + version 2.14.0). + + +====================================================================== + +CHANGES BETWEEN 2.14.1 and 2.14.2 (2026-Mar-01) + + I. IMPORTANT CHANGES + + - Several changes related to LCD filtering are implemented to + achieve better performance and encourage sound practices. + + . Instead of blanket LCD filtering over the entire bitmap, it is + now applied only to non-zero spans using direct rendering. This + speeds up the ClearType-like rendering by more than 40% at sizes + above 32 ppem. + + . Setting the filter weights with FT_Face_Properties is no longer + supported. The default and light filters are optimized to work + with any face. + + . The legacy libXft LCD filter algorithm is no longer provided. + + + II. IMPORTANT BUG FIXES + + - A bunch of potential security problems have been found. All users + should update. + + - The italic angle in `PS_FontInfo` is now stored as a fixed-point + value in degrees for all Type 1 fonts and their derivatives, + consistent with CFF fonts and common practices. The broken + underline position and thickness values are fixed for CFF fonts. + + + III. MISCELLANEOUS + + - The `x` field in the `FT_Span` structure is now unsigned. + + - Demo program `ftgrid` got an option `-m` to select a start + character to display. + + - Similarly, demo program `ftmulti` got an option `-m` to select a + text string for rendering. + + - Option `-d` in the demo program `ttdebug` is now called `-a`, + expecting a comma-separated list of axis values. The user + interface is also slightly improved. + + - The `ftinspect` demo program can now be compiled with Qt6, too. + + +====================================================================== + +CHANGES BETWEEN 2.14.0 and 2.14.1 (2025-Sep-11) + + I. IMPORTANT BUG FIXES + + - This is an emergency release that fixes a couple of severe bugs + introduced in version 2.14.0 and discovered right after the + release; see issues #1349, #1353, #1354, #1355, and #1356 in our + bug tracker at + + https://gitlab.freedesktop.org/freetype/freetype/-/issues + + +====================================================================== + +CHANGES BETWEEN 2.13.3 and 2.14.0 (2025-Sep-06) + + I. IMPORTANT CHANGES + + - A new configuration macro `FT_CONFIG_OPTION_USE_HARFBUZZ_DYNAMIC` + is available to load the HarfBuzz library dynamically (in addition + to the standard static and dynamic linking modes); cmake, meson, + and autotools support have been updated accordingly. Using this + new feature makes it possible to avoid the circular dependency + between HarfBuzz and FreeType. + + A side effect of this change is that FreeType no longer uses + HarfBuzz header files (if HarfBuzz support is activated). + + This code was contributed by Behdad Esfahbod. + + - The auto-hinter got new abilities. + + . It can now better separate diacritic glyphs from base glyphs at + small sizes by artificially moving diacritics up (or down) if + necessary. + + . Tilde accent glyphs get vertically stretched at small sizes so + that they don't degenerate to horizontal lines. + + . Diacritics directly attached to a base glyph (like the ogonek in + character 'Ä™') no longer distort the shape of the base glyph. + + These features use a database (which currently has entries for + Unicode characters up to U+FFFF, based on Unicode 17.0), handling + scripts like Latin, Cyrillic, or Greek, but not Arabic or Indic + scripts. FreeType needs to access a proper Unicode character map + (or must be able to construct such a cmap) of a given font to make + this work. + + The central algorithm and the foundation of this feature was Craig + White's GSoC 2023 project. + + - Bitmap-only TrueType fonts now ignore the `FT_LOAD_NO_BITMAP` flag + and proceed loading bitmaps instead of giving an error. This + behavior is documented and implemented for other bitmap-only + fonts. The flag was always meant to suppress the bitmap strikes + in favor of outlines, not to ban them completely. + + + II. IMPORTANT BUG FIXES + + - Users of the `TT_CONFIG_OPTION_GPOS_KERNING` configuration option + should update; the 'GPOS' table wasn't correctly validated before + access, which could lead to crashes with malformed font files. + + + III. MISCELLANEOUS + + - `FT_Set_Var_Design_Coordinates` and `FT_Set_MM_Blend_Coordinates` + now set the `FT_FACE_FLAG_VARIATION` bit in the `face_flag` field + of `FT_Face` (i.e., the macro `FT_IS_VARIATION` returns true) also + if any of the provided coordinates is different from the face's + default value for the corresponding axis, that is, the set up face + is not at its default position. + + - `FT_Load_Sfnt_Table` can now also load a font's table directory. + + - The TrueType instruction interpreter was optimized to produce a + 15% gain in the glyph loading speed. + + - Handling of Variation Fonts is now considerably faster, thanks to + contributions by Behdad Esfahbod. + + - TrueType and CFF glyph loading speed has been improved by 5-10% on + modern 64-bit platforms as a result of better handling of fixed- + point multiplication. + + - The BDF driver now loads fonts 75% faster. + + - 'GPOS' kern table handling (if the `TT_CONFIG_OPTION_GPOS_KERNING` + configuration option is active) is now about 3.5 times faster than + before. + + - Support for the (currently undocumented) 'flip' graphic type in + the 'sbix' SFNT table as used in the `Apple Color Emoji.ttc` font + (code provided by Andrew Murray). + + - `ftmulti` can now scroll through named instances and gracefully + show static fonts. + + - The build file on OpenVMS now also creates a 32-bit version of the + library. + + +====================================================================== + +CHANGES BETWEEN 2.13.2 and 2.13.3 (2024-Aug-11) + + I. IMPORTANT CHANGES + + - Some fields in the `FT_Outline` 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. + + + II. IMPORTANT BUG FIXES + + - Rare double-free crashes in the cache subsystem have been fixed. + + - Excessive stack allocation in the autohinter has been fixed. + + + III. MISCELLANEOUS + + - The B/W rasterizer has received a major upkeep that results in + large performance improvements. The rendering speed has increased + and even doubled for very complex glyphs. + + - If the new configuration option `TT_CONFIG_OPTION_GPOS_KERNING` is + defined, `FT_Get_Kerning` understands rudimentary GPOS kerning + (for TrueType fonts only). This is not enabled by default since + its usage is very limited, mainly for legacy applications that + have to support TrueType fonts automatically converted from 'kern' + tables to GPOS kerning. If you need proper (GPOS) kerning support + please use a higher-level library like HarfBuzz. + + Code contributed by David Saltzman . + + - The internal structures `PS_DesignMap` and `PS_Blend` related to + parsing of old Multiple Masters fonts have been removed from the + public header file `t1tables.h`. + + +====================================================================== + +CHANGES BETWEEN 2.13.1 and 2.13.2 (2023-Aug-25) + + I. MISCELLANEOUS + + - Better support for CFF2 variation fonts. + + - TrueType interpreter version 38 (also known as 'Infinality') has + been removed. + + - Improved OpenVMS support. + + +====================================================================== + +CHANGES BETWEEN 2.13.0 and 2.13.1 (2023-Jun-24) + + I. MISCELLANEOUS + + - New function `FT_Get_Default_Named_Instance` to get the index of + the default named instance of an OpenType Variation Font. + + - A new load flag `FT_LOAD_NO_SVG` to make FreeType ignore glyphs in + an 'SVG ' table. + + - New function `FT_GlyphSlot_AdjustWeight` to adjust the glyph + weight either horizontally or vertically. This is part of the + `ftsynth.h` header file, which is still considered to be in alpha + stage. + + - TrueType interpreter version 38 (also known as 'Infinality') has + been deactivated; the value of `TT_INTERPRETER_VERSION_38` is now + the same as `TT_INTERPRETER_VERSION_40`. + + - Updated OpenVMS support. + + - The base API documentation has been modularized for easier + handling. + + - Switching named instances on and off in Variation Fonts was buggy + if the design coordinates didn't change. + + - `ftbench` has a new command-line option `-a` to apply design + coordinates. + + - `ftview` can now flip SVG rendering on and off using the 'Z' key. + + - In `ftmulti` it is now possible to toggle the fill rule and + overlap flag used for rendering glyphs using the 'F3' and 'F4' + keys, respectively. Toggling the anti-aliased mode has been + changed to the 'TAB' key. + + +====================================================================== + +CHANGES BETWEEN 2.12.1 and 2.13.0 (2023-Feb-09) + + I. IMPORTANT CHANGES + + - The demo program `ftinspect` has been completely updated and much + enhanced. It now combines the functionality of almost all other + graphical FreeType demo programs into a single application based + on the Qt framework. This was Charlie Jiang's GSoC 2022 project. + + - The 'COLR' v1 API is now considered as stable. + + https://learn.microsoft.com/typography/opentype/spec/colr + + + II. MISCELLANEOUS + + - For OpenType Variable Fonts, `avar` table format 2.0 is now + supported. The code was contributed by Behdad Esfahbod. + + Note that this is an extension supported on recent Apple platforms + and by HarfBuzz, but not yet in the OpenType standard! See + + https://github.com/harfbuzz/boring-expansion-spec/blob/main/avar2.md + + for the specification. To deactivate it, define the configuration + macro 'TT_CONFIG_OPTION_NO_BORING_EXPANSION'. + + - A new API `FT_GlyphSlot_Slant` to slant a glyph by a given angle + has been added. Note that this function is part of `ftsynth.h`, + which is still considered to be in alpha stage. + + - TrueType interpreter version 38 (also known as 'Infinality') that + was first introduced about 10 years ago in FreeType 2.4.11 is now + deprecated and slated to be removed in the next version. TrueType + interpreter version 40 has been FreeType's default version for six + years now and provides an excellent alternative. This is the last + FreeType version with TT_INTERPRETER_VERSION_38 and + TT_INTERPRETER_VERSION_40 treated differently. + + - The only referenced but never documented configuration macro + `FT_CONFIG_OPTION_NO_GLYPH_NAMES` has been removed. + + - The `ftbench` demo program got a new command line option `-e` to + set a charmap index. + + - Specifying a point size is now optional for the demo programs + `ftgrid`, `ftmulti`, `ftstring`, and `ftview`. If not given, a + default size is used. + + - For `ftgrid`, `ftstring`, and `ftview`, option `-e` now also + accepts a numeric value to set a charmap index. + + - In `ftstring`, it is now possible to set the displayed text + interactively by pressing the 'Enter' key. + + - `ftmulti` can now handle up to 16 design axes. + + - To avoid reserved identifiers that are globally defined, the + auto-hinter debugging macros (which are only available if + `FT_DEBUG_AUTOFIT` is defined) + + ``` + _af_debug_disable_horz_hints + _af_debug_disable_vert_hints + _af_debug_disable_blue_hints + _af_debug_hints + ``` + + have been renamed to + + ``` + af_debug_disable_horz_hints_ + af_debug_disable_vert_hints_ + af_debug_disable_blue_hints_ + af_debug_hints_ + ``` + + - The internal zlib library was updated to version 1.2.13. Note, + however, that FreeType is *not* affected by CVE-2022-37434 since + it doesn't use the `inflateGetHeader` function. + + +====================================================================== + +CHANGES BETWEEN 2.12.0 and 2.12.1 (2022-May-01) + + I. IMPORTANT BUG FIXES + + - Loading CFF fonts sometimes made FreeType crash (bug introduced in + version 2.12.0) + + - Loading a fully hinted TrueType glyph a second time (without + caching) sometimes yielded different rendering results if TrueType + hinting was active (bug introduced in version 2.12.0). + + - The generation of the pkg-config file `freetype2.pc` was broken if + the build was done with cmake (bug introduced in version 2.12.0). + + + II. MISCELLANEOUS + + - New option `--with-librsvg` for the `configure` script for better + FreeType demo support. + + - The meson build no longer enforces both static and dynamic + versions of the library by default. + + - The internal zlib library was updated to version 1.2.12. Note, + however, that FreeType is *not* affected by CVE-2018-25032 since + it only does decompression. + + +====================================================================== + +CHANGES BETWEEN 2.11.1 and 2.12.0 (2022-Mar-30) + + I. IMPORTANT CHANGES + + - FreeType now handles OT-SVG fonts, to be controlled with + `FT_CONFIG_OPTION_SVG` configuration macro. By default, it can + only load the 'SVG ' table of an OpenType font. However, by using + the `svg-hooks` property of the new 'ot-svg' module it is possible + to register an external SVG rendering engine. The FreeType demo + programs have been set up to use 'librsvg' as the rendering + library. + + This work was Moazin Khatti's GSoC 2019 project. + + + II. MISCELLANEOUS + + - The handling of fonts with an 'sbix' table has been improved. + + - Corrected bitmap offsets. + + - A new tag `FT_PARAM_TAG_IGNORE_SBIX` for `FT_Open_Face` makes + FreeType ignore an 'sbix' table in a font, allowing applications + to access the font's outline glyphs. + + - `FT_FACE_FLAG_SBIX` and `FT_FACE_FLAG_SBIX_OVERLAY` together + with their corresponding preprocessor macros `FT_HAS_SBIX` and + `FT_HAS_SBIX_OVERLAY` enable applications to treat 'sbix' tables + as described in the OpenType specification. + + - The internal 'zlib' code has been updated to be in sync with the + current 'zlib' version (1.2.11). + + - The previously internal load flag `FT_LOAD_SBITS_ONLY` is now + public. + + - Some minor improvements of the building systems, in particular + handling of the 'zlib' library (internal vs. external). + + - Support for non-desktop Universal Windows Platform. + + - Various other minor bug and documentation fixes. + + - The `ftdump` demo program shows more information for Type1 fonts + if option `-n` is given. + + - `ftgrid` can now display embedded bitmap strikes. + + +====================================================================== + +CHANGES BETWEEN 2.11.0 and 2.11.1 (2021-Dec-01) + + I. IMPORTANT CHANGES + + - Some fields in the `CID_FaceDictRec`, `CID_FaceInfoRec`, and + `FT_Data` structures 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. + + + II. MISCELLANEOUS + + - Cmake support has been further improved. To do that various + backward-incompatible changes were necessary; please see file + `CMakeLists.txt` for more details. + + - Since version 2.11.0, a C99 compiler is necessary to compile + FreeType. + + - The experimental 'COLR' v1 API has been updated to the latest + OpenType standard 1.9. + + - The `apinames` tool got a new option `-wV` to output an OpenVMS + Linker Option File. + + - VMS support was updated. + + - MS Visual Studio support was added to build the demo programs. + + +====================================================================== + +CHANGES BETWEEN 2.10.4 and 2.11.0 (2021-Jul-18) + + I. IMPORTANT CHANGES + + - A new rendering module has been added to create 8-bit Signed + Distance Field (SDF) bitmaps for both outline and bitmap glyphs. + The new rendering mode is called `FT_RENDER_MODE_SDF`, the pixel + mode is `FT_PIXEL_MODE_GRAY8`, and the corresponding raster flag + is `FT_RASTER_FLAG_SDF`. + + This work was Anuj Verma's GSoC 2020 project. + + - A new, experimental API is now available for surfacing properties + of 'COLR' v1 color fonts (as the name says, this is an extension + to the 'COLR' table for outline color fonts using the SFNT + container format). 'COLR' v1 fonts are a recently proposed + addition to OFF and OpenType; specification work currently happens + in + + https://github.com/googlefonts/colr-gradients-spec/ + + 'COLR' v1 is expected to be merged to OpenType; the ISO + standardisation process for adding 'COLR' v1 as an amendment to + OFF is underway. + + Functions similar to the already existing 'COLR' API have been + added to access the corresponding data. + + FT_Get_Color_Glyph_Paint + Retrieve the root paint for a given glyph ID. + + FT_Get_Paint_Layers + Access the layers of a `PaintColrLayers` table. + + FT_Get_Colorline_Stops + Retrieve the 'color stops' on a color line. As an input, a + color stop iterator gets used, which in turn is retrieved from + a paint. + + FT_Get_Paint + Dereference an `FT_OpaquePaint` object and retrieve the + corresponding `FT_COLR_Paint` object, which contains details + on how to draw the respective 'COLR' v1 `Paint` table. + + Please note that FreeType does *not* provide rendering support for + 'COLR' v1 but only parsing of this table. You need a dedicated + graphics library like Skia or Cairo for rendering. + + + II. MISCELLANEOUS + + - FreeType has moved its infrastructure to + + https://gitlab.freedesktop.org/freetype + + A side effect is that the git repositories are now called + `freetype.git` and `freetype-demos.git`, which by default expand + to the directories `freetype` and `freetype-demos`, respectively. + The documentation has been updated accordingly. + + FreeType's Savannah repositories will stay; they are now mirrors + of the 'freedesktop.org' repositories. + + - A new function `FT_Get_Transform` returns the values set by + `FT_Set_Transform`. + + - A new configuration macro `FT_DEBUG_LOGGING` is available. It + provides extended debugging capabilities for FreeType, for example + showing a time stamp or displaying the component a tracing message + comes from. See file `docs/DEBUG` for more information. + + This work was Priyesh Kumar's GSoC 2020 project. + + - The legacy Type 1 and CFF engines are further demoted due to lack + of CFF2 charstring support. You now need to use `FT_Property_Set` + to enable them besides the `T1_CONFIG_OPTION_OLD_ENGINE` and + `CFF_CONFIG_OPTION_OLD_ENGINE` options, respectively. + + - The experimental 'warp' mode (AF_CONFIG_OPTION_USE_WARPER) for the + auto-hinter has been removed. + + - The smooth rasterizer performance has been improved by >10%. Note + that due to necessary code changes there might be very subtle + differences in rendering. They are not visible by the eye, + however. + + - PCF bitmap fonts compressed with LZW (these are usually files with + the extension `.pcf.Z`) are now handled correctly. + + - Improved Meson build files, including support to build the + FreeType demo programs. + + - A new demo program `ftsdf` is available to display Signed Distance + Fields of glyphs. + + - The `ftlint` demo program has been extended to do more testing of + its input. In particular, it can display horizontal and vertical + acutances for quality assessment, together with computing MD5 + checksums of rendered glyphs. + + [The acutance measures how sharply the pixel coverage changes at + glyph edges. For monochrome bitmaps, it is always 2.0 in either + X or Y direction. For anti-aliased bitmaps, it depends on the + hinting and the shape of a glyph and might approach or even reach + value 2.0 for glyphs like 'I', 'L', '+', '-', or '=', while it + might be lower for glyphs like 'O', 'S', or 'W'.] + + - The `ttdebug` demo program didn't show changed point coordinates + (bug introduced in version 2.10.3). + + - It is now possible to adjust the axis increment for variable fonts + in the `ftmulti` demo program. + + - It is now possible to change the hinting engine in the `ftstring` + demo program. + + - The graphical demo programs work better now in native color depth + on win32 and x11. + + +====================================================================== + +CHANGES BETWEEN 2.10.3 and 2.10.4 (2020-Oct-20) + + I. IMPORTANT BUG FIXES + + - A heap buffer overflow has been found in the handling of embedded + PNG bitmaps, introduced in FreeType version 2.6. + + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-15999 + + If you use option FT_CONFIG_OPTION_USE_PNG you should upgrade + immediately. + + +====================================================================== + +CHANGES BETWEEN 2.10.2 and 2.10.3 (2020-Oct-10) + + I. IMPORTANT CHANGES + + - New flag `FT_OUTLINE_OVERLAP'. If set, make the smooth rasterizer + do 4x4 oversampling to mitigate artifacts in pixels partially + covered by overlapping contours. Note that this at least + quadruples the rendering time. + + If a glyph in a TrueType font has the `OVERLAP_SIMPLE' or + `OVERLAP_COMPOUND' bit set, FreeType automatically selects this + rendering mode. + + + II. MISCELLANEOUS + + - Using the arcane method of including FreeType header files with + macros like `FT_FREETYPE_H' is no longer mandatory (but retained + as an optional feature for backward compatibility). + + - Support for building the library with Meson. Building the demo + programs with Meson will follow in a forthcoming release. + + - Minor improvements to the B/W rasterizer. + + - Auto-hinter support for Medefaidrin script. + + - Fix various memory leaks (mainly for CFF) and other issues that + might cause crashes in rare circumstances. + + - Jam support has been removed. + + - In `ftview', custom LCD filter values are now normalized and + balanced. Unorthodox filters are still available through the `-L' + command line option. + + - The GUI demo programs can now be resized. + + - Demo programs that accept command line option `-k' can now handle + function keys, too. The corresponding character codes start with + 0xF1. As an example, the POSIX shell syntax (accepted by bash, + ksh, and zsh) + + -k $'\xF3q' + + emulates the pressing of function key `F3' followed by key `q'. + + +====================================================================== + +CHANGES BETWEEN 2.10.1 and 2.10.2 (2020-May-09) + + I. IMPORTANT CHANGES + + - Support of WOFF2 fonts. This code contribution was Nikhil + Ramakrishnan's GSoC 2019 project. + + + II. MISCELLANEOUS + + - Function `FT_Get_Var_Axis_Flags' returned random data for Type 1 + MM fonts. + + - Type 1 fonts with non-integer metrics are now supported by the new + (CFF) engine introduced in FreeType 2.9. + + - Drop support for Python 2 in Freetype's API reference generator + `docwriter' (Python >= 3.5 is required for targets `make refdoc' + and `make refdoc-venv'). + + - Auto-hinter support for Hanifi Rohingya. + + - Document the `FT2_KEEP_ALIVE' debugging environment variable. + + - The Visual C++ (and Visual C) project files for Windows builds no + longer generate libraries that contain the FreeType version in its + filenames. Instead, a resource file gets used to make the + libraries contain the corresponding information. + + - The next release will remove Jam build support. + + - The `ftbench' demo program has a new test for testing the + `FT_Glyph_Stroke' functionality. + + +====================================================================== + +CHANGES BETWEEN 2.10.0 and 2.10.1 (2019-Jul-01) + + I. IMPORTANT BUG FIXES + + - The bytecode hinting of OpenType variation fonts was flawed, since + the data in the `CVAR' table wasn't correctly applied. + + + II. MISCELLANEOUS + + - Auto-hinter support for Mongolian. + + - For distribution, `.tar.bz2' packages are replaced with `.tar.xz' + bundles. + + - The handling of the default character in PCF fonts as introduced + in version 2.10.0 was partially broken, causing premature abortion + of charmap iteration for many fonts. + + - If `FT_Set_Named_Instance' was called with the same arguments + twice in a row, the function returned an incorrect error code the + second time. + + - Direct rendering using FT_RASTER_FLAG_DIRECT crashed (bug + introduced in version 2.10.0). + + - Increased precision while computing OpenType font variation + instances. + + - The flattening algorithm of cubic Bezier curves was slightly + changed to make it faster. This can cause very subtle rendering + changes, which aren't noticeable by the eye, however. + + - The auto-hinter now disables hinting if there are blue zones + defined for a `style' (i.e., a certain combination of a script and + its related typographic features) but the font doesn't contain any + characters needed to set up at least one blue zone. + + - The `ftmulti' demo program now supports multiple hidden axes with + the same name tag. + + - `ftview', `ftstring', and `ftgrid' got a `-k' command line option + to emulate a sequence of keystrokes at start-up. + + - `ftview', `ftstring', and `ftgrid' now support screen dumping to a + PNG file. + + - The bytecode debugger, `ttdebug', now supports variation TrueType + fonts; a variation font instance can be selected with the new `-d' + command line option. + + +====================================================================== + +CHANGES BETWEEN 2.9.1 and 2.10.0 (2019-Mar-15) + + I. IMPORTANT CHANGES + + - A bunch of new functions has been added to access and process + COLR/CPAL data of OpenType fonts with color-layered glyphs. + + FT_Palette_Data_Get + Retrieve color palette data. + FT_Palette_Select + Select and activate a color palette for color-layered + glyphs. + FT_Palette_Set_Foreground_Color + Set text foreground color for palette index 0xFFFF. + + FT_Get_Color_Glyph_Layer + Get color layers for a given glyph (using an iterator + object). + + FT_Bitmap_Blend + Blend one bitmap onto another with a given color. + + - An experimental feature is the new behaviour of the + `FT_LOAD_COLOR' load flag for color-layered glyphs: Internally + it sets a flag so that if `FT_Render_Glyph' is called with + `FT_RENDER_MODE_NORMAL' (or `FT_Load_Glyph' with + `FT_LOAD_RENDER'), a default blending of the color glyph layers + will happen automatically for convenience. + + - As a GSoC 2018 project, Nikhil Ramakrishnan completely + overhauled and modernized the API reference. + + + II. MISCELLANEOUS + + - The logic for computing the global ascender, descender, and + height of OpenType fonts has been slightly adjusted for + consistency. + + . If the `useTypoMetrics' flag (i.e., bit 7 in the `fsSelection' + field) in the `OS/2' table is set, use the `sTypo' fields in + `OS/2' unconditionally. + . Otherwise use the metrics data from the `hhea' table (if not + zero). + . Otherwise use the `sTypo' fields from the `OS/2' table (if not + zero). + . Otherwise use the `usWin' data from the `OS/2' table as a last + resort. + + Variable fonts will apply the `MVAR' deltas to whichever metrics + were picked. + + - `TT_Set_MM_Blend' could fail if call repeatedly with the same + arguments. + + - The precision of handling deltas in Variation Fonts has been + increased. The problem did only show up with multidimensional + designspaces. + + - New function `FT_Library_SetLcdGeometry' to set up the geometry + of LCD subpixels. + + - FreeType now uses the `defaultChar' property of PCF fonts to set + the glyph for the undefined character at glyph index 0 (as + FreeType already does for all other supported font formats). As + a consequence, the order of glyphs of a PCF font if accessed + with FreeType can be different now compared to previous + versions. + + This change doesn't affect PCF font access with cmaps. + + - `FT_Select_Charmap' has been changed to allow parameter value + `FT_ENCODING_NONE', which is valid for BDF, PCF, and Windows FNT + formats to access built-in cmaps that don't have a predefined + `FT_Encoding' value. + + - A previously reserved field in the `FT_GlyphSlotRec' structure + now holds the glyph index. + + - On Win32 platforms, the use of `_DLL' to build the library has + been replaced with `DLL_EXPORT' and `DLL_IMPORT'. + + - The usual round of fuzzer bug fixes to better reject malformed + fonts. + + - `FT_Outline_New_Internal' and `FT_Outline_Done_Internal' have + been removed. These two functions were public by oversight only + and were never documented. + + - A new function `FT_Error_String' returns descriptions of error + codes if configuration macro FT_CONFIG_OPTION_ERROR_STRINGS is + defined. + + - `FT_Set_MM_WeightVector' and `FT_Get_MM_WeightVector' are new + functions limited to Adobe MultiMaster fonts to directly set and + get the weight vector. + + - Support for Position Independent Code as needed by systems that + prohibit automatic address fixups, such as BREW, has been + removed. [Compilation with modern compilers that use flags like + `-fPIC' or `-fPIE' is not affected.] + + - The `ftdump' demo program has new options `-c' and `-C' to + display charmaps in compact and detailed format, respectively. + Option `-V' has been removed. + + - The `ftview', `ftstring', and `ftgrid' demo programs use a new + command line option `-d' to specify the program window's width, + height, and color depth. + + - The `ftview' demo program now displays red boxes for zero-width + glyphs. + + - `ftglyph' has limited support to display fonts with + color-layered glyphs. This will be improved later on. + + - `ftgrid' can now display bitmap fonts also. + + - The `ttdebug' demo program has a new option `-f' to select a + member of a TrueType collection (TTC). + + - Other various improvements to the demo programs. + + +====================================================================== + +CHANGES BETWEEN 2.9 and 2.9.1 (2019-May-01) + + I. IMPORTANT BUG FIXES + + - Type 1 fonts containing flex features were not rendered + correctly (bug introduced in version 2.9). + + - CVE-2018-6942: Older FreeType versions can crash with certain + malformed variation fonts. + + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-6942 + + + II. MISCELLANEOUS + + - Bug fix: Multiple calls to `FT_Get_MM_Var' returned garbage. + + - The base extensions `ftlcdfil' and `ftfntfmt' are now part of + the base module (and thus no longer configurable in file + `modules.cfg'). + + - Emboldening of bitmaps didn't work correctly sometimes, showing + various artifacts (bug introduced in version 2.8.1). + + - Use of the `freetype-config' script to get compilation and + linking options is deprecated since it doesn't support + cross-compiling, among other deficiencies. Instead, you should + use the `pkg-config' interface. + + The `configure' script no longer installs `freetype-config' by + default. For backward compatibility, a new configure option + `--enable-freetype-config' is provided that reverts this + decision. + + - The auto-hinter script ranges have been updated for Unicode 11. + No support for new scripts have been added, however, with the + exception of Georgian Mtavruli. + + - Support for cmake has been improved. + + - The next release will remove support for Position Independent + Code as needed by systems that prohibit automatic address + fixups, such as BREW. [Compilation with modern compilers that + use flags like `-fPIC' or `-fPIE' is not affected.] + + +====================================================================== + +CHANGES BETWEEN 2.8.1 and 2.9 (2018-Jan-08) + + I. IMPORTANT BUG FIXES + + - Advance width values of variation fonts were often wrong. + + - More fixes for variation font support; you should update to this + version if you want to support them. + + + II. IMPORTANT CHANGES + + - As a GSoC project, Ewald Hew extended the new (Adobe) CFF engine + to handle Type 1 fonts also, thus greatly improving the + rendering of this format. This is the new default. The old + engine is still available if the configuration macro + `T1_CONFIG_OPTION_OLD_ENGINE' gets defined; using the + `hinting-engine' property of the `type1' driver module you can + then switch between the two engines. + + - A new function, `FT_Set_Named_Instance', can be used to set or + change the current named instance. + + - Starting with this FreeType version, resetting variation + coordinates will return to the currently selected named + instance. Previously, FreeType returned to the base font (i.e., + no instance set). + + + III. MISCELLANEOUS + + - The `face_flags' field of the `FT_Face' structure has a new bit, + `FT_FACE_FLAG_VARIATION', which is set if a variation font has + been altered with `FT_Set_MM_Design_Coordinates', + `FT_Set_Var_Design_Coordinates', or + `FT_Set_Var_Blend_Coordinates'. + + - If the current face is a named instance, the new macro + `FT_IS_NAMED_INSTANCE' returns true. + + - `FT_IS_VARIATION' is a new macro that returns true whenever a + face object has been altered by `FT_Set_MM_Design_Coordinates', + `FT_Set_Var_Design_Coordinates', or + `FT_Set_Var_Blend_Coordinates'. + + - Changing the design coordinates of a variation font with + `FT_Set_Var_Design_Coordinates' or + `FT_Set_Var_Blend_Coordinates' does not influence the named + instance index value (only `FT_Set_Named_Instance' does that). + + - Special PostScript names for named instances are only returned + if the named instance is set with `FT_Set_Named_Instance' (and + the font has corresponding entries in its `fvar' table). If + `FT_IS_VARIATION' returns true, the algorithmically derived + PostScript name is provided, not looking up special entries for + named instances. + + - A new function `FT_Done_MM_Var' is provided to free the memory + returned in a call to `FT_Get_MM_Var'. + + - On platforms using the `configure' script, the installed + `ftoption.h' file now correctly reflects configuration options + like `--with-harfbuzz'. + + - Better support to build FreeType as a DLL on Windows using + Visual C. + + - All data specific to driver modules is now collected in a single + file, `FT_DRIVER_H'. Consequently, the macros + `FT_AUTOHINTER_H', `FT_CFF_DRIVER_H', `FT_TRUETYPE_DRIVER_H', + and `FT_PCF_DRIVER_H' still work but are deprecated. + + - Some fuzzer fixes to better reject malformed fonts. + + - The `ftbench' demo program has a new test for opening a new face + and loading some glyphs. + + - The `ftbench' demo program has a new option `-j' to specify the + last glyph index to be used in the tests. + + - The `ftgrid' demo program has a new option `-n' to suppress + display of named instances of variation fonts. + + - The `ttdebug' demo program can now show a stack trace (key `K') + and switch between hexadecimal and decimal display of integers + (key `I'). + + +====================================================================== + +CHANGES BETWEEN 2.8 and 2.8.1 (2017-Sep-16) + + I. IMPORTANT BUG FIXES + + - B/W hinting of TrueType fonts didn't work properly if + interpreter version 38 or 40 was selected. + + - Some severe problems within the handling of TrueType Variation + Fonts were found and fixed. + + - Function `FT_Set_Var_Design_Coordinates' didn't correctly handle + the case with less input coordinates than axes. + + + II. IMPORTANT CHANGES + + - By default, FreeType now offers high quality LCD-optimized + output without resorting to ClearType techniques of resolution + tripling and filtering. In this method, called Harmony, each + color channel is generated separately after shifting the glyph + outline, capitalizing on the fact that the color grids on LCD + panels are shifted by a third of a pixel. This output is + indistinguishable from ClearType with a light 3-tap filter. + + + III. MISCELLANEOUS + + - Using the new function `FT_Get_Var_Axis_Flags', an application + can access the `flags' field of a variation axis (introduced in + OpenType version 1.8.2) + + - More sanity checks. + + - The internal representation of buffers for LCD rendering has + changed (to be more precise, the amount of padding gets computed + differently). Applications that use the FreeType API are not + affected. + + - To reset all design axis values of a variation font to its + default values you can now say + + error = FT_Set_Var_Design_Coordinates( face, 0, NULL ); + + This also works with functions `FT_Set_MM_Design_Coordinates' + and `FT_Set_MM_Blend_Coordinates'. + + - FreeType now synthesizes a missing Unicode cmap for (older) + TrueType fonts also if glyph names are available. + + - FreeType has improved handling of BDF fonts without the + `POINT_SIZE', `RESOLUTION_X', or `RESOLUTION_Y' properties; the + library now uses the values of the `SIZE' keyword if they are + missing. Previously, `SIZE' was completely ignored, and + FreeType used heuristic values instead. + + - Multiple calls to `FT_Bitmap_Convert' do work now as advertised. + Previously, they failed with an assertion error if there was an + empty bitmap between non-empty ones. + + - The warping option has moved from `light' to `normal' hinting + where it replaces the original hinting algorithm. The `light' + mode is now always void of any hinting in x-direction. + + - 16bit compiler support is now officially ended. We didn't + provide any maintenance since many years, and given that there + were no error or problem reports either it seems that it is no + longer needed. + + - The `ftgrid' demo program can now toggle the display of grid + lines with the `G' key. + + - The `ftgrid' demo program can toggle a different set of colors + (suitable to color-blind people) with the `C' key. + + - The `ftgrid' demo program now supports the `-e' command line + option to select a cmap. + + - The `ftdump' demo program has a new command line option `-t' to + output the SFNT table list. + + +====================================================================== + +CHANGES BETWEEN 2.7.1 and 2.8 (2017-May-13) + + I. IMPORTANT CHANGES + + - Support for OpenType Variation Fonts is now complete. The last + missing part was handling the `VVAR' and `MVAR' tables, which is + available with this release. + + - A new function `FT_Face_Properties' allows the control of some + module and library properties per font. Currently, the + following properties can be handled: stem darkening, LCD filter + weights, and the random seed for the `random' CFF operator. + + - The PCF change to show more `colorful' family names (introduced + in version 2.7.1) was too radical; it can now be configured with + PCF_CONFIG_OPTION_LONG_FAMILY_NAMES at compile time. If + activated, it can be switched off at run time with the new pcf + property `no-long-family-names'. If the `FREETYPE_PROPERTIES' + environment variable is available, you can say + + FREETYPE_PROPERTIES=pcf:no-long-family-names=1 + + - Support for the following scripts has been added to the + auto-hinter. + + Adlam, Avestan, Bamum, Buhid, Carian, Chakma, Coptic, Cypriot, + Deseret, Glagolitic, Gothic, Kayah, Lisu, N'Ko, Ol Chiki, Old + Turkic, Osage, Osmanya, Saurashtra, Shavian, Sundanese, Tai + Viet, Tifinagh, Unified Canadian Syllabics, Vai + + + II. IMPORTANT BUG FIXES + + - `Light' auto-hinting mode no longer uses TrueType metrics for + TrueType fonts. This bug was introduced in version 2.4.6, + causing horizontal scaling also. Almost all GNU/Linux + distributions (with Fedora as a notable exception) disabled the + corresponding patch for good reasons; chances are thus high that + you won't notice a difference. + + If optical backward compatibility for legacy applications is + necessary, you might enable the AF_CONFIG_OPTION_TT_SIZE_METRICS + configuration option. However, it is strongly recommended to + avoid that, adjusting font sizes instead. + + - Global size metrics values in the `FT_Size_Metrics' structure + can be different for TrueType fonts. Reason is that in older + FreeType versions the metrics were rounded differently to + integer pixels compared to all other font formats, yielding an + inconsistent behaviour if you used non-native hinting. Starting + with this version, global size metrics for TrueType fonts are + handled the same as other font formats: `ascender' gets rounded + up, `descender' gets rounded down, `height' gets normally + rounded, and `max_advance' gets normally rounded, too. + + If you need more precise values of (global) ascender, descender, + height, or `max_advance', please take the corresponding values + from the `FT_Face' structure and scale them manually. + + - If a TrueType font gets loaded with FT_LOAD_NO_HINTING, FreeType + now scales the font linearly again (bug introduced in version + 2.4.6). + + - CVE-2017-8105, CVE-2017-8287: Older FreeType versions have + out-of-bounds writes caused by heap-based buffer overflows + related to Type 1 fonts. + + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-8105 + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-8287 + + + III. MISCELLANEOUS + + - A new function `FT_Set_Default_Properties' has been added to + parse the `FREETYPE_PROPERTIES' environment variable + (previously, it was internal only). `FT_Init_FreeType' always + call this function, but `FT_New_Library' does not (similar to + `FT_Add_Default_Modules'). + + - To be in sync with OpenType version 1.7 and newer, macros + + FT_PARAM_TAG_IGNORE_PREFERRED_FAMILY, + FT_PARAM_TAG_IGNORE_PREFERRED_SUBFAMILY, + TT_NAME_ID_PREFERRED_FAMILY + TT_NAME_ID_PREFERRED_SUBFAMILY + + are renamed to + + FT_PARAM_TAG_IGNORE_TYPOGRAPHIC_FAMILY, + FT_PARAM_TAG_IGNORE_TYPOGRAPHIC_SUBFAMILY, + TT_NAME_ID_TYPOGRAPHIC_FAMILY + TT_NAME_ID_TYPOGRAPHIC_SUBFAMILY + + The old macro names are deprecated (but still available). + + - Support for SFNT `name' tables has been improved. + + . Format 1 `name' tables are now supported. Use new function + `FT_Get_Sfnt_LangTag' to access associated language tags. + + . Language, encoding, and name IDs have been updated to OpenType + version 1.8.1. + + - The new CFF engine now handles the `random' operator. All CFF + opcodes are now supported. + + - The CFF module has a new property `random-seed' to control the + pseudo-random number generation for the `random' operator. + + - The `freetype-config' script is now a wrapper of `pkg-config' if + this program is available in the path. + + - FT_LOAD_TARGET_LCD is now a variant of FT_LOAD_TARGET_LIGHT; + this should provide better rendering results. + + - A mode to display light auto-hinting with subpixel positioning + has been added to `ftdiff'. + + +====================================================================== + +CHANGES BETWEEN 2.7 and 2.7.1 (2016-Dec-30) + + I. IMPORTANT CHANGES + + - Support for the new CFF2 font format as introduced with OpenType + 1.8 has been contributed by Dave Arnolds from Adobe. + + - Preliminary support for variation fonts as specified in OpenType + 1.8 (in addition to the already existing support for Adobe's MM + and Apple's GX formats). Dave Arnolds contributed handling of + advance width change variation; more will come in the next + version. + + + II. IMPORTANT BUG FIXES + + - Handling of raw CID fonts was partially broken (bug introduced + in 2.6.4). + + - CVE-2016-10328: Older FreeType versions had an out-of-bounds + write caused by a heap-based buffer overflow related to the CFF + fonts. + + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-10328 + + + III. MISCELLANEOUS + + - Some limits for TrueType bytecode execution have been tightened + to speed up FreeType's handling of malformed fonts, in + particular to quickly abort endless loops. + + - The number of twilight points can no longer be set to an + arbitrarily large value. + + - The total number of jump opcode instructions (like JMPR) with + negative arguments is dynamically restricted; the same holds + for the total number of iterations in LOOPCALL opcodes. + + The dynamic limits are based on the number of points in a glyph + and the number of CVT entries. Please report if you encounter a + font where the selected values are not adequate. + + - PCF family names are made more `colorful'; they now include the + foundry and information whether they contain wide characters. + For example, you no longer get `Fixed' but rather `Sony Fixed' + or `Misc Fixed Wide'. + + - A new function `FT_Get_Var_Blend_Coordinates' (with its alias + name `FT_Get_MM_Blend_Coordinates') to retrieve the normalized + blend coordinates of the currently selected variation instance + has been added to the Multiple Masters interface. + + - A new function `FT_Get_Var_Design_Coordinates' to retrieve the + design coordinates of the currently selected variation instance + has been added to the Multiple Masters interface. + + - A new load flag `FT_LOAD_BITMAP_METRICS_ONLY' to retrieve bitmap + information without loading the (embedded) bitmap itself. + + - Retrieving advance widths from bitmap strikes (using + `FT_Get_Advance' and `FT_Get_Advances') have been sped up. + + - The usual round of fuzzer fixes to better reject malformed + fonts. + + - The `ftmulti' demo program can now switch engines with key `H'. + + - The `ftstring' demo program can now show some built-in, + non-latin sample strings (to be selected with the TAB key). + + - The `ftview' demo program can now switch between a font's + charmaps using the TAB key. + + +====================================================================== + +CHANGES BETWEEN 2.6.5 and 2.7 (2016-Sep-08) + + I. IMPORTANT CHANGES + + - As announced earlier, the 2.7.x series now uses the new subpixel + hinting mode as the default, emulating a modern version of + ClearType. + + This change inevitably leads to different rendering results, and + you might change the `TT_CONFIG_OPTION_SUBPIXEL_HINTING' + configuration option to adapt it to your taste (or use the new + `FREETYPE_PROPERTIES' environment variable). See the + corresponding entry below for version 2.6.4, which gives more + information. + + - A new option `FT_CONFIG_OPTION_ENVIRONMENT_PROPERTIES' has been + introduced. If set (which is the default), an environment + variable `FREETYPE_PROPERTIES' can be used to control driver + properties. Example: + + FREETYPE_PROPERTIES=truetype:interpreter-version=35 \ + cff:no-stem-darkening=1 \ + autofitter:warping=1 + + This allows to select, say, the subpixel hinting mode at runtime + for a given application. See file `ftoption.h' for more. + + + II. IMPORTANT BUG FIXES + + - After loading a named instance of a GX variation font, the + `face_index' value in the returned `FT_Face' structure now + correctly holds the named instance index in the upper 16bits as + documented. + + + III. MISCELLANEOUS + + - A new macro `FT_IS_NAMED_INSTANCE' to test whether a given face + is a named instance. + + - More fixes to GX font handling. + + - Apple's `GETVARIATION' bytecode operator (needed for GX + variation font support) has been implemented. + + - Another round of fuzzer fixes, mainly to reject invalid fonts + faster. + + - Handling of raw CID fonts was broken (bug introduced in version + 2.6.4). + + - The smooth rasterizer has been streamlined to make it faster by + approx. 20%. + + - The `ftgrid' demo program now understands command line option + `-d' to give start-up design coordinates. + + - The `ftdump' demo program has a new command line option `-p' to + dump TrueType bytecode instructions. + + +====================================================================== + +CHANGES BETWEEN 2.6.4 and 2.6.5 (2016-Jul-12) + + I. IMPORTANT BUG FIXES + + - Compilation works again on Mac OS X (bug introduced in version + 2.6.4). + + + II. 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 (2016-Jul-05) + + 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 improvements 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 (2016-Feb-08) + + 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 backward 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 (2015-Nov-28) + + 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 subpixel rendering; use + key `l' to cycle through the LCD modes. + + - The `ftstring' demo program now supports color rendering; use + the `space' key to cycle through various color 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 (2015-Oct-04) + + 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 (2015-Jun-07) + + 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 backward + 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 backward 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 backward 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 (2014-Dec-30) + + I. IMPORTANT BUG FIXES + + - Handling of uncompressed PCF files works again (bug introduced + in version 2.5.4). + + +====================================================================== + +CHANGES BETWEEN 2.5.3 and 2.5.4 (2014-Dec-06) + + I. IMPORTANT BUG FIXES + + - A variant of vulnerability CVE-2014-2240 was identified + (cf. https://savannah.nongnu.org/bugs/?43661) and fixed in the + new CFF driver. All users should upgrade. + + - The new auto-hinter code using HarfBuzz crashed for some invalid + fonts. + + - Many fixes to better protect against malformed input. + + + II. IMPORTANT CHANGES + + - Full auto-hinter support of the Devanagari script. + + - Experimental auto-hinter support of the Telugu script. + + - CFF stem darkening behaviour can now be controlled at build time + using the eight macros + + CFF_CONFIG_OPTION_DARKENING_PARAMETER_{X,Y}{1,2,3,4} . + + - Some fields in the `FT_Bitmap' 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. + + + III. MISCELLANEOUS + + - Improvements to the auto-hinter's algorithm to recognize stems + and local extrema. + + - Function `FT_Get_SubGlyph_Info' always returned an error even in + case of success. + + - Version 2.5.1 introduced major bugs in the cjk part of the + auto-hinter, which are now fixed. + + - The `FT_Sfnt_Tag' enumeration values have been changed to + uppercase, e.g. `FT_SFNT_HEAD'. The lowercase variants are + deprecated. This is for orthogonality with all other + enumeration (and enumeration-like) values in FreeType. + + - `cmake' now supports builds of FreeType as an OS X framework and + for iOS. + + - Improved project files for vc2010, introducing a property file. + + - The documentation generator for the API reference has been + updated to produce better HTML code (with proper CSS). At the + same time, the documentation got a better structure. + + - The FT_LOAD_BITMAP_CROP flag is obsolete; it is not used by any + driver. + + - The TrueType DELTAP[123] bytecode instructions now work in + subpixel hinting mode as described in the ClearType whitepaper + (i.e., for touched points in the non-subpixel direction). + + - Many small improvements to the internal arithmetic routines. + + +====================================================================== + +CHANGES BETWEEN 2.5.2 and 2.5.3 (2014-Mar-06) + + I. IMPORTANT BUG FIXES + + - A vulnerability (CVE-2014-2240) was identified and fixed in the + new CFF driver (cf. https://savannah.nongnu.org/bugs/?41697). + All users should upgrade. + + - More bug fixes related to correct positioning of composite + glyphs. + + - Many fixes to better protect against malformed input. + + + II. IMPORTANT CHANGES + + - FreeType can now use the HarfBuzz library to greatly improve the + auto-hinting of fonts that use OpenType features: Many glyphs + that are part of such features but don't have cmap entries are + now handled properly, for example small caps or superscripts. + Define the configuration macro FT_CONFIG_OPTION_USE_HARFBUZZ to + activate HarfBuzz support. + + You need HarfBuzz version 0.9.19 or newer. + + Note that HarfBuzz depends on FreeType; this currently causes a + chicken-and-egg problem that can be solved as follows in case + HarfBuzz is not yet installed on your system. + + 1. Compile and install FreeType without the configuration + macro FT_CONFIG_OPTION_USE_HARFBUZZ. + + 2. Compile and install HarfBuzz. + + 3. Define macro FT_CONFIG_OPTION_USE_HARFBUZZ, then compile + and install FreeType again. + + With FreeType's `configure' script the procedure boils down to + configure, build, and install FreeType, then configure, compile, + and install HarfBuzz, then configure, compile, and install + FreeType again (after executing `make distclean'). + + - All libraries FreeType depends on are now checked using the + `pkg-config' configuration files first, followed by alternative + methods. + + - The new value `auto' for the various `--with-XXX' library + options (for example `--with-harfbuzz=auto') makes the + `configure' script automatically link to the libraries it finds. + This is now the default. + + - In case FreeType's `configure' script can't find a library, you + can pass environment variables to circumvent pkg-config, and + those variables have been harmonized as a consequence of the + changes mentioned above: + + LIBZ -> removed; use LIBZ_CFLAGS and LIBZ_LIBS + LIBBZ2 -> removed; use BZIP2_CFLAGS and BZIP2_LIBS + LIBPNG_LDFLAGS -> LIBPNG_LIBS + + `./configure --help' shows all available environment variables. + + - The `freetype-config' script now understands option `--static' + to emit static linking information. + + +====================================================================== + +CHANGES BETWEEN 2.5.1 and 2.5.2 (2013-Dec-08) + + I. IMPORTANT BUG FIXES + + - Improving the display of some broken TrueType fonts introduced a + bug that made FreeType crash on some popular (but not fully + conformant) fonts like `ahronbd.ttf'. + + - Another round of improvements to correct positioning and hinting + of composite glyphs in TrueType fonts. + + + II. MISCELLANEOUS + + - Version 2.5.1 introduced a bug in handling embedded bitmap + strikes of TrueType fonts, causing garbage display under some + circumstances. + + - The `ftgrid' demo program couldn't be compiled in + non-development builds. + + +====================================================================== + +CHANGES BETWEEN 2.5 and 2.5.1 (2013-Nov-25) + + I. IMPORTANT BUG FIXES + + - For some WinFNT files, the last glyph wasn't displayed but + incorrectly marked as invalid. + + - The vertical size of glyphs was incorrectly set after a call to + `FT_GlyphSlot_Embolden', resulting in clipped glyphs. + + - Many fields of the `PCLT' table in SFNT based fonts (if accessed + with `FT_Get_Sfnt_Table') were computed incorrectly. + + - In TrueType fonts, hinting of composite glyphs could sometimes + deliver incorrect positions of components or even distorted + shapes. + + + II. IMPORTANT CHANGES + + - WOFF font format support has been added. + + - The auto-hinter now supports Hebrew. Greek and Cyrillic support + has been improved. + + - Support for the forthcoming `OS/2' SFNT table version 5, as can + be found e.g. in the `Sitka' font family for Windows 8.1. + + - The header file layout has been changed. After installation, + all files are now located in `/include/freetype2'. + + 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. + + + III. MISCELLANEOUS + + - The stem darkening feature of the new CFF engine can now be + fine-tuned with the new `darkening-parameters' property. + + - `ftgrid' has been updated to toggle various engines with the `H' + key, similar to `ftview' and `ftdiff'. + + - The functionality of `ttdebug' has been greatly enhanced. + + . It now displays twilight, storage, and control value data; key + `T' shows the twilight point table, key `S' the storage data, + and key `C' the control value table. + + . Some keys have been reassigned from lowercase to their + uppercase equivalents; for example `q' to quit the program is + now `Q'. + + . Key `f' finishes the current function. + + . Key `R' restarts the debugger. + + . Keys `b' and `p' set a breakpoint. + + . Key `B' provides a function call backtrace. + + - Better support of ARMv7 and x86_64 processors. + + - Apple's `sbix' color bitmap format is now supported. + + - Improved auto-hinter rendering for many TrueType fonts, + especially in the range 20-40ppem. + + - A new face flag `FT_FACE_FLAG_COLOR' has been added (to be + accessed with the macro `FT_HAS_COLOR'). + + - `FT_Gzip_Uncompress' (modeled after zlib's `uncompress' + function) has been added; this is a by-product of the newly + added WOFF support. + + - Support for a build with `cmake' has been contributed by John + Cary . + + - Support for x64 builds with Visual C++ has been contributed by + Kenneth Miller + + - Manual pages for most demo programs have been added. + + - The GETINFO bytecode instruction for TrueType fonts was buggy if + used to retrieve subpixel hinting information. It was necessary + to set selector bit 6 to get results for selector bits 7-10, + which is wrong. + + - Improved computation of emulated vertical metrics for TrueType + fonts. + + - Fixed horizontal start-up position of vertical phantom points in + TrueType bytecode. + + +====================================================================== + +CHANGES BETWEEN 2.4.12 and 2.5 (2013-Jun-19) + + I. IMPORTANT BUG FIXES + + - The cache manager function `FTC_Manager_Reset' didn't flush the + cache. + + + II. IMPORTANT CHANGES + + - Behdad Esfahbod (on behalf of Google) contributed 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. + + - As announced in the previous release, the old FreeType CFF + engine is now disabled by default. It can be conditionally + compiled by defining the configuration macro + CFF_CONFIG_OPTION_OLD_ENGINE. + + - As announced in the previous release, all code related to macro + FT_CONFIG_OPTION_OLD_INTERNALS has been removed, thus becoming + obsolete. + + + III. MISCELLANEOUS + + - The property API (`FT_Property_Get' and `FT_Property_Set') is + now declared as stable. + + The exception, however, are the experimental auto-hinter + properties `glyph-to-script-map' and `fallback-script' which are + subject to change in a forthcoming release. + + - `ftview' has been updated to support color embedded bitmaps; it + can be toggled on and off with key `c'. The small cache toggle + is now key `K'. + + - It is now possible to control the version of the TrueType + hinting engine using the new `interpreter-version' property of + the `truetype' module: Versions 35 and 38 (the default) are + supported, which roughly corresponds to disable and enable + subpixel hinting support, respectively. + + In both `ftview' and `ftdiff', switching between the two + versions can be done with key `H'. In the `ftbench' demo + program, command line option `-H' has been extended to activate + the non-default interpreter version. + + - The `ttdebug' program has been further improved. In particular, + it accepts a new command line option `-H' to select the hinting + engine. + + - `ftdump's verbose option has been renamed to `-V'. For all demo + programs, `-v' now shows version information. + + - Another round of TrueType subpixel hinting fixes. + + - The `apinames' tool can now create an import file for NetWare. + + - 64bit compilation of the new CFF engine was buggy. + + - Some fixes to improve robustness in memory-tight situations. + + +====================================================================== + +CHANGES BETWEEN 2.4.11 and 2.4.12 (2013-May-08) + + - We have another CFF parsing and hinting engine! Written by Dave + Arnold , this work has been contributed by + Adobe in collaboration with Google. It is vastly superior to + the old CFF engine, and it will replace it in the next release. + Right now, it is still off by default, and you have to + explicitly select it using the new `hinting-engine' property of + the cff driver: + + ... + #include FT_MODULE_H + #include FT_CFF_DRIVER_H + + FT_Library library; + int engine = FT_CFF_HINTING_ADOBE; + + + ... + FT_Property_Set( library, "cff", "hinting-engine", &engine ); + + The code has a (mature) beta status; we encourage all users to + test it and report any problems. + + In case you want to activate the new CFF engine unconditionally, + apply this patch: + +--- snip --- +diff --git a/src/cff/cffobjs.c b/src/cff/cffobjs.c +index ebcf189..3f2ce6b 100644 +--- a/src/cff/cffobjs.c ++++ b/src/cff/cffobjs.c +@@ -1056,7 +1056,7 @@ + + + /* set default property values */ +- driver->hinting_engine = FT_CFF_HINTING_FREETYPE; ++ driver->hinting_engine = FT_CFF_HINTING_ADOBE; + driver->no_stem_darkening = FALSE; + + return FT_Err_Ok; +--- snip --- + + - The macro FT_CONFIG_OPTION_OLD_INTERNALS is no longer set by + default. In the next release, we will completely remove the + associated code. Please update your programs in case you are + still using this macro. + + + II. MISCELLANEOUS + + - The (top-level) `configure' script now respects the MAKE + environment variable to specify a `make' binary. For backward + compatibility, GNUMAKE still overrides MAKE, though. + + - The `ftview' and `ftdiff' demo programs have been redesigned, + showing more options permanently on the screen, among other + minor improvements. + + - Using the `H' key, it is now possible to select the CFF engine + in both `ftview' and `ftdiff'. + + - The new command line option `-H' for `ftbench' selects the Adobe + CFF engine. + + - It is now possible to directly select the LCD rendering mode + with the keys `A'-`F' in `ftview'. The key mapping for cycling + through LCD modes has been changed from `K' and `L' to `k' and + `l', and toggling custom LCD filtering is no longer mapped to + key `F' but to key `L'. + + - In `ftdiff', key `x' toggles between layout modes: Either use + the advance width (this is new and now the default) or the + bounding box information to determine line breaks. + + - For all demo tools, the new command line option `-v' shows the + version. + + - For the demo tools with a GUI, the new command line options `-w' + and `-h' select the width and the height of the output window, + respectively. + + - The `ttdebug' program was broken and has been reactivated. Note + that this program is not compiled by default. + + +====================================================================== + +CHANGES BETWEEN 2.4.10 and 2.4.11 (2012-Dec-20) + + I. IMPORTANT BUG FIXES + + - Some vulnerabilities in the BDF implementation have been fixed. + Users of this font format should upgrade. + + + II. IMPORTANT CHANGES + + - Subpixel hinting support has been contributed by Infinality, + based on Greg Hitchcock's whitepaper at + + https://learn.microsoft.com/typography/cleartype/truetypecleartype + + Originally, it was a separate patch available from + + https://web.archive.org/web/20150710073951/http://www.infinality.net:80/blog/ + + and which has been integrated. + + Note that ClearType support is not completely implemented! In + particular, full support for the options `compatible_widths', + `symmetrical_smoothing, and `bgr' (via the GETINFO bytecode + instruction) is missing. + + Activation of subpixel hinting support can be controlled with + the `TT_CONFIG_OPTION_SUBPIXEL_HINTING' configuration option; it + is switched off by default. This feature is still experimental; + we welcome test reports! + + - Support for OpenType collections (OTC) has been added. + + - Pure CFF fonts within an SFNT wrapper are now supported. + + + III. MISCELLANEOUS + + - Minor rendering improvements to the auto-hinter. + + - `FT_GlyphSlot_Oblique' now uses a shear angle of 12°. + + - Experimental support to handle `property modules', for example + to control the behaviour of the auto-hinter. The API consists + of two new functions, `FT_Property_Set' and `FT_Property_Get'. + + The code is still subject to change and should not be used for + production. + + - The `ftdiff' demo program now supports UTF-8 encoded input files + for option `-f'. + + - Using keys `r' and `R', you can now adjust the stroker radius in + the `ftview' demo program. + + - Other, minor fixes and improvements. + + +====================================================================== + +CHANGES BETWEEN 2.4.9 and 2.4.10 (2012-Jun-15) + + I. IMPORTANT BUG FIXES + + - Incremental glyph loading as needed by ghostscript was broken. + + + II. MISCELLANEOUS + + - A new function `FT_Outline_EmboldenXY', contributed by Alexei + Podtelezhnikov. + + - In the `ftview' demo program, key `e' has been replaced with `x' + and `y' to embolden in the horizontal and vertical direction, + respectively. + + - The glyph spacing computation in `FT_GlyphSlot_Embolden' (and + similar code in `ftview') has been improved. + + - Minor improvements to the TrueType bytecode interpreter and + glyph loader, the auto-hinter, and the B/W rasterizer. + + +====================================================================== + +CHANGES BETWEEN 2.4.8 and 2.4.9 (2012-Mar-08) + + I. IMPORTANT BUG FIXES + + - Another round of fixes to better handle invalid fonts. Many of + them are vulnerabilities (see CVE-2012-1126 up to CVE-2012-1144 + and SA48320) so all users should upgrade. + + + II. MISCELLANEOUS + + - The `ENCODING -1 ' format of BDF fonts is now supported. + + - For BDF fonts, support for the whole Unicode encoding range has + been added. + + - Better TTF support for x_ppem != y_ppem. + + - `FT_Get_Advances' sometimes returned bogus values. + + - The demo programs no longer recognize and handle default + suffixes; you now have to always specify the complete font name. + + - Better rendering and LCD mode cycling added to `ftview'. + + +====================================================================== + +CHANGES BETWEEN 2.4.7 and 2.4.8 (2011-Nov-14) + + I. IMPORTANT BUG FIXES + + - Some vulnerabilities in handling CID-keyed PostScript fonts have + been fixed; see CVE-2011-3439. + + + II. MISCELLANEOUS + + - Chris Liddell contributed a new API, `FT_Get_PS_Font_Value', to + retrieve most of the dictionary keys in Type 1 fonts. + + +====================================================================== + +CHANGES BETWEEN 2.4.6 and 2.4.7 (2011-Oct-18) + + I. IMPORTANT BUG FIXES + + - Some vulnerabilities in handling Type 1 fonts have been fixed; + see CVE-2011-3256. + + + II. MISCELLANEOUS + + - FreeType now properly handles ZapfDingbats glyph names while + constructing a Unicode character map (for fonts which don't have + one). + + +====================================================================== + +CHANGES BETWEEN 2.4.5 and 2.4.6 (2011-Jul-29) + + I. IMPORTANT BUG FIXES + + - For TrueType based fonts, the ascender and descender values were + incorrect sometimes (off by a pixel if the ppem value was not a + multiple of 5). Depending on the use you might now experience + a different layout; the change should result in better, more + consistent line spacing. + + - Fix CVE-2011-0226 which causes a vulnerability while handling + Type 1 fonts. + + - BDF fonts containing glyphs with negative values for ENCODING + were incorrectly rejected. This bug has been introduced in + FreeType version 2.2.0. + + - David Bevan contributed a major revision of the FreeType stroker + code: + + . The behaviour of FT_STROKER_LINEJOIN_BEVEL has been corrected. + + . A new line join style, FT_STROKER_LINEJOIN_MITER_FIXED, has + been introduced to support PostScript and PDF miter joins. + + . FT_STROKER_LINEJOIN_MITER_VARIABLE has been introduced as an + alias for FT_STROKER_LINEJOIN_MITER. + + . Various stroking glitches has been fixed. + + + II. MISCELLANEOUS + + - SFNT bitmap fonts which contain an outline glyph for `.notdef' + only no longer set the FT_FACE_FLAG_SCALABLE flag. + + +====================================================================== + +CHANGES BETWEEN 2.4.4 and 2.4.5 (2011-Jun-25) + + I. IMPORTANT BUG FIXES + + - A rendering regression for second-order Bézier curves has been + fixed, introduced in 2.4.3. + + + II. IMPORTANT CHANGES + + - If autohinting is not explicitly disabled, FreeType now uses + the autohinter if a TrueType based font doesn't contain native + hints. + + - The load flag FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH has been made + redundant and is simply ignored; this means that FreeType now + ignores the global advance width value in TrueType fonts. + + + III. MISCELLANEOUS + + - `FT_Sfnt_Table_Info' can now return the number of SFNT tables of + a font. + + - Support for PCF files compressed with bzip2 has been contributed + by Joel Klinghed. To make this work, the OS must provide a + bzip2 library. + + - Bradley Grainger contributed project and solution files in + Visual Studio 2010 format. + + - Again some fixes to better handle broken fonts. + + - Some improvements to the B/W rasterizer. + + - Fixes to the cache module to improve robustness. + + - Just Fill Bugs contributed (experimental) code to compute blue + zones for CJK Ideographs, improving the alignment of horizontal + stems at the top or bottom edges. + + - The `ftgrid' demo program can now display autohinter segments, + to be toggled on and off with key `s'. + + +====================================================================== + +CHANGES BETWEEN 2.4.3 and 2.4.4 (2010-Nov-28) + + I. IMPORTANT BUG FIXES + + - UVS support (TrueType/OpenType cmap format 14) support is fixed. + This regression has been introduced in version 2.4.0. + + + II. MISCELLANEOUS + + - Detect tricky fonts (e.g. MingLiU) by the lengths and checksums + of Type42-persistent subtables (`cvt ', `fpgm', and `prep') when + a TrueType font without family name is given. The previous fix, + introduced in 2.4.3, was too rigorous, causing many subsetted + fonts (mainly from PDF files) displayed badly because FreeType + forced rendering with the TrueType bytecode engine instead of + the autohinter. + + - Better support for 64bit platforms. + + - More fixes to improve handling of broken fonts. + + +====================================================================== + +CHANGES BETWEEN 2.4.2 and 2.4.3 (2010-Oct-03) + + I. IMPORTANT BUG FIXES + + - Fix rendering of certain cubic, S-shaped arcs. This regression + has been introduced in version 2.4.0. + + + II. MISCELLANEOUS + + - To fix the above mentioned rendering issue, a new spline + flattening algorithm has been introduced which speeds up both + conic and cubic arcs. + + - Handling of broken fonts has been further improved. + + +====================================================================== + +CHANGES BETWEEN 2.4.1 and 2.4.2 (2010-Aug-06) + + I. IMPORTANT BUG FIXES + + - A stack overflow in CFF Type2 CharStrings interpreter is fixed. + + - Handling Type 42 font deallocation was broken; additionally, the + library is now more robust against malformed Type 42 fonts. + + + II. MISCELLANEOUS + + - Two new functions, `FT_Reference_Library' (in FT_MODULE_H) and + `FT_Reference_Face' (in FT_FREETYPE_H), have been added to + simplify life-cycle management. A counter gets initialized to 1 + at the time an FT_Library (or FT_Face) structure is created. + The two new functions increment the respective counter. + `FT_Done_Library' and `FT_Done_Face' then only destroy a library + or face if the counter is 1, otherwise they simply decrement the + counter. + + +====================================================================== + +CHANGES BETWEEN 2.4.0 and 2.4.1 (2010-Jul-18) + + I. IMPORTANT CHANGES + + - A serious bug in the CFF font module prevented display of many + glyphs in CFF fonts like `MinionPro-Regular.otf'. + + +====================================================================== + +CHANGES BETWEEN 2.3.12 and 2.4.0 (2010-Jul-12) + + I. IMPORTANT CHANGES + + - Since May 2010, all patents regarding the TrueType bytecode + interpreter have expired worldwide. Consequently, we now define + TT_CONFIG_OPTION_BYTECODE_INTERPRETER by default (and undefine + TT_CONFIG_OPTION_UNPATENTED_HINTING). + + - A new function `FT_Library_SetLcdFilterWeights' is available to + adjust the filter weights set by `FT_Library_SetLcdFilter'. + + + II. MISCELLANEOUS + + - Thanks to many reports from Robert ÅšwiÄ™cki, FreeType's stability + in handling broken or damaged fonts is much improved. + + - Support for LCD filter control has been added to the demo + programs `ftdiff' and `ftview'. + + +====================================================================== + +CHANGES BETWEEN 2.3.11 and 2.3.12 + + I. IMPORTANT CHANGES + + - For `FT_Open_Face', new parameters are available to ignore + preferred family names: FT_PARAM_TAG_IGNORE_PREFERRED_FAMILY and + FT_PARAM_TAG_IGNORE_PREFERRED_SUBFAMILY. + + + II. MISCELLANEOUS + + - Support for incremental font loading (controlled with the + FT_CONFIG_OPTION_INCREMENTAL macro) is now active by default. + + - Better support for vertical metrics. + + - Various minor bug fixes. + + +====================================================================== + +CHANGES BETWEEN 2.3.10 and 2.3.11 + + I. IMPORTANT BUG FIXES + + - Version 2.3.10 broke PCF support. + + +====================================================================== + +CHANGES BETWEEN 2.3.10 and 2.3.9 + + I. IMPORTANT BUG FIXES + + - If all ASCII digits in a font have the same (unscaled) width, + the autohinter respects this and won't change it. + + - TrueType fonts are now rasterized correctly if the horizontal + and vertical resolution differ. + + - Type 1 fonts are now handled with increased precision internally + to avoid serious rounding issues if non-integral coordinates are + encountered. + + - Horizontally condensed CFF fonts (using the font matrix) were + rendered incorrectly. This bug has been introduced after + release 2.3.5. + + + II. IMPORTANT CHANGES + + - Support for the SFNT cmap 13 table format (as defined by the new + OpenType 1.6 specification) has been added. + + - B/W rasterization of well-hinted TrueType fonts at small sizes + has been greatly improved. + + - Calculation of vertical metrics in OpenType fonts has been + improved. + + + III. MISCELLANEOUS + + - It is now possible to change the emboldening factor in the + `ftview' demo program with keys `e' and `E'. + + - It is now possible to change the slant value in the `ftview' + demo program with keys `s' and `S'. + + - The 5-levels grayscale mode of the `ftraster' module (which + FreeType doesn't use by default) was broken since version 2.3.0. + + - Compilation of the `ftgrays' and `ftraster' modules was broken + in stand-alone mode. + + - Various fixes for compilation on 64bit and 16bit architectures. + + +====================================================================== + +CHANGES BETWEEN 2.3.9 and 2.3.8 + + I. IMPORTANT BUG FIXES + + - Very unfortunately, FreeType 2.3.8 contained a change that broke + its official ABI. The end result is that programs compiled + against previous versions of the library, but dynamically linked + to 2.3.8 can experience memory corruption if they call the + `FT_Get_PS_Font_Info' function. + + We recommend all users to upgrade to 2.3.9 as soon as possible, + or to downgrade to a previous release of the library if this is + not an option. + + The origin of the bug is that a new field was added to the + publicly defined `PS_FontInfoRec' structure. Unfortunately, + objects of this type can be stack or heap allocated by callers + of `FT_Get_PS_Font_Info', resulting in a memory buffer + overwrite with its implementation in 2.3.8. + + If you want to know whether your code is vulnerable to this + issue, simply search for the substrings `PS_FontInfo' and + `PS_Font_Info' in your source code. If none is found, your code + is safe and is not affected. + + The FreeType team apologizes for the problem. + + - The POSIX support of MacOS resource-fork fonts (Suitcase fonts + and LaserWriter Type1 PostScript fonts) was broken in 2.3.8. If + FreeType2 is built without Carbon framework, these fonts are not + handled correctly. Version 2.3.7 didn't have this bug. + + - `FT_Get_Advance' (and `FT_Get_Advances') returned bad values for + almost all font formats except TrueType fonts. + + - Fix a bug in the SFNT kerning table loader/parser which could + crash the engine if certain malformed tables were encountered. + + - Composite SFNT bitmaps are now handled correctly. + + + II. IMPORTANT CHANGES + + - The new functions `FT_Get_CID_Is_Internally_CID_keyed' and + `FT_Get_CID_From_Glyph_Index' can be used to access CID-keyed + CFF fonts via CID values. This code has been contributed by + Michael Toftdal. + + + III. MISCELLANEOUS + + - `FT_Outline_Get_InsideBorder' returns FT_STROKER_BORDER_RIGHT + for empty outlines. This was incorrectly documented. + + - The `ftview' demo program now supports UTF-8 encoded strings. + + +====================================================================== + +CHANGES BETWEEN 2.3.8 and 2.3.7 + + I. IMPORTANT BUG FIXES + + - CID-keyed fonts in an SFNT wrapper were not handled correctly. + + - The smooth renderer produced truncated images (on the right) for + outline parts with negative horizontal values. Most fonts don't + contain outlines left to the y coordinate axis, but the effect + was very noticeable for outlines processed with FT_Glyph_Stroke, + using thick strokes. + + - `FT_Get_TrueType_Engine_Type' returned a wrong value if both + configuration macros TT_CONFIG_OPTION_BYTECODE_INTERPRETER and + TT_CONFIG_OPTION_UNPATENTED_HINTING were defined. + + - The `face_index' field in the `FT_Face' structure wasn't + initialized properly after calling FT_Open_Face and friends with + a positive face index for CFFs, WinFNTs, and, most importantly, + for TrueType Collections (TTCs). + + + II. IMPORTANT CHANGES + + - Rudimentary support for Type 1 fonts and CID-keyed Type 1 fonts + in an SFNT wrapper has been added -- such fonts are used on the + Mac. The core SFNT tables `TYP1' and `CID ' are passed to the + PS Type 1 and CID-keyed PS font drivers; other tables (`ALMX', + `BBOX', etc.) are not supported yet. + + - A new interface to extract advance values of glyphs without + loading their outlines has been added. The functions are called + `FT_Get_Advance' and `FT_Get_Advances'; they are defined in file + `ftadvanc.h' (to be accessed as FT_ADVANCES_H). + + - A new function `FT_Get_FSType_Flags' (in FT_FREETYPE_H) has been + contributed by David Bevan to access the embedding and + subsetting restriction information of fonts. + + + III. MISCELLANEOUS + + - FT_MulFix is now an inlined function; by default, assembler code + is provided for x86 and ARM. See FT_CONFIG_OPTION_INLINE_MULFIX + and FT_CONFIG_OPTION_NO_ASSEMBLER (in ftoption.h) for more. + + - The handling of `tricky' fonts (that is, fonts which don't work + with the autohinter, needing the font format's hinting engine) + has been generalized and changed slightly: + + . A new face flag FT_FACE_FLAG_TRICKY indicates that the font + format's hinting engine is necessary for correct rendering. + The macro FT_IS_TRICKY can be used to check this flag. + + . FT_LOAD_NO_HINTING is now ignored for tricky fonts. To really + force raw loading of such fonts (without hinting), both + FT_LOAD_NO_HINTING and FT_LOAD_NO_AUTOHINT must be used -- + this is something which you probably never want to do. + + . Tricky TrueType fonts always use the bytecode interpreter, + either the patented or unpatented version. + + - The function `FT_GlyphSlot_Own_Bitmap' has been moved from + FT_SYNTHESIS_H to FT_BITMAP_H; it is now part of the `official' + API. (The functions in FT_SYNTHESIS_H are still subject to + change, however.) + + - In the `ftdiff' demo program you can now toggle the use of + FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH with key `a'. + + +====================================================================== + +CHANGES BETWEEN 2.3.7 and 2.3.6 + + I. IMPORTANT BUG FIXES + + - If the library was compiled on an i386 platform using gcc, and + compiler option -O3 was given, `FT_MulFix' sometimes returned + incorrect results which could have caused problems with + `FT_Request_Metrics' and `FT_Select_Metrics', returning an + incorrect descender size. + + - Pure CFFs without subfonts were scaled incorrectly if the font + matrix was non-standard. This bug has been introduced in + version 2.3.6. + + - The `style_name' field in the `FT_FaceRec' structure often + contained a wrong value for Type 1 fonts. This misbehaviour + has been introduced in version 2.3.6 while trying to fix + another problem. [Note, however, that this value is + informative only since the used algorithm to extract it is + very simplistic.] + + + II. IMPORTANT CHANGES + + - Two new macros, FT_OUTLINE_SMART_DROPOUTS and + FT_OUTLINE_EXCLUDE_STUBS, have been introduced. Together with + FT_OUTLINE_IGNORE_DROPOUTS (which was ignored previously) it is + now possible to control the dropout mode of the `raster' module + (for B&W rasterization), using the `flags' field in the + `FT_Outline' structure. + + - The TrueType bytecode interpreter now passes the dropout mode to + the B&W rasterizer. This greatly increases the output for small + ppem values of many fonts like `pala.ttf'. + + +====================================================================== + +CHANGES BETWEEN 2.3.6 and 2.3.5 + + I. IMPORTANT BUG FIXES + + - A bunch of potential security problems have been found. All + users should update. + + - Microsoft Unicode cmaps in TrueType fonts are now always + preferred over Apple cmaps. This is not a bug per se, but there + exist some buggy fonts created for MS which have broken Apple + cmaps. This affects only the automatic selection of FreeType; + it's always possible to manually select an Apple Unicode cmap if + desired. + + - Many bug fixes to the TrueType bytecode interpreter. + + - Improved Mac support. + + - Subsetted CID-keyed CFFs are now supported correctly. + + - CID-keyed CFFs with subfonts which are scaled in a non-standard + way are now handled correctly. + + - A call to FT_Open_Face with `face_index' < 0 crashed FreeType if + the font was a Windows (bitmap) FNT/FON. + + + II. IMPORTANT CHANGES + + - The new function `FT_Get_CID_Registry_Ordering_Supplement' gives + access to those fields in a CID-keyed font. The code has been + contributed by Derek Clegg. + + - George Williams contributed code to validate the new `MATH' + OpenType table (within the `otvalid' module). The `ftvalid' + demo program has been extended accordingly. + + - An API for cmap 14 support (for Unicode Variant Selectors, UVS) + has been contributed by George Williams. + + - A new face flag FT_FACE_FLAG_CID_KEYED has been added, together + with a macro FT_IS_CID_KEYED which evaluates to 1 if the font is + CID-keyed. + + + III. MISCELLANEOUS + + - Build support for symbian has been contributed. + + - Better WGL4 glyph name support, contributed by Sergey Tolstov. + + - Debugging output of the various FT_TRACEX macros is now sent to + stderr. + + - The `ftview' demo program now provides artificial slanting too. + + - The `ftvalid' demo program has a new option `-f' to select the + font index. + + +====================================================================== + +CHANGES BETWEEN 2.3.5 and 2.3.4 + + I. IMPORTANT BUG FIXES + + - Some subglyphs in TrueType fonts were handled incorrectly due to + a missing graphics state reinitialization. + + - Large .Z files (as distributed with some X11 packages) weren't + handled correctly, making FreeType increase the heap stack in an + endless loop. + + - A large number of bugs have been fixed to avoid crashes and + endless loops with invalid fonts. + + + II. IMPORTANT CHANGES + + - The two new cache functions `FTC_ImageCache_LookupScaler' and + `FTC_SBit_Cache_LookupScaler' have been added to allow lookup of + glyphs using an `FTC_Scaler' object; this makes it possible to + use fractional pixel sizes in the cache. The demo programs have + been updated accordingly to use this feature. + + - A new API `FT_Get_CMap_Format' has been added to get the cmap + format of a TrueType font. This is useful in handling PDF + files. The code has been contributed by Derek Clegg. + + - The auto-hinter now produces better output by default for + non-Latin scripts like Indic. This was done by using the CJK + hinting module as the default instead of the Latin one. Thanks + to Rahul Bhalerao for this suggestion. + + - A new API `FT_Face_CheckTrueTypePatents' has been added to find + out whether a given TrueType font uses patented bytecode + instructions. The `ft2demos' bundle contains a new program + called `ftpatchk' which demonstrates its usage. + + - A new API `FT_Face_SetUnpatentedHinting' has been added to + enable or disable the unpatented hinter. + + - Support for Windows FON files in PE format has been contributed + by Dmitry Timoshkov. + + + III. MISCELLANEOUS + + - Vincent Richomme contributed Visual C++ project files for Pocket + PCs. + + +====================================================================== + +CHANGES BETWEEN 2.3.4 and 2.3.3 + + I. IMPORTANT BUG FIXES + + - A serious bug in the handling of bitmap fonts (and bitmap + strikes of outline fonts) has been introduced in 2.3.3. + + +====================================================================== + +CHANGES BETWEEN 2.3.3 and 2.3.2 + + I. IMPORTANT BUG FIXES + + - Remove a serious regression in the TrueType bytecode interpreter + that was introduced in version 2.3.2. Note that this does not + disable the improvements introduced to the interpreter in + version 2.3.2, only some ill cases that occurred with certain + fonts (though a few popular ones). + + - The auto-hinter now ignores single-point contours for computing + blue zones. This bug created `wavy' baselines when rendering + text with various fonts that use these contours to model + mark-attach points (these are points that are never rasterized + and are placed outside of the glyph's real outline). + + - The `rsb_delta' and `lsb_delta' glyph slot fields are now set to + zero for mono-spaced fonts. Otherwise code that uses them would + essentially ruin the fixed-advance property. + + - Fix CVE-2007-1351 which can cause an integer overflow while + parsing BDF fonts, leading to a potentially exploitable heap + overflow condition. + + + II. MISCELLANEOUS + + - Fixed compilation issues on some 64-bit platforms (see ChangeLog + for details). + + - A new demo program `ftdiff' has been added to compare TrueType + hinting, FreeType's auto hinting, and rendering without hinting + in three columns. + + +====================================================================== + +CHANGES BETWEEN 2.3.2 and 2.3.1 + + I. IMPORTANT BUG FIXES + + - FreeType returned incorrect kerning information from TrueType + fonts when the bytecode interpreter was enabled. This happened + due to a typo introduced in version 2.3.0. + + - Negative kerning values from PFM files are now reported + correctly (they were read as 16-bit unsigned values from the + file). + + - Fixed a small memory leak when `FT_Init_FreeType' failed for + some reason. + + - The Postscript hinter placed and sized very thin and ghost stems + incorrectly. + + - The TrueType bytecode interpreter has been fixed to get rid of + most of the rare differences seen in comparison to the Windows + font loader. + + + II. IMPORTANT CHANGES + + - The auto-hinter now better deals with serifs and corner cases + (e.g., glyph '9' in Arial at 9pt, 96dpi). It also improves + spacing adjustments and doesn't change widths for non-spacing + glyphs. + + - Many Mac-specific functions are deprecated (but still + available); modern replacements have been provided for them. + See the documentation in file `ftmac.h'. + + +====================================================================== + +CHANGES BETWEEN 2.3.1 and 2.3.0 + + I. IMPORTANT BUG FIXES + + - The TrueType interpreter sometimes returned incorrect horizontal + metrics due to a bug in the handling of the SHZ instruction. + + - A typo in a security check introduced after version 2.2.1 + prevented FreeType to render some glyphs in CFF fonts. + + +====================================================================== + +CHANGES BETWEEN 2.3.0 and 2.2.1 + + I. IMPORTANT BUG FIXES + + - The PCF font loader is now much more robust while loading + malformed font files. + + - Various memory leaks have been found and fixed. + + - The TrueType name loader now deals properly with some fonts that + encode their names in UTF-16 (the specification was vague, and + the code incorrectly assumed UCS-4). + + - Fixed the TrueType bytecode loader to deal properly with subtle + monochrome/gray issues when scaling the CVT. Some fonts + exhibited bad rendering artifacts otherwise. + + - `FT_GlyphSlot_Embolden' now supports vertical layouts correctly + (it mangled the vertical advance height). + + - Fixed byte endian issues of `ftmac.c' to support Mac OS X on + i386. + + - The PFR font loader no longer erroneously tags font files + without any outlines as FT_FACE_FLAG_SCALABLE. + + + II. NEW API FUNCTIONS + + - `FT_Library_SetLcdFilter' allows you to select a special filter + to be applied to the bitmaps generated by `FT_Render_Glyph' if + one of the FT_RENDER_MODE_LCD and FT_RENDER_MODE_LCD_V modes has + been selected. This filter is used to reduce color fringes; + several settings are available through the FT_LCD_FILTER_XXX + enumeration. + + Its declaration and documentation can be found in file + `include/freetype/ftlcdfil.h' (to be accessed with macro + FT_LCD_FILTER_H). + + *IMPORTANT*: This function returns an error + (FT_Err_Unimplemented_Feature) in default builds of the library + for patent reasons. See below. + + - `FT_Get_Gasp' allows you to query the flags of the TrueType + `gasp' table for a given character pixel size. This is useful + to duplicate the text rendering of MS Windows when the native + bytecode interpreter is enabled (which isn't the default for + other patent reasons). + + Its declaration and documentation can be found in file + `include/freetype/ftgasp.h' (to be accessed with macro + FT_GASP_H). + + + III. IMPORTANT CHANGES + + - The auto-hinter has been tuned a lot to improve its results with + serif fonts, resulting in much better font rendering of many web + pages. + + - The unpatented hinter is now part of the default build of the + library; we have added code to automatically support `tricky' + fonts that need it. + + This means that FreeType should `just work' with certain Asian + fonts, like MingLiU, which cannot properly be loaded without a + bytecode interpreter, but which fortunately do not use any of + the patented bytecode opcodes. We detect these fonts by name, + so please report any font file that doesn't seem to work with + FreeType, and we shall do what we can to support it in a next + release. + + Note that the API hasn't changed, so you can still force + unpatented hinting with a special parameter to `FT_Open_Face' as + well. This might be useful in same cases; for example, a PDF + reader might present a user option to activate it to deal with + certain `tricky' embedded fonts which cannot be clearly + identified. + + If you are a developer for embedded systems, you might want to + *disable* the feature to save code space by undefining + TT_CONFIG_OPTION_UNPATENTED_HINTING in file `ftoption.h'. + + - LCD-optimized rendering is now *disabled* in all default builds + of the library, mainly due to patent issues. For more + information see: + + https://lists.gnu.org/archive/html/freetype/2006-09/msg00064.html + + A new configuration macro FT_CONFIG_OPTION_SUBPIXEL_RENDERING + has been introduced in `ftoption.h'; manually define it in this + file if you want to re-enable the feature. + + The change only affects the implementation, not the FreeType + API. This means that clients don't need to be modified, because + the library still generates LCD decimated bitmaps, but with the + added constraint that R=G=B on each triplet. + + The displayed result should be equal to normal anti-aliased + rendering. + + Additionally, if FT_CONFIG_OPTION_SUBPIXEL_RENDERING is not + defined, the new `FT_Library_SetLcdFilter' function returns the + FT_Err_Unimplemented_Feature error code. + + - Some computation bugs in the TrueType bytecode interpreter were + found, which allow us to get rid of very subtle and rare + differences we had experienced with the Windows renderer. + + - It is now possible to cross-compile the library easily. See the + file `docs/INSTALL.CROSS' for details. + + - The file `src/base/ftmac.c' now contains code for Mac OS X only; + its deprecated function `FT_GetFile_From_Mac_Font_Name' always + returns an error even if the QuickDraw framework is available. + The previous version has been moved to `builds/mac/ftmac.c'. + + Selecting configure option `--with-quickdraw-carbon' makes the + build process use the original `ftmac.c' file instead of the Mac + OS X-only version. + + + IV. MISCELLANEOUS + + - Various performance and memory footprint optimizations have been + performed on the TrueType and CFF font loaders, sometimes with + very drastic benefits (e.g., the TrueType loader is now about + 25% faster; FreeType should use less heap memory under nearly + all conditions). + + - The anti-aliased rasterizer has been optimized and is now 15% to + 25% percent faster than in previous versions, depending on + content. + + - The Type 1 loader has been improved; as an example, it now skips + top-level dictionaries properly. + + - Better support for Mac fonts on POSIX systems, plus compilation + fixes for Mac OS X on ppc64 where `ftmac.c' cannot be built. + + - Configuration without `--with-old-mac-fonts' does not include + `ftmac.c' (this was the behaviour in FreeType version 2.1.10). + + - The TrueTypeGX validator (gxvalid) checks the order of glyph IDs + in the kern table. + + +====================================================================== + +CHANGES BETWEEN 2.2.1 and 2.2 + + I. IMPORTANT BUG FIXES + + - Various integer overflows have been fixed. + + - PFB fonts with MacOS resource fork weren't handled correctly on + non-MacOS platforms. + + +====================================================================== + +CHANGES BETWEEN 2.2 and 2.1.10 + +(not released officially) + + I. IMPORTANT BUG FIXES + + - Vertical metrics for SFNT fonts were incorrect sometimes. + + - The FT_HAS_KERNING macro always returned 0. + + - CFF OpenType fonts didn't return correct vertical metrics for + glyphs with outlines. + + - If FreeType was compiled without hinters, all font formats based + on PS outlines weren't scaled correctly. + + + II. IMPORTANT CHANGES + + - Version 2.2 no longer exposes its internals, that is, the header + files located in the `include/freetype/internal' directory of + the source package are not copied anymore by the `make install' + command. Consequently, a number of rogue clients which directly + access FreeType's internal functions and structures won't + compile without modification. + + We provide patches for most of those rogue clients. See the + following page for more information: + + https://freetype.org/freetype2/patches/rogue-patches.html + + Note that, as a convenience to our Unix desktop users, version + 2.2 is *binary* compatible with FreeType 2.1.7, which means that + installing this release on an existing distribution shall not + break any working desktop. + + - FreeType's build mechanism has been redesigned. With GNU make + it is now sufficient in most cases to edit two files: + `modules.cfg', to select the library components, and the + configuration file `include/freetype/config/ftoption.h' (which + can be copied to the objects directory). Removing unused module + directories to prevent its compilation and editing + `include/freetype/config/ftmodule.h' is no longer necessary. + + - The LIGHT hinting algorithm produces more pleasant results. + Also, using the FT_LOAD_TARGET_LIGHT flags within FT_Load_Glyph + always forces auto-hinting, as a special exception. This allows + you to experiment with it even if you have enabled the TrueType + bytecode interpreter in your build. + + - The auto hinter now employs a new algorithm for CJK fonts, based + on Akito Hirai's patch. Note that this only works for fonts + with a Unicode charmap at the moment. + + - The following callback function types have changed slightly (by + adding the `const' keyword where appropriate): + + FT_Outline_MoveToFunc + FT_Outline_LineToFunc + FT_Outline_ConicToFunc + FT_Outline_CubicToFunc + FT_SpanFunc + FT_Raster_RenderFunc + + FT_Glyph_TransformFunc + FT_Renderer_RenderFunc + FT_Renderer_TransformFunc + + Note that this doesn't affect binary backward compatibility. + + - On MacOS, new APIs have been added as replacements for legacy + APIs: `FT_New_Face_From_FSRef' for `FT_New_Face_From_FSSpec', + and `FT_GetFile_From_Mac_ATS_Name' for + `FT_GetFile_From_Mac_Name'. Legacy APIs are still available, if + FreeType is built without disabling them. + + - A new API `FT_Select_Size' has been added to select a bitmap + strike by its index. Code using other functions to select + bitmap strikes should be updated to use this function. + + - A new API `FT_Get_SubGlyph_Info' has been added to retrieve + subglyph data. This can be used by rogue clients which used to + access the internal headers to get the corresponding data. + + - In 2.1.10, the behaviour of `FT_Set_Pixel_Sizes' was changed for + BDF/PCF fonts, and only for them. This causes inconsistency. + In this release, we undo the change. The intent of the change + in 2.1.10 is to allow size selection through real dimensions, + which can now be done through `FT_Request_Size'. + + - Some security issues were discovered and fixed in the CFF and + Type 1 loader, causing crashes of FreeType by malformed font + files. + + + III. MISCELLANEOUS + + - The documentation for FT_LOAD_TARGET_XXX and FT_RENDER_MODE_XXX + values now better reflects its usage and differences: One set is + used to specify the hinting algorithm, the other to specify the + pixel rendering mode. + + - `FT_New_Face' and `FT_New_Face_From_FSSpec' in ftmac.c have been + changed to count supported scalable faces (sfnt, LWFN) only, and + to return the number of available faces via face->num_faces. + Unsupported bitmap faces (fbit, NFNT) are ignored. + + - builds/unix/configure has been improved for MacOS X. It now + automatically checks available functions in Carbon library, and + prepare to use newest functions by default. Options to specify + the dependencies of each Carbon APIs (FSSpec, FSRef, old/new + QuickDraw, ATS) are available too. By manual disabling of all + QuickDraw functionality, FreeType can be built without + `deprecated function' warnings on MacOS 10.4.x, but + FT_GetFile_Mac_Name in ftmac.c then is changed to a dummy + function, and returns an `unimplemented' error. For details see + builds/mac/README. + + - SFNT cmap handling has been improved, mainly to run much faster + with CJK fonts. + + - A new function `FT_Get_TrueType_Engine_Type (declared in + `FT_MODULE_H') is provided to determine the status of the + TrueType bytecode interpreter compiled into the library + (patented, unpatented, unimplemented). + + - Vertical metrics of glyphs are synthesized if the font does not + provide such information. You can tell whether the metrics are + synthesized or not by checking the FT_FACE_FLAG_VERTICAL flag of + the face. + + - The demo programs `ftview' and `ftstring' have been rewritten + for better readability. `ftview' has a new switch `-p' to test + FT_New_Memory_Face (instead of FT_New_Face). + + - FreeType now honours bit 1 in the `head' table of TrueType fonts + (meaning `left sidebearing point at x=0'). This helps with some + buggy fonts. + + - Rudimentary support for Adobe's new `SING Glyphlet' format. See + + https://www.adobe.com/content/dam/acom/en/devnet/font/pdfs/5148.SING_Tutorial.pdf + + for more information. + + - The `ftdump' program from the `ft2demos' bundle now shows some + information about charmaps. It also supports a new switch `-v' + to increase verbosity. + + - Better AFM support. This includes track kerning support. + + +====================================================================== + +CHANGES BETWEEN 2.1.10 and 2.1.9 + + I. IMPORTANT BUG FIXES + + - The size comparison for BDF and PCF files could fail sometimes. + + - Some CFF files were still not loaded correctly. Patch from + Derek Noonburg. + + - The stroker still had some serious bugs. + + - Boris Letocha fixed a bug in the TrueType interpreter: The + NPUSHW instruction wasn't skipped correctly in IF clauses. Some + fonts like `Helvetica 75 Bold' failed. + + - Another serious bug in handling TrueType hints caused many + distortions. It has been introduced in version 2.1.8, and it is + highly recommended to upgrade. + + - FreeType didn't properly parse empty Type 1 glyphs. + + - An unbound dynamic buffer growth was fixed in the PFR loader. + + - Several bugs have been fixed in the cache sub-system. + + - FreeType behaved incorrectly when resizing two distinct but very + close character pixel sizes through `FT_Set_Char_Size' (Savannah + bug #12263). + + - The auto-hinter didn't work properly for fonts without a Unicode + charmap -- it even refused to load the glyphs. + + + II. IMPORTANT CHANGES + + - Many fixes have been applied to drastically reduce the amount of + heap memory used by FreeType, especially when using + memory-mapped font files (which is the default on Unix systems + which support them). + + - The auto-hinter has been replaced with a new module, called the + `auto-fitter'. It consumes less memory than its predecessor, + and it is prepared to support non-latin scripts better in next + releases. + + - George Williams contributed code to read kerning data from PFM + files. + + - FreeType now uses the TT_NAME_ID_PREFERRED_FAMILY and + TT_NAME_ID_PREFERRED_SUBFAMILY strings (if available) for + setting family and style in SFNT fonts (patch from Kornfeld + Eliyahu Peter). + + - A new API `FT_Sfnt_Table_Info' (in FT_TRUETYPE_TABLES_H) has + been added to retrieve name and size information of SFNT tables. + + - A new API `FT_OpenType_Validate' (in FT_OPENTYPE_VALIDATE_H) has + been added to validate OpenType tables (BASE, GDEF, GPOS, GSUB, + JSTF). After validation it is no longer necessary to check + for errors in those tables while accessing them. + + Note that this module might be moved to another library in the + future to avoid a tight dependency between FreeType and the + OpenType specification. + + - A new API in FT_BITMAP_H (`FT_Bitmap_New', `FT_Bitmap_Convert', + `FT_Bitmap_Copy', `FT_Bitmap_Embolden', `FT_Bitmap_Done') has + been added. Its use is to convert an FT_Bitmap structure in + 1bpp, 2bpp, 4bpp, or 8bpp format into another 8bpp FT_Bitmap, + probably using a different pitch, and to further manipulate it. + + - A new API `FT_Outline_Embolden' (in FT_OUTLINE_H) gives finer + control how outlines are emboldened. + + - `FT_GlyphSlot_Embolden' (in FT_SYNTHESIS_H) now handles bitmaps + also (code contributed by Chia I Wu). Note that this function + is still experimental and may be replaced with a better API. + + - The method how BDF and PCF bitmap fonts are accessed has been + refined. Formerly, FT_Set_Pixel_Sizes and FT_Set_Char_Size + were synonyms in FreeType's BDF and PCF interface. This has + changed now. FT_Set_Pixel_Sizes should be used to select the + actual font dimensions (the `strike', which is the sum of the + `FONT_ASCENT' and `FONT_DESCENT' properties), while + FT_Set_Char_Size selects the `nominal' size (the `PIXELSIZE' + property). In both functions, the width parameter is ignored. + + + III. MISCELLANEOUS + + - The BDF driver no longer converts all returned bitmaps with a + depth of 2bpp or 4bpp to a depth of 8bpp. The documentation has + not mentioned this explicitly, but implementors might have + relied on this after looking into the source files. + + - A new option `--ftversion' has been added to freetype-config to + return the FreeType version. + + - The memory debugger has been updated to dump allocation + statistics on all allocation sources in the library. This is + useful to spot greedy allocations when loading and processing + fonts. + + - We removed a huge array of constant pointers to constant strings + in the `psnames' module. The problem was that compilations in + PIC mode (i.e., when generating a Unix shared object/dll) put + the array into the non-shared writable section of the library + since absolute pointers are not relocatable by nature. + + This reduces the memory consumption by approximately 16KByte per + process linked to FreeType. We now also store the array in a + compressed form (as a trie) which saves about 20KByte of code as + well. + + - Kirill Smelkov provided patches to make src/raster/ftraster.c + compile stand-alone again. + + +====================================================================== + +CHANGES BETWEEN 2.1.9 and 2.1.8 + + I. IMPORTANT BUG FIXES + + - The function `FT_Get_CharMap_Index' was only declared, without + any real code. For consistency, it has been renamed to + `FT_Get_Charmap_Index'. (This function is needed to implement + cmap caches.) + + - `FT_Outline_Get_BBox' sometimes returned incorrect values for + conic outlines (e.g., for TrueType fonts). + + - Handling of `bhed' table has been fixed. + + - The TrueType driver with enabled byte code interpreter sometimes + returned artifacts due to incorrect rounding. This bug has been + introduced after version 2.1.4. + + - The BDF driver dropped the last glyph in the font. + + - The BDF driver now uses the DEFAULT_CHAR property (if available) + to select a glyph shape for the undefined glyph. + + - The stroker failed for closed outlines and single points. + + + II. IMPORTANT CHANGES + + - George Williams contributed code to handle Apple's font + distortion technology found in GX fonts (`avar', `cvar', `fvar', + and `gvar' tables; the Multiple Masters API has been slightly + extended to cope with the new functionality). + + - The `FT_GlyphSlotRec' structure has been extended: The elements + `lsb_delta' and `rsb_delta' give the difference between hinted + and unhinted left and right side bearings if autohinting is + active. Using those values can improve the inter-letter spacing + considerably. See the documentation of `FT_GlyphSlotRec' and + the `ftstring' demo program how to use it. + + - Loading TrueType and Type 1 fonts has been made much faster. + + - The stroker is no longer experimental (but the cache subsystem + still is). + + + III. MISCELLANEOUS + + - A new documentation file `formats.txt' describes various font + formats supported (and not supported) by FreeType. + + +====================================================================== + +CHANGES BETWEEN 2.1.8 and 2.1.7 + + I. IMPORTANT BUG FIXES + + - The native TrueType hinter contained some bugs which prevented + some fonts to be rendered correctly, most notably Legendum.otf. + + - The PostScript hinter now produces improved results. + + - The linear advance width and height values were incorrectly + rounded, making them virtually unusable if not loaded with + FT_LOAD_LINEAR_DESIGN. + + - Indexing CID-keyed CFF fonts is now working: The glyph index is + correctly treated as a CID, similar to FreeType's CID driver + module. Note that CID CMap support is still missing. + + - The FT_FACE_FLAG_GLYPH_NAMES flag is now set correctly for all + font formats. + + - Some subsetted Type 1 fonts weren't parsed correctly. This bug + has been introduced in 2.1.7. In summary, the Type 1 parser has + become more robust. + + - Non-decimal numbers weren't parsed correctly in PS fonts. + + - The WinFNT driver now correctly reports FT_ENCODING_NONE for all + but one encoding. Use the new FT_WinFNT_ID_XXX values together + with `FT_Get_WinFNT_Header' to get the WinFNT charset ID. + + - The descender metrics (face->size->metrics.descender) for WinFNT + bitmap fonts had the wrong sign. + + - The (emulated) `seac' support for CFF fonts was broken. + + - The `flex' operator didn't work for CFF fonts. + + - PS glyphs which use the `hintmask' operator haven't been + rendered correctly in some cases. + + - Metrics for BDF and PCF bitmap font formats have been fixed. + + - Autohinting is now disabled for glyphs which are vertically + distorted or mirrored (using a transformation matrix). This + fixes a bug which produced zero-height glyphs. + + - The `freetype-config' script now handles --prefix and + --exec-prefix correctly; it also returns the proper --rpath (or + -R) value if FreeType has been built as a shared library. + + + II. IMPORTANT CHANGES + + - Both PCF and BDF drivers now handle the SETWIDTH_NAME and + ADD_STYLE_NAME properties. Values are appended to + face->style_name; example: `Bold SemiCondensed'. + + - The PCF driver now handles bitmap fonts compressed with the LZW + algorithm (extension .pcf.Z, compressed with `compress'). + + - A new API function `FT_Get_CMap_Language_ID' (declared in + `tttables.h') is available to get the language ID of a + TrueType/SFNT cmap. + + - The hexadecimal format of data after the `StartData' command in + CID-keyed Type 1 fonts is now supported. While this can't occur + in file-based fonts, it can happen in document-embedded + resources of PostScript documents. + + - Embedded bitmaps in SFNT-based CFF fonts are now supported. + + - A simple API is now available to control FreeType's tracing + mechanism if compiled with FT_DEBUG_LEVEL_TRACE. See the file + `ftdebug.h' for more details. + + - YAMATO Masatake contributed improved handling of MacOS resource + forks on non-MacOS platforms (for example, Linux can mount MacOS + file systems). + + - Support for MacOS has been improved; there is now a new function + `FT_New_Face_From_FSSpec' similar to `FT_New_Face' except that + it accepts an FSSpec instead of a path. + + - The cache sub-system has been rewritten. + + - There is now support for deinstallation of faces. + + - A new API function `FTC_Manager_RemoveFaceID' has been added + to delete all `idle' nodes that correspond to a given + FTC_FaceID. All `locked' nodes (i.e., those with a reference + count > 0), will be modified to prevent them from appearing in + further lookups (they will be cleaned normally when their + reference count reaches 0). + + - There is now support for point scaling (i.e., providing + character sizes in points + dpis, instead of pixels). + + - Three abstract cache classes are now available: + + FTC_GCache: Used to store one glyph item per cache node, + with the ability to group common attributes into + `families'. This replaces the old + FTC_GlyphCache class. + + FTC_ICache: Used to store one FT_Glyph per cache node. This + extends FTC_GCache. Family definition, family + comparison, and glyph loading are however left + to sub-classes. + + FTC_SCache: Used to store up to 16 small bitmaps per cache + node. This extends FTC_GCache. Family + definition, family comparison and glyph loading + are however left to sub-classes. + + - The file `src/cache/ftcbasic.c' implements: + + FTC_ImageCache: Extends FTC_ICache; implements family + definitions and glyph loading similar to the + old API. + + FTC_SBitCache: Extends FTC_SCache, implements family + definitions and glyph loading similar to the + old API + + Client applications should be able to extend FTC_GCache, + FTC_ICache, or FTC_SCache much more easily (i.e., less code to + write, and less callbacks). For example, one could envision + caches that are capable of storing transformed (obliqued), + stroked, emboldened, or colored glyph images. Use + `ftcbasic.c' as an example. + + - All public APIs are now in `include/freetype/ftcache.h', (to + be accessed as `FT_CACHE_H'). The contents of + `include/freetype/cache/' is only needed by applications that + wish to implement their own caches. + + - There were some major performance improvements through the use + of various programming tricks. Cache hits are up to 70% + faster than in the old code. + + - The FTC_CMapCache has been simplified. Charmaps can only be + accessed by index right now. There is also a new API named + `FT_Charmap_GetIndex' for this purpose. + + - The demo programs have been updated to the new code. The + previous versions will not work with the current one. + + - Using an invalid face index in FT_Open_Face and friends now + causes an error even if the font contains a single face only. + + + III. MISCELLANEOUS + + - Wolfgang Domröse contributed support files for building FreeType + on the Atari using the PureC compiler. Note that the Atari is a + 16bit platform. + + - Vitaliy Pasternak contributed project files for VS.NET 2003. + + +====================================================================== + +CHANGES BETWEEN 2.1.7 and 2.1.6 + + I. IMPORTANT BUG FIXES + + - Updated to newest libtool version, fixing build problems on + various platforms. + + - On Unix platforms, `make install' didn't copy the correct + `ftconfig.h' file. + + Note that version 2.1.7 contains the same library C source code as + version 2.1.6. + + +====================================================================== + +CHANGES BETWEEN 2.1.6 and 2.1.5 + + I. IMPORTANT BUG FIXES + + - The PFR font driver didn't load kerning tables correctly, and + the functions in FT_PFR_H didn't work at all. + + - Type 1 font files in binary format (PFB) with an end-of-file + indicator weren't accepted by the FreeType engine. + + - Fonts which contain /PaintType and /StrokeWidth no longer cause + a segfault. This bug has been introduced in version 2.1.5. + + - Fonts loaded with FT_LOAD_RENDER no longer cause strange + results. This bug has been introduced in version 2.1.5. + + - Some Windows (bitmap) FNT/FON files couldn't be handled + correctly. + + + II. IMPORTANT CHANGES + + - The internal module API has been heavily changed in favor of + massive simplifications within the font engine. This also means + that authors of third-party modules must adapt their code to the + new scheme. + + NOTE: THE NEW SCHEME IS NOT COMPLETED YET. PLEASE WAIT UNTIL A + FINAL ANNOUNCEMENT! + + - The PostScript parser has been enhanced to handle comments and + strings correctly. Additionally, more syntax forms are + recognized. + + - Added the optional unpatented hinting system for TrueType. It + allows typefaces which need hinting to produce correct glyph + forms (e.g., Chinese typefaces from Dynalab) to work acceptably + without infringing Apple patents. This system is compiled only + if TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING is defined in + ftoption.h (activated by default). + + + III. MISCELLANEOUS + + - There is now a guard in the public header files to protect + against inclusion of freetype.h from FreeType 1. + + - Direct inclusion of freetype.h and other public header files no + longer works. You have to use the documented scheme + + #include + #include FT_FREETYPE_H + + to load freetype.h with a symbolic name. This protects against + renaming of public header files (which shouldn't happen but + actually has, avoiding two public header files with the same + name). + + +====================================================================== + +CHANGES BETWEEN 2.1.5 and 2.1.4 + + I. IMPORTANT BUG FIXES + + - Parsing the /CIDFontName field now removes the leading slash to + be in sync with other font drivers. + + - gzip support was buggy. Some fonts could not be read. + + - Fonts which have nested subglyphs more than one level deep no + longer cause a segfault. + + - Creation of synthetic cmaps for fonts in CFF format was broken + partially. + + - Numeric font dictionary entries for synthetic fonts are no + longer overwritten. + + - The font matrix wasn't applied to the advance width for Type1, + CID, and CFF fonts. This caused problems when loading certain + synthetic Type 1 fonts like `Helvetica Narrow'. + + - The test for the charset registry in BDF and PCF fonts is now + case-insensitive. + + - FT_Vector_Rotate sometimes returned strange values due to + rounding errors. + + - The PCF driver now returns the correct number of glyphs + (including an artificial `notdef' glyph at index 0). + + - FreeType now supports buggy CMaps which are contained in many + CJK fonts from Dynalab. + + - Opening an invalid font on a Mac caused a segfault due to + double-freeing memory. + + - BDF fonts with more than 32768 glyphs weren't supported + properly. + + + II. IMPORTANT CHANGES + + - Accessing bitmap font formats has been synchronized. To do that + the FT_Bitmap_Size structure has been extended to contain new + fields `size', `x_ppem', and `y_ppem'. + + - The FNT driver now returns multiple faces, not multiple strikes. + + - The `psnames' module has been updated to the Adobe Glyph List + version 2.0. + + - The `psnames' module now understands `uXXXX[X[X]]' glyph names. + + - The algorithm for guessing the font style has been improved. + + - For fonts in SFNT format, root->height is no longer increased if + the line gap is zero. There exist fonts (containing e.g. form + drawing characters) which intentionally have a zero line gap + value. + + - ft_glyph_bbox_xxx flags are now deprecated in favour of + FT_GLYPH_BBOX_XXX. + + - ft_module_xxx flags are now deprecated in favour of + FT_MODULE_XXX. + + - FT_ENCODING_MS_{SJIS,GB2312,BIG5,WANSUNG,JOHAB} are now + deprecated in favour of + FT_ENCODING_{SJIS,GB2312,BIG5,WANSUNG,JOHAB} -- those encodings + are not specific to Microsoft. + + + III. MISCELLANEOUS + + - The autohinter has been further improved; for example, `m' + glyphs now retain its vertical symmetry. + + - Partial support of Mac fonts on non-Mac platforms. + + - `make refdoc' (after first `make') builds the HTML + documentation. You need Python for this. + + - The make build system should now work more reliably on DOS-like + platforms. + + - Support for EMX gcc and Watson C/C++ compilers on MS-DOS has + been added. + + - Better VMS build support. + + - Support for the pkg-config package by providing a `freetype.pc' + file. + + - New configure option --with-old-mac-fonts for Darwin. + + - Some source files have been renamed (mainly to fit into the 8.3 + naming scheme). + + +====================================================================== + +CHANGES BETWEEN 2.1.4 and 2.1.3 + + I. IMPORTANT BUG FIXES + + - Updated to newest libtool version, fixing build problems on + various platforms. + + - A fix in the Gzip stream reader: It couldn't read certain .gz + files properly due to a small typo. In certain cases, FreeType + could also loop endlessly when trying to load tiny gzipped + files. + + - The configure script now tries to use the system-wide zlib when + it finds one (instead of the copy found in src/gzip). And + `freetype-config' has been updated to return relevant flags in + this case when invoked with `--libs' (e.g. `-lzlib'). + + - Certain fonts couldn't be loaded by 2.1.3 because they lacked a + Unicode charmap (e.g. SYMBOL.TTF). FreeType erroneously + rejected them. + + - The CFF loader was modified to accept fonts which only contain a + subset of their reference charset. This prevented the correct + use of PDF-embedded fonts. + + - The logic to detect Unicode charmaps has been modified. This is + required to support fonts which include both 16-bit and 32-bit + charmaps (like very recent asian ones) using the new 10 and 12 + SFNT formats. + + - The TrueType loader now limits the depth of composite glyphs. + This is necessary to prevent broken fonts to break the engine by + blowing the stack with recursive glyph definitions. + + - The CMap cache is now capable of managing UCS-4 character codes + that are mapped through extended charmaps in recent + TrueType/OpenType fonts. + + - The cache sub-system now properly manages out-of-memory + conditions instead of blindly reporting them to the caller. + This means that it will try to empty the cache before restarting + its allocations to see if that can help. + + - The PFR driver didn't return the list of available embedded + bitmaps properly. + + - There was a nasty memory leak when using embedded bitmaps in + certain font formats. + + + II. IMPORTANT CHANGES + + - David Chester contributed some enhancements to the auto-hinter + that significantly increase the quality of its output. The + Postscript hinter was also improved in several ways. + + - The FT_RENDER_MODE_LIGHT render mode was implemented. + + - A new API function called `FT_Get_BDF_Property' has been added + to FT_BDF_H to retrieve BDF properties from BDF _and_ PCF font + files. THIS IS STILL EXPERIMENTAL, since it hasn't been + properly tested yet. + + - A Windows FNT specific API has been added, mostly to access font + headers. This is used by Wine. + + - TrueType tables without an `hmtx' table are now tolerated when + an incremental interface is used. This happens for certain + Type42 fonts passed from Ghostscript to FreeType. + + - The PFR font driver is now capable of returning the font family + and style names when they are available (instead of the sole + `FontID'). This is performed by parsing an *undocumented* + portion of the font file! + + + III. MISCELLANEOUS + + - The path stroker in FT_STROKER_H has entered beta stage. It now + works very well, but its interface might change a bit in the + future. More on this in later releases. + + - The documentation for FT_Size_Metrics didn't appear properly in + the API reference. + + - The file docs/VERSION.DLL has been updated to explain versioning + with FreeType (i.e., comparing release/libtool/so numbers, and + how to use them in autoconf scripts). + + - The installation documentation has been seriously revamped. + Everything is now in the `docs' directory. + + +====================================================================== + +CHANGES BETWEEN 2.1.3 and 2.1.2 + + I. IMPORTANT BUG FIXES + + - FT_Vector_Transform had been incorrectly modified in 2.1.2, + resulting in incorrect transformations being applied (for + example, rotations were processed in opposite angles). + + - The format 8 and 12 TrueType charmap enumeration routines have + been fixed (FT_Get_Next_Char returned invalid values). + + - The PFR font driver returned incorrect advance widths if the + outline and metrics resolution defined in the font file were + different. + + - FT_Glyph_To_Bitmap now returns successfully when called with an + FT_BitmapGlyph argument (it previously returned an error). + + - A bug in the Type 1 loader that prevented valid font bounding + boxes to be loaded from multiple master fonts. + + - The SFNT validation code has been rewritten. FreeType can now + load `broken' fonts that were usable on Windows, but not with + previous versions of the library. + + - The computation of bearings in the BDF driver has been fixed. + + - The Postscript hinter crashed when trying to hint certain glyphs + (more precisely, when trying to apply hints to an empty glyph + outline). + + - The TrueType glyph loader now supports composites in `Apple + format' (they differ slightly from Microsoft/OpenType ones in + the way transformation offsets are computed). + + - FreeType was very slow at opening certain asian CID/CFF fonts, + due to fixed increment in dynamic array re-allocations. This + has been changed to exponential behaviour to get acceptable + performance. + + + + II. IMPORTANT CHANGES + + - The PCF driver now supports gzip-compressed font files natively. + This means that you will be able to use all these bitmap fonts + that come with XFree86 with FreeType (and libXft/libXft2, by + extension). + + - The automatic and postscript hinters have both been updated. + This results in a relatively important increase of rendering + quality since many nasty defaults have been suppressed. Please + visit the web page: + + https://freetype.org/hinting/smooth-hinting.html + + for additional details on this topic. + + - The `load_flags' parameter of `FT_Load_Glyph' is now an FT_Int32 + (instead of just being an FT_Int). This breaks source and + binary compatibility for 16bit systems only, while retaining + both of them for 32 and 64 bit ones. + + Some new flags have been added consequently: + + FT_LOAD_NO_AUTOHINT :: Disable the use of the auto-hinter + (but not native format hinters). + + FT_LOAD_TARGET_NORMAL :: Hint and render for normal + anti-aliased displays. + + FT_LOAD_TARGET_MONO :: Hint and render for 1-bit displays. + + FT_LOAD_TARGET_LCD :: Hint and render for horizontal RGB or + BGR subpixel displays (like LCD + screens). THIS IS STILL + EXPERIMENTAL! + + FT_LOAD_TARGET_LCD_V :: Same as FT_LOAD_TARGET_LCD, for + vertical subpixel displays (like + rotated LCD screens). THIS IS STILL + EXPERIMENTAL! + + FT_LOAD_MONOCHROME is still supported, but only affects + rendering, not the hinting. + + Note that the `ftview' demo program available in the `ft2demos' + package has been updated to support LCD-optimized display on + non-paletted displays (under Win32 and X11). + + - The PFR driver now supports embedded bitmaps (all formats + supported), and returns correct kerning metrics for all glyphs. + + - The TrueType charmap loader now supports certain `broken' fonts + that load under Windows without problems. + + - The cache API has been slightly modified (it's still a beta!): + + - The type FTC_ImageDesc has been removed; it is now replaced + by FTC_ImageTypeRec. Note that one of its fields is a + `load_flag' parameter for FT_Load_Glyph. + + - The field `num_grays' of FT_SBitRec has been changed to + `max_grays' in order to fit within a single byte. Its + maximum value is thus 255 (instead of 256 as previously). + + + III. MISCELLANEOUS + + - Added support for the DESTDIR variable during `make install'. + This simplifies packaging of FreeType. + + - Included modified copies of the ZLib sources in `src/gzip' in + order to support gzip-compressed PCF fonts. We do not use the + system-provided zlib for now, though this is a probable + enhancement for future releases. + + - The DocMaker tool used to generate the on-line API reference has + been completely rewritten. It is now located in + `src/tools/docmaker/docmaker.py'. Features: + + - better cross-referenced output + - more polished output + - uses Python regular expressions (though it didn't speed the + program) + - much more modular structure, which allows for different + `backends' in order to generate HTML, XML, or whatever + format. + + One can regenerate the API reference by calling: + + python src/tools/docmaker/docmaker.py \ + --prefix=ft2 \ + --title=FreeType-2.1.3 \ + --output= + include/freetype/*.h \ + include/freetype/config/*.h \ + include/freetype/cache/*.h + + - A new, experimental, support for incremental font loading (i.e., + loading of fonts where the glyphs are not in the font file + itself, but provided by an external component, like a Postscript + interpreter) has been added by Graham Asher. This is still work + in progress, however. + + - A new, EXPERIMENTAL, path stroker has been added. It doesn't + suffer from severe rounding errors and treat bezier arcs + directly. Still work in progress (i.e. not part of the official + API). See the file for some of the + details. + + - The massive re-formatting of sources and internal re-design is + still under-way. Many internal functions, constants, and types + have been renamed. + + +====================================================================== + +CHANGES BETWEEN 2.1.2 and 2.1.1 + + I. IMPORTANT BUG FIXES + + - Many font drivers didn't select a Unicode charmap by default + when a new face was opened (with the FT_CONFIG_OPTION_USE_CMAPS + options enabled), causing many applications to not be able to + display text correctly with the 2.1.x releases. + + - The PFR driver had a bug in its composite loading code that + produces incorrectly placed accents with many fonts. + + - The Type42 driver crashed sometimes due to a nasty bug. + + - The Type 1 custom encoding charmap didn't handle the case where + the first glyph index wasn't 0. + + - A serious typo in the TrueType composite loader produced + incorrectly placed glyphs in fonts like `Wingdings' and a few + others. + + + II. MISCELLANEOUS + + - The Win32 Visual C++ project file has been updated to include + the PFR driver as well. + + - `freetype.m4' is now installed by default by `make install' on + Unix systems. + + - The function FT_Get_PS_Font_Info now works with CID and Type42 + fonts as well. + + +====================================================================== + +CHANGES BETWEEN 2.1.1 and 2.1.0 + + I. IMPORTANT BUG FIXES + + - The `version_info' returned by `freetype-config' in 2.1.0 + returned an invalid value. It now returns 9:1:3 (2.0.9 returned + 9:0:3). + + - Version 2.1.0 couldn't be linked against applications on Win32 + and Amiga systems due to a new debug function that wasn't + properly propagated to the system-specific directory in + `builds'. + + - Various MacOS and Mac OS X specific fixes. + + - Fixed a bug in the TrueType charmap validation routines that + made version 2.1.0 too restrictive -- many popular fonts have + been rejected. + + - There was still a very small difference between the monochrome + glyph bitmaps produced by FreeType 1.x and FreeType 2.x with the + bytecode interpreter enabled. This was caused by an invalid + flag setting in the TrueType glyph loader, making the rasterizer + change its drop-out control mode. Now the results should + _really_ be completely identical. + + - The TrueType name table loader has been improved to support many + popular though buggy Asian fonts. It now ignores empty name + entries, invalid pointer offsets and a few other incorrect + subtleties. Moreover, name strings are now loaded on demand, + which reduces the memory load of many faces (e.g. the ARIAL.TTF + font file contains a 10kByte name table with 70 names). + + - Fixed a bug in the Postscript hinter that prevented family blues + substitution to happen correctly. + + + II. NEW FEATURES + + - Three new font drivers in this release: + + * A BDF font driver, contributed by Franco Zappa Nardelli, + heavily modified by Werner Lemberg. It also supports + anti-aliased bitmaps (using a slightly extended BDF format). + + * A Type42 font driver, contributed by Roberto Alameda. It is + still experimental but seems to work relatively well. + + * A PFR font driver, contributed by David Turner himself. It + doesn't support PFR hinting -- note that BitStream has at + least two patents on this format! + + + III. MISCELLANEOUS + + - The cache sub-system has been optimized in important ways. + Cache hits are now significantly faster. For example, using the + CMap cache is about twice faster than calling FT_Get_Char_Index + on most platforms. Similarly, using an SBit cache is about five + times faster than loading the bitmaps from a bitmap file, and + 300 to 500 times faster than generating them from a scalable + format. + + Note that you should recompile your sources if you designed a + custom cache class for the FT2 Cache subsystem, since the + changes performed are source, but not binary, compatible. + + +====================================================================== + +CHANGES BETWEEN 2.1.0 and 2.0.9 + + I. IMPORTANT BUG FIXES + + - The TrueType bytecode interpreter has been fixed to produce + _exactly_ the same output as FreeType 1.x. Previous differences + were due to slightly distinct fixed-point computation routines + used to perform dot products and vector length measurements. + + It seems that native TrueType hinting is _extremely_ sensitive + to rounding errors. The required vector computation routines + have been optimized and placed within the `ttinterp.c' file. + + - Fixed the parsing of accelerator tables in the PCF font driver. + + - Fixed the Type1 glyph loader routine used to compute the font's + maximum advance width. + + + II. NEW FEATURES + + - The `configure' script used on Unix systems has been modified to + check that GNU Make is being used to build the library. + Otherwise, it will display a message proposing to use the + GNUMAKE environment variable to name it. + + The Unix-specific file README.UNX has been modified accordingly. + + + III. MISCELLANEOUS + + - The FreeType License in `docs/FTL.TXT' has been updated to + include a proposed preferred disclaimer. If you are using + FreeType in your products, you are encouraged (but not mandated) + to use the following text in your documentation: + + """ + Portions of this software are copyright © 1996-2002 The + FreeType Project (https://freetype.org). All rights reserved. + """ + + - The default size of the render pool has been reduced to 16kByte. + This shouldn't result in any noticeable performance penalty, + unless you are using the engine as-is to render very large and + complex glyphs. + + - The FreeType 2 redesign has begun. More information can be + found at this URL: + + https://freetype.org/freetype2/redesign.html + + The following internal changes have been performed within the + sources of this release: + + - Many internal types have been renamed to increase + consistency. The following should be true, except for + public types: + + * All structure types have a name ending in `Rec' (short + for `record'). + + * A pointer-to-structure type has the same name as the + structure, _without_ the `Rec' suffix. + + Example: + + typedef struct FooRec_ + { + ... + + } FooRec, *Foo; + + - Many internal macros have been renamed to increase + consistency. The following should be true: + + * All macros have a name beginning with `FT_'. This + required a few changes like + + ALLOC => FT_ALLOC + FREE => FT_FREE + REALLOC => FT_REALLOC + + * All macros are completely UPPERCASE. This required a + few changes like: + + READ_Short => FT_READ_SHORT + NEXT_Short => FT_NEXT_SHORT + GET_ULongLE => FT_GET_ULONG_LE + MEM_Set => FT_MEM_SET + MEM_Copy => FT_MEM_COPY + etc. + + * Whenever possible, all macro names follow the + FT__ pattern. For example + + ACCESS_Frame => FT_FRAME_ENTER + FORGET_Frame => FT_FRAME_EXIT + EXTRACT_Frame => FT_FRAME_EXTRACT + RELEASE_Frame => FT_FRAME_RELEASE + + FILE_Pos => FT_STREAM_POS + FILE_Seek => FT_STREAM_SEEK + FILE_Read => FT_STREAM_READ + FILE_ReadAt => FT_STREAM_READ_AT + READ_Fields => FT_STREAM_READ_FIELDS + + - Many internal functions have been renamed to follow the + FT__ pattern. For example: + + FT_Seek_Stream => FT_Stream_Seek + FT_Read_Stream_At => FT_Stream_ReadAt + FT_Done_Stream => FT_Stream_Close + FT_New_Stream => FT_Stream_Open + FT_New_Memory_Stream => FT_Stream_OpenMemory + FT_Extract_Frame => FT_Stream_ExtractFrame + + Note that method names do not contain `_'. + + - The FT_ALLOC_ARRAY and FT_REALLOC_ARRAY have been replaced + with FT_NEW_ARRAY and FT_RENEW_ARRAY which do not take a + type as the fourth argument. Instead, the array element + type size is computed automatically from the type of the + target pointer used. + + - A new object class, FT_CMap, has been introduced. These + internal objects are used to model character maps. This + eases the support of additional charmap types within the + engine. + + - A new configuration file named `ftstdlib.h' has been added + to `include/freetype/config'. It is used to define aliases + for _every_ routine of the ISO C library that the font + engine uses. Each aliases has a `ft_' prefix + (e.g. `ft_strlen' is an alias for `strlen'). + + This is used to ease the porting of FreeType 2 to exotic + runtime environments where the ISO C Library isn't available + (e.g. XFree86 extension modules). + + More details are available in the `ChangeLog' file. + + +====================================================================== + +CHANGES BETWEEN 2.0.9 and 2.0.8 + + I. IMPORTANT BUG FIXES + + - Certain fonts like `foxjump.ttf' contain broken name tables with + invalid entries and wild offsets. This caused FreeType to crash + when trying to load them. + + The SFNT `name' table loader has been fixed to be able to + support these strange fonts. + + Moreover, the code in charge of processing this table has been + changed to always favour Windows-formatted entries over other + ones. Hence, a font that works on Windows but not on the Mac + will load cleanly in FreeType and report accurate values for + Family & PostScript names. + + - The CID font driver has been fixed. It unfortunately returned a + Postscript Font name with a leading slash, as in + `/MunhwaGothic-Regular'. + + - FreeType 2 should now compile fine on AIX 4.3.3 as a shared + library. + + - A bug in the Postscript hinter has been found and fixed, + removing un-even stem widths at small pixel sizes (like 14-17). + + This improves the quality of a certain number of Postscript + fonts. + + + II. NEW FEATURES + + - A new function named `FT_Library_Version' has been added to + return the current library's major, minor, and patch version + numbers. This is important since the macros FREETYPE_MAJOR, + FREETYPE_MINOR, and FREETYPE_PATCH cannot be used when the + library is dynamically linked by a program. + + - Two new APIs have been added: `FT_Get_First_Char' and + `FT_Get_Next_Char'. + + Together, these can be used to iterate efficiently over the + currently selected charmap of a given face. Read the API + reference for more details. + + + III. MISCELLANEOUS + + - The FreeType sources are under heavy internal re-factoring. As + a consequence, we have created a branch named `STABLE' on the + CVS to hold all future releases/fixes in the 2.0.x family. + + The HEAD branch now contains the re-factored sources and + shouldn't be used for testing or packaging new releases. In + case you would like to access the 2.0.9 sources from our CVS + repository, use the tag `VER-2-0-9'. + + +====================================================================== + +CHANGES BETWEEN 2.0.8 and 2.0.7 + + I. IMPORTANT BUG FIXES + + - There was a small but nasty bug in `freetype-config.in' which + caused the `freetype-config' script to fail on Unix. + + This didn't prevent the installation of the library or even its + execution, but caused problems when trying to compile many Unix + packages that depend on it. + + - Some TrueType or OpenType fonts embedded in PDF documents do not + have a 'cmap', 'post' and 'name' as is required by the + specification. FreeType no longer refuses to load such fonts. + + - Various fixes to the PCF font driver. + + +====================================================================== + +CHANGES BETWEEN 2.0.7 and 2.0.6 + + I. IMPORTANT BUG FIXES + + - Fixed two bugs in the Type 1 font driver. The first one + resulted in a memory leak in subtle cases. The other one caused + FreeType to crash when trying to load `.gsf' files (Ghostscript + so-called Postscript fonts). + + (This made _many_ KDE applications crash on certain systems. + FreeType _is_ becoming a critical system component on Linux :-) + + - Fixed a memory leak in the CFF font driver. + + - Fixed a memory leak in the PCF font driver. + + - Fixed the Visual C++ project file + `builds/win32/visualc/freetype.dsp' since it didn't include the + Postscript hinter component, causing errors at build time. + + - Fixed a small rendering bug in the anti-aliased renderer that + only occurred when trying to draw thin (less than 1 pixel) + strokes. + + - Fixed `builds/unix/freetype2.a4' which is used to generate a + valid `freetype2.m4' for use with autoconf. + + - Fixed the OpenVMS Makefiles. + + + II. MISCELLANEOUS + + - Added `configure' and `install' scripts to the top-level + directory. A GNU-style installation is thus now easily possible + with + + ./configure + make + make install + + +====================================================================== + +CHANGES BETWEEN 2.0.6 and 2.0.5 + + I. IMPORTANT BUG FIXES + + - It wasn't possible to load embedded bitmaps when the auto-hinter + was used. This is now fixed. + + - The TrueType font driver didn't load some composites properly + (the sub-glyphs were slightly shifted, and this was only + noticeable when using monochrome rendering). + + - Various fixes to the auto-hinter. They merely improve the + output of sans-serif fonts. Note that there are still problems + with serifed fonts and composites (accented characters). + + - All scalable font drivers erroneously returned un-fitted glyph + advances when hinting was requested. This created problems for + a number of layout applications. This is a very old bug that + got undetected mainly because most test/demo program perform + rounding explicitly or implicitly (through the cache). + + - `FT_Glyph_To_Bitmap' did erroneously modify the source glyph in + certain cases. + + - `glnames.py' still contained a bug that made FreeType return + invalid names for certain glyphs. + + - The library crashed when loading certain Type 1 fonts like + `sadn.pfb' (`Stalingrad Normal'), which appear to contain + pathetic font info dictionaries. + + - The TrueType glyph loader is now much more paranoid and checks + everything when loading a given glyph image. This was necessary + to avoid problems (crashes and/or memory overwrites) with broken + fonts that came from a really buggy automatic font converter. + + + II. IMPORTANT UPDATES AND NEW FEATURES + + - Important updates to the Mac-specific parts of the library. + + - The caching sub-system has been completely re-designed, and its + API has evolved (the old one is still supported for backward + compatibility). + + The documentation for it is not yet completed, sorry. For now, + you are encouraged to continue using the old API. However, the + ftview demo program in the ft2demos package has already been + updated to use the new caching functions. + + - A new charmap cache is provided too. See `FTC_CMapCache'. This + is useful to perform character code -> glyph index translations + quickly, without the need for an opened FT_Face. + + - A NEW POSTSCRIPT HINTER module has been added to support native + hints in the following formats: PostScript Type 1, PostScript + CID, and CFF/CEF. + + Please test! Note that the auto-hinter produces better results + for a number of badly-hinted fonts (mostly auto-generated ones) + though. + + - A memory debugger is now part of the standard FreeType sources. + To enable it, define FT_DEBUG_MEMORY in + , and recompile the library. + + Additionally, define the _environment_ variable FT_DEBUG_MEMORY + and run any program using FreeType. When the library is exited, + a summary of memory footprints and possible leaks will be + displayed. + + This works transparently with _any_ program that uses FreeType. + However, you will need a lot of memory to use this (allocated + blocks are never released to the heap to detect double deletes + easily). + + + III. MISCELLANEOUS + + - We are aware of subtle differences between the output of + FreeType versions 1 and 2 when it comes to monochrome + TrueType-hinted glyphs. These are most probably due to small + differences in the monochrome rasterizers and will be worked out + in an upcoming release. + + - We have decided to fork the sources in a `stable' branch, and an + `unstable' one, since FreeType is becoming a critical component + of many Unix systems. + + The next bug-fix releases of the library will be named 2.0.7, + 2.0.8, etc., while the `2.1' branch will contain a version of + the sources where we will start major reworking of the library's + internals, in order to produce FreeType 2.2.0 (or even 3.0) in a + more distant future. + + We also hope that this scheme will allow much more frequent + releases than in the past. + + +====================================================================== + +CHANGES BETWEEN 2.0.5 and 2.0.4 + + NOTE THAT 2.0.5 DOES NOT CONTAIN THE POSTSCRIPT HINTER. THIS MODULE + WILL BE PART OF THE NEXT RELEASE (EITHER 2.0.6 or 2.1) + + - Fixed a bug that made certain glyphs, like `Cacute', `cacute' and + `lslash' unavailable from Unicode charmaps of Postscript fonts. + This prevented the correct display of Polish text, for example. + + - The kerning table of Type 1 fonts was loaded by FreeType, when its + AFM file was attached to its face, but the + FT_FACE_FLAG_HAS_KERNING bit flags was not set correctly, + preventing FT_Get_Kerning to return meaningful values. + + - Improved SFNT (TrueType & OpenType) charmap support. Slightly + better performance, as well as support for the new formats defined + by the OpenType 1.3 specification (8, 10, and 12) + + - Fixed a serious typo in `src/base/ftcalc.c' which caused invalid + computations in certain rare cases, producing ugly artefacts. + + - The size of the EM square is computed with a more accurate + algorithm for Postscript fonts. The old one caused slight errors + with embedded fonts found in PDF documents. + + - Fixed a bug in the cache manager that prevented normal LRU + behaviour within the cache manager, causing unnecessary reloads + (for FT_Face and FT_Size objects only). + + - Added a new function named `FT_Get_Name_Index' to retrieve the + glyph index of a given glyph name, when found in a face. + + - Added a new function named `FT_Get_Postscript_Name' to retrieve + the `unique' Postscript font name of a given face. + + - Added a new public header size named FT_SIZES_H (or + ) providing new FT_Size-management functions: + FT_New_Size, FT_Activate_Size, FT_Done_Size. + + - Fixed a reallocation bug that generated a dangling pointer (and + possibly memory leaks) with Postscript fonts (in + src/psaux/psobjs.c). + + - Many fixes for 16-bit correctness. + + - Removed many pedantic compiler warnings from the sources. + + - Added an Amiga build directory in `builds/amiga'. + + +====================================================================== + +CHANGES BETWEEN 2.0.4 and 2.0.3 + + - Fixed a rather annoying bug that was introduced in 2.0.3. Namely, + the font transformation set through FT_Set_Transform was applied + twice to auto-hinted glyphs, resulting in incorrectly rotated text + output. + + - Fixed _many_ compiler warnings. FT2 should now compile cleanly + with Visual C++'s most pedantic warning level (/W4). It already + compiled fine with GCC and a few other compilers. + + - Fixed a bug that prevented the linear advance width of composite + TrueType glyphs to be correctly returned. + + - Fixed the Visual C++ project files located in + `builds/win32/visualc' (previous versions used older names of the + library). + + - Many 32-bit constants have an `L' appended to their value, in + order to improve the 16-bitness of the code. Someone is actually + trying to use FT2 on an Atari ST machine! + + - Updated the `builds/detect.mk' file in order to automatically + build FT2 on AIX systems. AIX uses `/usr/sbin/init' instead of + `/sbin/init' and wasn't previously detected as a Unix platform by + the FreeType build system. + + - Updated the Unix-specific portions of the build system (new + libtool version, etc.). + + - The SFNT kerning loader now ensures that the table is sorted + (since some problem fonts do not meet this requirement). + + +======================================================================= + +CHANGES BETWEEN 2.0.3 and 2.0.2 + + I. CHANGES TO THE MODULES / FONT DRIVERS + + - THE AUTO-HINTER HAS BEEN SLIGHTLY IMPROVED, in order to fix + several annoying artefacts, mainly: + + - Blue zone alignment of horizontal stems wasn't performed + correctly, resulting in artefacts like the `d' being placed + one pixel below the `b' in some fonts like Time New Roman. + + - Overshoot thresholding wasn't performed correctly, creating + unpleasant artefacts at large character pixel sizes. + + - Composite glyph loading has been simplified. This gets rid + of various artefacts where the components of a composite + glyphs were not correctly spaced. + + These are the last changes to the current auto-hinting module. + A new hinting sub-system is currently in the work in order to + support native hints in Type 1 / CFF / OpenType fonts, as well + as globally improve rendering. + + - The PCF driver has been fixed. It reported invalid glyph + dimensions for the fonts available on Solaris. + + - The Type 1, CID and CFF drivers have been modified to fix the + computation of the EM size. + + - The Type 1 driver has been fixed to avoid a dangerous bug that + crashed the library with non-conforming fonts (i.e. ones that do + not place the .notdef glyph at position 0). + + - The TrueType driver had a rather subtle bug (dangling pointer + when loading composite glyphs) that could crash the library in + rare occasions! + + + II. HIGH-LEVEL API CHANGES + + - The error code enumeration values have been changed. An error + value is decomposed in a generic error code, and a module + number. see for details. + + - A new public header file has been introduced, named + FT_TRIGONOMETRY_H (include/freetype/fttrigon.h), providing + trigonometric functions to compute sines, cosines, arctangents, + etc. with 16.16 fixed precision. The implementation is based on + the CORDIC algorithm and is very fast while being sufficiently + accurate. + + + III. INTERNALS + + - Added BeOS-specific files in the old build sub-system. Note + that no changes were required to compile the library with Jam. + + - The configuration is now capable of automatically detecting + 64-bit integers on a set of predefined compilers (GCC, Visual + C++, Borland C++) and will use them by default. This provides a + small performance boost. + + - A small memory leak that happened when opening 0-sized files + (duh!) have been fixed. + + - Fixed bezier stack depth bug in the routines provided by the + FT_BBOX_H header file. Also fixed similar bugs in the + rasterizers. + + - The outline bounding box code has been rewritten to use direct + computations, instead of bezier sub-division, to compute the + exact bounding box of glyphs. This is slightly slower but more + accurate. + + - The build system has been improved and fixed, mainly to support + `make' on Windows 2000 correctly, avoid problems with `make + distclean' on non Unix systems, etc. + + - Hexadecimal constants have been suffixed with `U' to avoid + problems with certain compilers on 64-bit platforms. + + - A new directory named `src/tools' has been created. It contains + Python scripts and simple unit test programs used to develop the + library. + + - The DocMaker tool has been moved from `docs' to `src/tools' and + has been updated with the following: + + - Now accepts the `--title=XXXX' or `-t XXXX' option from the + command line to set the project's name in the generated API + reference. + + - Now accepts the `--output=DIR' or `-o DIR' option from the + command line to set the output directory for all generated + HTML files. + + - Now accepts the `--prefix=XXXX' or `-p XXX' option from the + command line to set the file prefix to use for all + generated HTML files. + + - Now generates the current time/data on each generated page + in order to distinguish between versions. + + DocMaker can be used with other projects now, not only FT2 + (e.g. MLib, FTLayout, etc.). + + +====================================================================== + +CHANGES BETWEEN 2.0.2 and 2.0.1 + + I. CHANGES TO THE MODULES / FONT DRIVERS + + - THE TRUETYPE BYTECODE INTERPRETER IS NOW TURNED OFF, in order to + avoid legal problems with the Apple patents. It seems that we + mistakenly turned this option on in previous releases of the + build. + + Note that if you want to use the bytecode interpreter in order + to get high-quality TrueType rendering, you will need to toggle + by hand the definition of the + TT_CONFIG_OPTION_BYTECODE_INTERPRETER macro in the file + `include/freetype/config/ftoption.h'. + + - The CFF driver has been improved by Tom Kacvinsky and Sander van + der Wal: + + * Support for `seac' emulation. + * Support for `dotsection'. + * Support for retrieving glyph names through + `FT_Get_Glyph_Name'. + + The first two items are necessary to correctly a large number of + Type 1 fonts converted to the CFF formats by Adobe Acrobat. + + - The Type 1 driver was also improved by Tom & others: + + * Better EM size computation. + * Better support for synthetic (transformed) fonts. + * The Type 1 driver returns the charstrings corresponding to + each glyph in the `glyph->control_data' field after a call to + `FT_Load_Glyph' (thanks Ha Shao). + + - Various other bugfixes, including the following: + + * Fixed a nasty memory leak in the Type 1 driver. + * The autohinter and the pcf driver used static writable data + when they shouldn't. + * Many casts were added to make the code more 64-bits safe. It + also now compiles on Windows XP 64-bits without warnings. + * Some incorrect writable statics were removed in the `autohint' + and `pcf' drivers. FreeType 2 now compiles on Epoc again. + + + II. CHANGES TO THE HIGH-LEVEL API + + - The library header files inclusion scheme has been changed. The + old scheme looked like: + + #include + #include + #include + #include + + Now you should use: + + #include + #include FT_FREETYPE_H + #include FT_GLYPH_H + #include FT_CACHE_H + #include FT_CACHE_IMAGE_H + + NOTE THAT THE OLD INCLUSION SCHEME WILL STILL WORK WITH THIS + RELEASE. HOWEVER, WE DO NOT GUARANTEE THAT THIS WILL STILL BE + TRUE IN THE NEXT ONE (A.K.A. FREETYPE 2.1). + + The file is used to define the header filename + macros. The complete and commented list of macros is available + in the API reference under the section name `Header File Macros' + in Chapter I. + + For more information, see section I of the following document: + + https://freetype.org/freetype2/docs/tutorial/step1.html + + - Many, many comments have been added to the public source file in + order to automatically generate the API Reference through the + `docmaker.py' Python script. + + The latter has been updated to support the grouping of sections + in chapters and better index sort. See: + + https://freetype.org/freetype2/docs/reference/ft2-toc.html + + + III. CHANGES TO THE BUILD PROCESS + + - If you are not building FreeType 2 with its own build system + (but with your own Makefiles or project files), you will need to + be aware that the build process has changed a little bit. + + You don't need to put the `src' directory in the include path + when compiling any FT2 component. Instead, simply put the + component's directory in the current include path. + + So, if you were doing something like: + + cc -c -Iinclude -Isrc src/base/ftbase.c + + change the line to: + + cc -c -Iinclude -Isrc/base src/base/ftbase.c + + If you were doing something like: + + cd src/base + cc -c -I../../include -I.. ftbase.c + + change it to: + + cd src/base + cc -c -I../../include ftbase.c + + +====================================================================== + +CHANGES BETWEEN 2.0.1 and 2.0 + + 2.0.1 introduces a few changes: + + - Fixed many bugs related to the support of CFF / OpenType fonts. + These formats are now much better supported though there is + still work planned to deal with charset tables and PDF-embedded + CFF files that use the old `seac' command. + + - The library could not be compiled in debug mode with a very + small number of C compilers whose pre-processors didn't + implement the `##' directive correctly (i.e. per se the ANSI C + specification!) An elegant fix was found. + + - Added support for the free Borland command-line C++ Builder + compiler. Use `make setup bcc32'. Also fixed a few source + lines that generated new warnings with BCC32. + + - Fixed a bug in FT_Outline_Get_BBox when computing the extrema of + a conic Bezier arc. + + - Updated the INSTALL file to add IDE compilation. + + - Other minor bug fixes, from invalid Type 1 style flags to + correct support of synthetic (obliqued) fonts in the + auto-hinter, better support for embedded bitmaps in a SFNT font. + + - Fixed some problems with `freetype-config'. + + Finally, the `standard' scheme for including FreeType headers is now + gradually changing, but this will be explained in a later release + (probably 2.0.2). + + And very special thanks to Tom Kacvinsky and YAMANO-UCHI Hidetoshi + for their contributions! + + +====================================================================== + +CHANGES BETWEEN beta8 and 2.0 + + - Changed the default installation path for public headers from + `include/freetype' to `include/freetype2'. + + Also added a new `freetype-config' that is automatically generated + and installed on Unix and Cygwin systems. The script itself is + used to retrieve the current install path, C compilation flags as + well as linker flags. + + - Fixed several small bugs: + + * Incorrect max advance width for fixed-pitch Type 1 fonts. + * Incorrect glyph names for certain TrueType fonts. + * The glyph advance was not copied when FT_Glyph_To_Bitmap was + called. + * The linearHoriAdvance and linearVertAdvance fields were not + correctly returned for glyphs processed by the auto-hinter. + * `type1z' renamed back to `type1'; the old `type1' module has + been removed. + + - Revamped the build system to make it a lot more generic. This + will allow us to re-use nearly un-modified in lots of other + projects (including FreeType Layout). + + - Changed `cid' to use `psaux' too. + + - Added the cache sub-system. See as well as + the sources in `src/cache'. Note that it compiles but is still + untested for now. + + - Updated `docs/docmaker.py', a draft API reference is available at + https://web.archive.org/web/20001215173400/http://www.freetype.org:80/ft2api.html. + + - Changed `type1' to use `psaux'. + + - Created a new module named `psaux' to hold the Type 1 & Type 2 + parsing routines. It should be used by `type1', `cid', and `cff' + in the future. + + - Fixed an important bug in `FT_Glyph_Get_CBox'. + + - Fixed some compiler warnings that happened since the TrueType + bytecode decoder was deactivated by default. + + - Fixed two memory leaks: + + * The memory manager (16 bytes) isn't released in + FT_Done_FreeType! + * Using custom input streams, the copy of the original stream was + never released. + + - Fixed the auto-hinter by performing automatic computation of the + `filling direction' of each glyph. This is done through a simple + and fast approximation, and seems to work (problems spotted by + Werner though). The Arphic fonts are a lot nicer though there are + still a lot of things to do to handle Asian fonts correctly. + + +====================================================================== + +BETA-8 (RELEASE CANDIDATE) CHANGES + + - Deactivated the TrueType bytecode interpreter by default. + + - Deactivated the `src/type1' font driver. Now `src/type1z' is used + by default. + + - Updates to the build system. We now compile the library correctly + under Unix system through `configure' which is automatically + called on the first `make' invocation. + + - Added the auto-hinting module! Fixing some bugs here and there. + + - Found some bugs in the composite loader (seac) of the Type1-based + font drivers. + + - Renamed the directory `freetype2/config' to `freetype2/builds' and + updated all relevant files. + + - Found a memory leak in the `type1' driver. + + - Incorporated Tom's patches to support flex operators correctly in + OpenType/CFF fonts. Now all I need is to support pure CFF and CEF + fonts to be done with this driver :-) + + - Added the Windows FNT/FON driver in `src/winfonts'. For now, it + always `simulates' a Unicode charmap, so it shouldn't be + considered completed right now. + + It is there to be more a proof of concept than anything else + anyway. The driver is a single C source file, that compiles to 3 + Kb of code. + + I'm still working on the PCF/BDF drivers, but I'm too lazy to + finish them now. + + - CHANGES TO THE HIGH-LEVEL API + + * FT_Get_Kerning has a new parameter that allows you to select the + coordinates of the kerning vector (font units, scaled, scaled + + grid-fitted). + * The outline functions are now in and not + part of anymore. + * now contains declarations for + FT_New_Library, FT_Done_Library, FT_Add_Default_Modules. + * The so-called convenience functions have moved from `ftoutln.c' + to `ftglyph.c', and are thus available with this optional + component of the library. They are declared in + now. + * Anti-aliased rendering is now the default for FT_Render_Glyph + (i.e. corresponds to render_mode == 0 == ft_render_mode_normal). + To generate a monochrome bitmap, use ft_render_mode_mono, or the + FT_LOAD_MONOCHROME flag in FT_Load_Glyph/FT_Load_Char. + FT_LOAD_ANTI_ALIAS is still defined, but values to 0. + * now include , + solving a few headaches :-) + * The type FT_GlyphSlotRec has now a `library' field. + + - CHANGES TO THE `ftglyph.h' API + + This API has been severely modified in order to make it simpler, + clearer, and more efficient. It certainly now looks like a real + `glyph factory' object, and allows client applications to manage + (i.e. transform, bbox and render) glyph images without ever + knowing their original format. + + - Added support for CID-keyed fonts to the CFF driver. Maybe + support for pure CFF + CEF fonts should come in? + + - Cleaned up source code in order to avoid two functions with the + same name. Also changed the names of the files in `type1z' from + `t1XXXX' to `z1XXXX' in order to avoid any conflicts. + + `make multi' now works well :-) + + Also removed the use of `cidafm' for now, even if the source files + are still there. This functionality will certainly go into a + specific module. + + - ADDED SUPPORT FOR THE AUTO-HINTER + + It works :-) I have a demo program which simply is a copy of + `ftview' that does a `FT_Add_Module(library, + &autohinter_module_class)' after library initialization, and Type + 1 & OpenType/CFF fonts are now hinted. + + CID fonts are not hinted, as they include no charmap and the + auto-hinter doesn't include `generic' global metrics computations + yet. + + Now, I need to release this thing to the FreeType 2 source. + + - CHANGES TO THE RENDERER MODULES + + The monochrome and smooth renderers are now in two distinct + directories, namely `src/raster1' and `src/smooth'. Note that the + old `src/renderer' is now gone. + + I ditched the 5-gray-levels renderers. Basically, it involved a + simple #define toggle in 'src/raster1/ftraster.c'. + + FT_Render_Glyph, FT_Outline_Render & FT_Outline_Get_Bitmap now + select the best renderer available, depending on render mode. If + the current renderer for a given glyph image format isn't capable + of supporting the render mode, another one will be found in the + library's list. This means that client applications do not need + to switch or set the renderers themselves (as in the latest + change), they'll get what they want automatically. At last. + + Changed the demo programs accordingly. + + - MAJOR INTERNAL REDESIGN: + + A lot of internal modifications have been performed lately on the + source in order to provide the following enhancements: + + * More generic module support: + + The FT_Module type is now defined to represent a handle to a + given module. The file contains the + FT_Module_Class definition, as well as the module-loading public + API. + + The FT_Driver type is still defined, and still represents a + pointer to a font driver. Note that FT_Add_Driver is replaced + by FT_Add_Module, FT_Get_Driver by FT_Get_Module, etc. + + * Support for generic glyph image types: + + The FT_Renderer type is a pointer to a module used to perform + various operations on glyph image. + + Each renderer is capable of handling images in a single format + (e.g. ft_glyph_format_outline). Its functions are used to: + + - transform an glyph image + - render a glyph image into a bitmap + - return the control box (dimensions) of a given glyph image + + The scan converters `ftraster.c' and `ftgrays.c' have been moved + to the new directory `src/renderer', and are used to provide two + default renderer modules. + + One corresponds to the `standard' scan-converter, the other to + the `smooth' one. + + he current renderer can be set through the new function + FT_Set_Renderer. + + The old raster-related function FT_Set_Raster, FT_Get_Raster and + FT_Set_Raster_Mode have now disappeared, in favor of the new: + + FT_Get_Renderer + FT_Set_Renderer + + See the file for more details. + + These changes were necessary to properly support different + scalable formats in the future, like bi-color glyphs, etc. + + * Glyph loader object: + + A new internal object, called a 'glyph loader' has been + introduced in the base layer. It is used by all scalable format + font drivers to load glyphs and composites. + + This object has been created to reduce the code size of each + driver, as each one of them basically re-implemented its + functionality. + + See and the FT_GlyphLoader type for + more information. + + * FT_GlyphSlot has new fields: + + In order to support extended features (see below), the + FT_GlyphSlot structure has a few new fields: + + linearHoriAdvance: + + This field gives the linearly scaled (i.e. scaled but + unhinted) advance width for the glyph, expressed as a 16.16 + fixed pixel value. This is useful to perform WYSIWYG text. + + linearVertAdvance: + This field gives the linearly scaled advance height for the + glyph (relevant in vertical glyph layouts only). This is + useful to perform WYSIWYG text. + + Note that the two above field replace the removed `metrics2' + field in the glyph slot. + + advance: + This field is a vector that gives the transformed advance for + the glyph. By default, it corresponds to the advance width, + unless FT_LOAD_VERTICAL_LAYOUT was specified when calling + FT_Load_Glyph or FT_Load_Char. + + bitmap_left: + This field gives the distance in integer pixels from the + current pen position to the left-most pixel of a glyph image + IF IT IS A BITMAP. It is only valid when the `format' field + is set to `ft_glyph_format_bitmap', for example, after calling + the new function FT_Render_Glyph. + + bitmap_top: + This field gives the distance in integer pixels from the + current pen position (located on the baseline) to the top-most + pixel of the glyph image IF IT IS A BITMAP. Positive values + correspond to upwards Y. + + loader: + This is a new private field for the glyph slot. Client + applications should not touch it. + + + * Support for transforms and direct rendering in FT_Load_Glyph: + + Most of the functionality found in has been + moved to the core library. Hence, the following: + + - A transform can be specified for a face through + FT_Set_Transform. this transform is applied by FT_Load_Glyph + to scalable glyph images (i.e. NOT TO BITMAPS) before the + function returns, unless the bit flag FT_LOAD_IGNORE_TRANSFORM + was set in the load flags. + + - Once a glyph image has been loaded, it can be directly + converted to a bitmap by using the new FT_Render_Glyph + function. Note that this function takes the glyph image from + the glyph slot, and converts it to a bitmap whose properties + are returned in `face.glyph.bitmap', `face.glyph.bitmap_left' + and `face.glyph.bitmap_top'. The original native image might + be lost after the conversion. + + - When using the new bit flag FT_LOAD_RENDER, the FT_Load_Glyph + and FT_Load_Char functions will call FT_Render_Glyph + automatically when needed. + + - Reformatted all modules source code in order to get rid of the + 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. + + +====================================================================== + +OLD CHANGES FOR BETA 7 + + - bug-fixed the OpenType/CFF parser. It now loads and displays my + two fonts nicely, but I'm pretty certain that more testing is + needed :-) + + - fixed the crummy Type 1 hinter, it now handles accented characters + correctly (well, the accent is not always well placed, but that's + another problem..) + + - added the CID-keyed Type 1 driver in `src/cid'. Works pretty well + for only 13 Kb of code ;-) Doesn't read AFM files though, nor the + really useful CMAP files.. + + - fixed two bugs in the smooth renderer (src/base/ftgrays.c). + Thanks to Boris Letocha for spotting them and providing a fix. + + - fixed potential `divide by zero' bugs in ftcalc.c. + + - added source code for the OpenType/CFF driver (still incomplete + though..) + + - modified the SFNT driver slightly to perform more robust header + checks in TT_Load_SFNT_Header. This prevents certain font files + (e.g. some Type 1 Multiple Masters) from being incorrectly + `recognized' as TrueType font files.. + + - moved a lot of stuff from the TrueType driver to the SFNT module, + this allows greater code re-use between font drivers + (e.g. TrueType, OpenType, Compact-TrueType, etc..) + + - added a tiny segment cache to the SFNT Charmap 4 decoder, in order + to minimally speed it up.. + + - added support for Multiple Master fonts in `type1z'. There is + also a new file named which defines functions to + manage them from client applications. + + The new file `src/base/ftmm.c' is also optional to the engine.. + + - various formatting changes (e.g. EXPORT_DEF -> FT_EXPORT_DEF) + + small bug fixes in FT_Load_Glyph, the `type1' driver, etc.. + + - a minor fix to the Type 1 driver to let them apply the font matrix + correctly (used for many oblique fonts..) + + - some fixes for 64-bit systems (mainly changing some FT_TRACE calls + to use %p instead of %lx). Thanks to Karl Robillard. + + - fixed some bugs in the sbit loader (src/base/sfnt/ttsbit.c) + + added a new flag, FT_LOAD_CROP_BITMAP to query that bitmaps be + cropped when loaded from a file (maybe I should move the bitmap + cropper to the base layer ??). + + - changed the default number of gray levels of the smooth renderer + to 256 (instead of the previous 128). Of course, the human eye + can't see any difference ;-) + + - removed TT_MAX_SUBGLYPHS, there is no static limit on the number + of subglyphs in a TrueType font now.. + + +====================================================================== + +OLD CHANGES 16 May 2000 + + - tagged `BETA-6' in the CVS tree. This one is a serious release + candidate even though it doesn't incorporate the auto-hinter yet.. + + - various obsolete files were removed, and copyright header updated + + - finally updated the standard raster to fix the monochrome + rendering bug + re-enable support for 5-gray levels anti-aliasing + (suck, suck..) + + - created new header files, and modified sources accordingly: + + + - simple FreeType types, without the API + + - definition of memory-management macros + + - added the `DSIG' (OpenType Digital Signature) tag to + + + - light update/cleaning of the build system + changes to the sources + in order to get rid of _all_ compiler warnings with three + compilers, i.e: + + gcc with `-ansi -pedantic -Wall -W', Visual C++ with `/W3 /WX' and + LCC + + IMPORTANT NOTE FOR WIN32-LCC USERS: + | + | It seems the C pre-processor that comes with LCC is broken, it + | doesn't recognize the ANSI standard directives # and ## + | correctly when one of the argument is a macro. Also, + | something like: + | + | #define F(x) print##x + | + | F(("hello")) + | + | will get incorrectly translated to: + | + | print "hello") + | + | by its pre-processor. For this reason, you simply cannot build + | FreeType 2 in debug mode with this compiler.. + + - yet another massive grunt work. I've changed the definition of + the EXPORT_DEF, EXPORT_FUNC, BASE_DEF & BASE_FUNC macros. These + now take an argument, which is the function's return value type. + + This is necessary to compile FreeType as a DLL on Windows and + OS/2. Depending on the compiler used, a compiler-specific keyword + like __export or __system must be placed before (VisualC++) or + after (BorlandC++) the type.. + + Of course, this needed a lot of changes throughout the source code + to make it compile again... All cleaned up now, apparently.. + + Note also that there is a new EXPORT_VAR macro defined to allow + the _declaration_ of an exportable public (constant) + variable. This is the case of the raster interfaces (see + ftraster.h and ftgrays.h), as well as each module's interface (see + sfdriver.h, psdriver.h, etc..) + + - new feature: it is now possible to pass extra parameters to font + drivers when creating a new face object. For now, + this capability is unused. It could however prove to + be useful in a near future.. + + the FT_Open_Args structure was changes, as well as the internal + driver interface (the specific `init_face' module function has + now a different signature). + + - updated the tutorial (not finished though). + + - updated the top-level BUILD document + + - fixed a potential memory leak that could occur when loading + embedded bitmaps. + + - added the declaration of FT_New_Memory_Face in + , as it was missing from the public header + (the implementation was already in `ftobjs.c'). + + - the file has been seriously updated in order + to allow the automatic generation of error message tables. See + the comments within it for more information. + + - major directory hierarchy re-organisation. This was done for two + things: + + * first, to ease the `manual' compilation of the library by + requiring at lot less include paths :-) + + * second, to allow external programs to effectively access + internal data fields. For example, this can be extremely + useful if someone wants to write a font producer or a font + manager on top of FreeType. + + Basically, you should now use the 'freetype/' prefix for header + inclusion, as in: + + #include + #include + + Some new include sub-directories are available: + + a. the `freetype/config' directory, contains two files used to + configure the build of the library. Client applications + should not need to look at these normally, but they can if + they want. + + #include + #include + + b. the `freetype/internal' directory, contains header files that + describes library internals. These are the header files that + were previously found in the `src/base' and `src/shared' + directories. + + + As usual, the build system and the demos have been updated to + reflect the change.. + + Here's a layout of the new directory hierarchy: + + TOP_DIR + include/ + freetype/ + freetype.h + ... + config/ + ftoption.h + ftconfig.h + ftmodule.h + + internal/ + ftobjs.h + ftstream.h + ftcalc.h + ... + + src/ + base/ + ... + + sfnt/ + psnames/ + truetype/ + type1/ + type1z/ + + + Compiling a module is now much easier, for example, the following + should work when in the TOP_DIR directory on an ANSI build: + + gcc -c -I./include -I./src/base src/base/ftbase.c + gcc -c -I./include -I./src/sfnt src/sfnt/sfnt.c + etc.. + + (of course, using -Iconfig/ if you provide system-specific + configuration files). + + - updated the structure of FT_Outline_Funcs in order to allow direct + coordinate scaling within the outline decomposition routine (this + is important for virtual `on' points with TrueType outlines) + + updates to the rasters to support this.. + + - updated the OS/2 table loading code in `src/sfnt/ttload.c' in + order to support version 2 of the table (see OpenType 1.2 spec) + + - created `include/tttables.h' and `include/t1tables.h' to allow + client applications to access some of the SFNT and T1 tables of a + face with a procedural interface (see `FT_Get_Sfnt_Table') + + updates to internal source files to reflect the change.. + + - some cleanups in the source code to get rid of warnings when + compiling with the `-Wall -W -ansi -pedantic' options in gcc. + + - debugged and moved the smooth renderer to `src/base/ftgrays.c' and + its header to `include/ftgrays.h' + + - updated TT_MAX_SUBGLYPHS to 96 as some CJK fonts have composites + with up to 80 sub-glyphs !! Thanks to Werner + + +====================================================================== + +OLD CHANGES - 14-apr-2000 + + - fixed a bug in the TrueType glyph loader that prevented the + correct loading of some CJK glyphs in mingli.ttf + + - improved the standard Type 1 hinter in `src/type1' + + - fixed two bugs in the experimental Type 1 driver in `src/type1z' + to handle the new XFree86 4.0 fonts (and a few other ones..) + + - the smooth renderer is now complete and supports sub-banding to + render large glyphs at high speed. However, it is still located + in `demos/src/ftgrays.c' and should move to the library itself in + the next beta. NOTE: The smooth renderer doesn't compile in + stand-alone mode anymore, but this should be fixed RSN.. + + - introduced convenience functions to more easily deal with glyph + images, see `include/ftglyph.h' for more details, as well as the + new demo program named `demos/src/ftstring.c' that demonstrates + its use + + - implemented FT_LOAD_NO_RECURSE in both the TrueType and Type 1 + drivers (this is required by the auto-hinter to improve its + results). + + - changed the raster interface, in order to allow client + applications to provide their own span-drawing callbacks. + However, only the smooth renderer supports this. See + `FT_Raster_Params' in the file `include/ftimage.h'. + + - fixed a small bug in FT_MulFix that caused incorrect transform + computation! + + - Note: The tutorial is out-of-date. + + +====================================================================== + +OLD CHANGES - 12-mar-2000 + + - changed the layout of configuration files : now, all ANSI + configuration files are located in + `freetype2/config'. System-specific over-rides can be placed in + `freetype2/config/'. + + - moved all configuration macros to `config/ftoption.h' + + - improvements in the Type 1 driver with AFM support + + - changed the fields in the FT_Outline structure : the old `flags' + array is re-named `tags', while all ancient flags are encoded into + a single unsigned int named `flags'. + + - introduced new flags in FT_Outline.flags (see + ft_outline_.... enums in `ftimage.h'). + + - changed outline functions to `FT_Outline_' syntax + + - added a smooth anti-alias renderer to the demonstration programs + + - added Mac graphics driver (thanks Just) + + - FT_Open_Face changed in order to received a pointer to a + FT_Open_Args descriptor.. + + - various cleanups, a few more API functions implemented (see + FT_Attach_File) + + - updated some docs + + +====================================================================== + +OLD CHANGES - 22-feb-2000 + + - introduced the `psnames' module. It is used to: + + o convert a Postscript glyph name into the equivalent Unicode + character code (used by the Type 1 driver(s) to synthesize on + the fly a Unicode charmap). + + o provide an interface to retrieve the Postscript names of the + Macintosh, Adobe Standard & Adobe Expert character codes. + (the Macintosh names are used by the SFNT-module postscript + names support routines, while the other two tables are used by + the Type 1 driver(s)). + + - introduced the `type1z' alternate Type 1 driver. This is a (still + experimental) driver for the Type 1 format that will ultimately + replace the one in `src/type1'. It uses pattern matching to load + data from the font, instead of a finite state analyzer. It works + much better than the `old' driver with `broken' fonts. It is also + much smaller (under 15 Kb). + + - the Type 1 drivers (both in `src/type1' and `src/type1z') are + nearly complete. They both provide automatic Unicode charmap + synthesis through the `psnames' module. No re-encoding vector is + needed. (note that they still leak memory due to some code + missing, and I'm getting lazy). + + Trivial AFM support has been added to read kerning information but + wasn't exactly tested as it should ;-) + + - The TrueType glyph loader has been seriously rewritten (see the + file `src/truetype/ttgload.c'. It is now much, much simpler as + well as easier to read, maintain and understand :-) Preliminary + versions introduced a memory leak that has been reported by Jack + Davis, and is now fixed.. + + - introduced the new `ft_glyph_format_plotter', used to represent + stroked outlines like Windows `Vector' fonts, and certain Type 1 + fonts like `Hershey'. The corresponding raster will be written + soon. + + - FT_New_Memory_Face is gone. Likewise, FT_Open_Face has a new + interface that uses a structure to describe the input stream, the + driver (if required), etc.. + + +TODO + + - Write FT_Get_Glyph_Bitmap and FT_Load_Glyph_Bitmap + + - Add a function like FT_Load_Character(face, char_code, load_flags) + that would really embed a call to FT_Get_Char_Index then + FT_Load_Glyph to ease developer's work. + + - Update the tutorial! + + - consider adding support for Multiple Master fonts in the Type 1 + drivers. + + - Test the AFM routines of the Type 1 drivers to check that kerning + information is returned correctly. + + - write a decent auto-gridding component !! We need this to release + FreeType 2.0 gold ! + + +less urgent needs: + + - add a CFF/Type2 driver + - add a BDF driver + - add a FNT/PCF/HBF driver + - add a Speedo driver from the X11 sources + + +====================================================================== + +OLDER CHANGES - 27-jan-2000 + + - updated the `sfnt' module interface to allow several SFNT-based + drivers to co-exist peacefully + + - updated the `T1_Face' type to better separate Postscript font + content from the rest of the FT_Face structure. Might be used + later by the CFF/Type2 driver.. + + - added an experimental replacement Type 1 driver featuring advanced + (and speedy) pattern matching to retrieve the data from postscript + fonts. + + - very minor changes in the implementation of FT_Set_Char_Size and + FT_Set_Pixel_Sizes (they now implement default to lighten the font + driver's code). + + +====================================================================== + +OLD MESSAGE + +This file summarizes the changes that occurred since the last `beta' +of FreeType 2. Because the list is important, it has been divided into +separate sections: + +Table Of Contents: + + I High-Level Interface (easier !) + II Directory Structure + III Glyph Image Formats + IV Build System + V Portability + VI Font Drivers + + +---------------------------------------------------------------------- + +High-Level Interface: + + The high-level API has been considerably simplified. Here is how: + + - resource objects have disappeared. this means that face objects + can now be created with a single function call (see FT_New_Face + and FT_Open_Face) + + - when calling either FT_New_Face & FT_Open_Face, a size object + and a glyph slot object are automatically created for the face, + and can be accessed through `face->glyph' and `face->size' if + one really needs to. In most cases, there's no need to call + FT_New_Size or FT_New_Glyph. + + - similarly, FT_Load_Glyph now only takes a `face' argument + (instead of a glyph slot and a size). Also, its `result' + parameter is gone, as the glyph image type is returned in the + field `face->glyph.format' + + - the list of available charmaps is directly accessible through + `face->charmaps', counting `face->num_charmaps' elements. Each + charmap has an 'encoding' field which specifies which known + encoding it deals with. Valid values are, for example: + + ft_encoding_unicode (for ASCII, Latin-1 and Unicode) + ft_encoding_apple_roman + ft_encoding_sjis + ft_encoding_adobe_standard + ft_encoding_adobe_expert + + other values may be added in the future. Each charmap still + holds its `platform_id' and `encoding_id' values in case the + encoding is too exotic for the current library + + +---------------------------------------------------------------------- + +Directory Structure: + + Should seem obvious to most of you: + + freetype/ + config/ -- configuration sub-makefiles + ansi/ + unix/ -- platform-specific configuration files + win32/ + os2/ + msdos/ + + include/ -- public header files, those to be included + directly by client apps + + src/ -- sources of the library + base/ -- the base layer + sfnt/ -- the sfnt `driver' (see the drivers section + below) + truetype/ -- the truetype driver + type1/ -- the type1 driver + shared/ -- some header files shared between drivers + + demos/ -- demos/tools + + docs/ -- documentation (a bit empty for now) + + +---------------------------------------------------------------------- + +Glyph Image Formats: + + Drivers are now able to register new glyph image formats within the + library. For now, the base layer supports of course bitmaps and + vector outlines, but one could imagine something different like + colored bitmaps, bi-color vectors or whatever else (Metafonts anyone + ??). + + See the file `include/ftimage.h'. Note also that the type + FT_Raster_Map is gone, and is now replaced by FT_Bitmap, which + should encompass all known bitmap types. + + Each new image format must provide at least one `raster', i.e. a + module capable of transforming the glyph image into a bitmap. It's + also possible to change the default raster used for a given glyph + image format. + + The default outline scan-converter now uses 128 levels of grays by + default, which tends to smooth many things. Note that the demo + programs have been updated significantly in order to display these.. + + +---------------------------------------------------------------------- + +Build system: + + You still need GNU Make to build the library. The build system has + been very seriously re-vamped in order to provide things like : + + - automatic host platform detection (reverting to 'config/ansi' if + it is not detected, with pseudo-standard compilation flags) + + - the ability to compile from the Makefiles with very different and + exotic compilers. Note that linking the library can be difficult + for some platforms. + + For example, the file `config/win32/lcclib.bat' is invoked by the + build system to create the `.lib' file with LCC-Win32 because its + librarian has too many flaws to be invoked directly from the + Makefile. + + Here's how it works: + + - the first time you type `make', the build system runs a series of + sub-makefiles in order to detect your host platform. It then + dumps what it found, and creates a file called `config.mk' in the + current directory. This is a sub-Makefile used to define many + important Make variables used to build the library. + + - the second time, the build system detects the `config.mk' then use + it to build the library. All object files go into 'obj' by + default, as well as the library file, but this can easily be + changed. + + Note that you can run `make setup' to force another host platform + detection even if a `config.mk' is present in the current + directory. Another solution is simply to delete the file, then + re-run make. + + Finally, the default compiler for all platforms is gcc (for now, + this will hopefully changed in the future). You can however specify + a different compiler by specifying it after the 'setup' target as + in: + + gnumake setup lcc on Win32 to use the LCC compiler + gnumake setup visualc on Win32 to use Visual C++ + + See the file `config//detect.mk' for a list of supported + compilers for your platforms. + + It should be relatively easy to write new detection rules files and + config.mk.. + + Finally, to build the demo programs, go to `demos' and launch GNU + Make, it will use the `config.mk' in the top directory to build the + test programs.. + + +---------------------------------------------------------------------- + +Portability: + + In the previous beta, a single FT_System object was used to + encompass all low-level operations like thread synchronisation, + memory management and i/o access. This has been greatly simplified: + + - thread synchronisation has been dropped, for the simple reason + that the library is already re-entrant, and that if you really + need two threads accessing the same FT_Library, you should + really synchronize access to it yourself with a simple mutex. + + - memory management is performed through a very simple object + called `FT_Memory', which really is a table containing a table + of pointers to functions like malloc, realloc and free as well + as some user data (closure). + + - resources have disappeared (they created more problems than they + solved), and i/o management have been simplified greatly as a + result. Streams are defined through FT_Stream objects, which + can be either memory-based or disk-based. + + Note that each face has its own stream, which is closed only + when the face object is destroyed. Hence, a function like + TT_Flush_Face in 1.x cannot be directly supported. However, if + you really need something like this, you can easily tailor your + own streams to achieve the same feature at a lower level (and + use FT_Open_Face instead of FT_New_Face to create the face). + + See the file `include/ftsystem.h' for more details, as well as the + implementations found in `config/unix' and `config/ansi'. + + +---------------------------------------------------------------------- + +Font Drivers: + + The Font Driver interface has been modified in order to support + extensions & versioning. + + + The list of the font drivers that are statically linked to the + library at compile time is managed through a new configuration file + called `config//ftmodule.h'. + + This file is autogenerated when invoking `make modules'. This + target will parse all sub-directories of 'src', looking for a + `module.mk' rules file, used to describe the driver to the build + system. + + Hence, one should call `make modules' each time a font driver is + added or removed from the `src' directory. + + Finally, this version provides a `pseudo-driver' in `src/sfnt'. + This driver doesn't support font files directly, but provides + services used by all TrueType-like font drivers. Hence, its code is + shared between the TrueType & OpenType font formats, and possibly + more formats to come if we're lucky.. + + +---------------------------------------------------------------------- + +Extensions support: + + The extensions support is inspired by the one found in 1.x. + + Now, each font driver has its own `extension registry', which lists + which extensions are available for the font faces managed by the + driver. + + Extension ids are now strings, rather than 4-byte tags, as this is + usually more readable. + + Each extension has: + - some data, associated to each face object + - an interface (table of function pointers) + + An extension that is format-specific should simply register itself + to the correct font driver. Here is some example code: + + // Registering an extensions + // + FT_Error FT_Init_XXXX_Extension( FT_Library library ) + { + FT_DriverInterface* tt_driver; + + driver = FT_Get_Driver( library, "truetype" ); + if (!driver) return FT_Err_Unimplemented_Feature; + + return FT_Register_Extension( driver, &extension_class ); + } + + + // Implementing the extensions + // + FT_Error FT_Proceed_Extension_XXX( FT_Face face ) + { + FT_XXX_Extension ext; + FT_XXX_Extension_Interface ext_interface; + + ext = FT_Get_Extension( face, "extensionid", &ext_interface ); + if (!ext) return error; + + return ext_interface->do_it(ext); + } + +------------------------------------------------------------------------ + +Copyright (C) 2000-2026 by +David Turner, Robert Wilhelm, and Werner Lemberg. + +This file is part of the FreeType project, and may only be used, +modified, and distributed under the terms of the FreeType project +license, LICENSE.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: + +--- end of CHANGES --- From 5ad6f2a6e356932a50c6e6ef818797b2cb356a10 Mon Sep 17 00:00:00 2001 From: lopsi <40902730+Lpsd@users.noreply.github.com> Date: Thu, 11 Jun 2026 14:18:29 +0100 Subject: [PATCH 3/3] Disable hvf_driver_class module --- vendor/freetype/include/freetype/config/ftmodule.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vendor/freetype/include/freetype/config/ftmodule.h b/vendor/freetype/include/freetype/config/ftmodule.h index 028e52cc33c..b9985623e09 100644 --- a/vendor/freetype/include/freetype/config/ftmodule.h +++ b/vendor/freetype/include/freetype/config/ftmodule.h @@ -15,7 +15,7 @@ FT_USE_MODULE( FT_Driver_ClassRec, tt_driver_class ) FT_USE_MODULE( FT_Driver_ClassRec, t1_driver_class ) FT_USE_MODULE( FT_Driver_ClassRec, cff_driver_class ) FT_USE_MODULE( FT_Driver_ClassRec, t1cid_driver_class ) -FT_USE_MODULE( FT_Driver_ClassRec, hvf_driver_class ) +/* FT_USE_MODULE( FT_Driver_ClassRec, hvf_driver_class ) */ FT_USE_MODULE( FT_Driver_ClassRec, pfr_driver_class ) FT_USE_MODULE( FT_Driver_ClassRec, t42_driver_class ) FT_USE_MODULE( FT_Driver_ClassRec, winfnt_driver_class )