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)
-
-
-
-
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.
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