Merge "Revert "Update FreeType to 2.13.3"" into main
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 3592724..bb078e2 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,11 +1,5 @@
# CI setup for FreeType.
-# https://gitlab.freedesktop.org/freedesktop/freedesktop/-/issues/540
-workflow:
- rules:
- - if: $CI_PIPELINE_SOURCE == 'merge_request_event'
- - if: $CI_PIPELINE_SOURCE == 'push'
-
stages:
- build
@@ -54,7 +48,17 @@
# Make sure meson is up to date so we don't need to rebuild the image
# with each release.
- pip3 install -U 'meson==0.59.*'
+ - pip3 install --upgrade certifi
- pip3 install -U ninja
+
+ # Generate a UWP cross-file in case it's used
+ - $PSDefaultParameterValues['Out-File:Encoding'] = 'ASCII'
+ - echo "[binaries]" > uwp-crossfile.meson
+ - echo "c = 'cl'" >> uwp-crossfile.meson
+ - echo "strip = ['true']" >> uwp-crossfile.meson
+ - echo "[built-in options]" >> uwp-crossfile.meson
+ - echo "c_args = ['-DWINAPI_FAMILY=WINAPI_FAMILY_APP', '-DUNICODE', '-D_WIN32_WINNT=0x0A00', '-we4013']" >> uwp-crossfile.meson
+ - echo "c_winlibs = ['windowsapp.lib']" >> uwp-crossfile.meson
script:
# For some reason, options are separated by newlines instead of spaces,
# so we have to replace them first.
@@ -65,31 +69,14 @@
# script. Environment variables substitutions is done by PowerShell
# before calling `cmd.exe`, that's why we use `$env:FOO` instead of
# `%FOO%`.
- - cmd.exe /C "C:\BuildTools\Common7\Tools\VsDevCmd.bat -host_arch=amd64 -arch=$env:ARCH &&
- meson setup build $env:MESON_ARGS_WINDOWS &&
- meson compile --verbose -C build &&
- meson test -C build &&
- meson test -C build --benchmark"
-
-
-.build windows msbuild:
- extends: '.build windows common'
- variables:
- # Make sure any failure in PowerShell scripts is fatal.
- ErrorActionPreference: 'Stop'
- WarningPreference: 'Stop'
- script:
- - git submodule update --init --recursive
- - cmd.exe /C "C:\BuildTools\Common7\Tools\VsDevCmd.bat -host_arch=amd64 -arch=$env:ARCH &&
- MSBuild.exe -clp:ForceConsoleColor -t:Rebuild
- -p:Configuration=Debug
- -p:Platform=$env:PLATFORM
- -p:UserDefines=FT_DEBUG_LOGGING
- MSBuild.sln"
+ - cmd.exe /C "C:\BuildTools\Common7\Tools\VsDevCmd.bat -host_arch=amd64 -arch=$env:ARCH $env:VS_UWP &&
+ meson setup build $env:MESON_ARGS_WINDOWS $env:MESON_ARGS_UWP &&
+ meson compile --verbose -C build
+ $env:MESON_WINDOWS_TESTS"
# Format of job names:
-# <OS> <Build-Tool> <Build-Params> <Architecture>:
+# <OS> <Build-Tool> <Build-Params> <Architecture>
# Windows jobs.
@@ -98,18 +85,20 @@
extends: '.build windows meson'
variables:
ARCH: 'amd64'
+ MESON_WINDOWS_TESTS: '&& meson test -C build && meson test -C build --benchmark'
windows meson vs2019 x86:
extends: '.build windows meson'
variables:
ARCH: 'x86'
+ MESON_WINDOWS_TESTS: '&& meson test -C build && meson test -C build --benchmark'
-windows msbuild vs2019 amd64:
- extends: '.build windows msbuild'
+windows meson vs2019 amd64 uwp:
+ extends: '.build windows meson'
variables:
ARCH: 'amd64'
- PLATFORM: 'x64'
-
+ VS_UWP: '-app_platform=UWP'
+ MESON_ARGS_UWP: '--cross-file uwp-crossfile.meson -Dc_winlibs="windowsapp.lib"'
# Linux Jobs.
#
diff --git a/.mailmap b/.mailmap
index 31d2a47..9c7d08f 100644
--- a/.mailmap
+++ b/.mailmap
@@ -19,7 +19,7 @@
David Turner <david@freetype.org> <david.turner.dev@gmail.com>
David Turner <david@freetype.org> <digit@google.com>
Anuj Verma (अनुज वर्मा) <anujv@iitbhilai.ac.in>
-Ben Wagner <bungeman@gmail.com>
+Ben Wagner <bungeman@gmail.com> Bungeman <bungeman@gmail.com>
Ben Wagner <bungeman@gmail.com> <bungeman@google.com>
Ben Wagner <bungeman@gmail.com> <bungeman@chromium.org>
Nikolaus Waxweiler <madigens@gmail.com> <nikolaus.waxweiler@daltonmaag.com>
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 36516e4..8dbca01 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,6 +1,6 @@
# CMakeLists.txt
#
-# Copyright (C) 2013-2024 by
+# Copyright (C) 2013-2023 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# Written originally by John Cary <cary@txcorp.com>
@@ -110,7 +110,7 @@
# To minimize the number of cmake_policy() workarounds,
# CMake >= 3 is requested.
-cmake_minimum_required(VERSION 3.0...3.5)
+cmake_minimum_required(VERSION 3.0)
if (NOT CMAKE_VERSION VERSION_LESS 3.3)
# Allow symbol visibility settings also on static libraries. CMake < 3.3
@@ -164,7 +164,7 @@
set(VERSION_MAJOR "2")
set(VERSION_MINOR "13")
-set(VERSION_PATCH "3")
+set(VERSION_PATCH "2")
# Generate LIBRARY_VERSION and LIBRARY_SOVERSION.
set(LIBTOOL_REGEX "version_info='([0-9]+):([0-9]+):([0-9]+)'")
@@ -265,8 +265,6 @@
else ()
find_package(PNG)
endif ()
- # FreePNG calls FindZLIB so unset ZLIB_FOUND to respect FT_DISABLE_ZLIB
- unset(ZLIB_FOUND)
endif ()
if (NOT FT_DISABLE_ZLIB)
@@ -299,7 +297,7 @@
endif ()
# Create the configuration file
-if (UNIX AND NOT WIN32)
+if (UNIX)
check_include_file("unistd.h" HAVE_UNISTD_H)
check_include_file("fcntl.h" HAVE_FCNTL_H)
@@ -425,10 +423,10 @@
src/winfonts/winfnt.c
)
-if (WIN32)
- list(APPEND BASE_SRCS "builds/windows/ftsystem.c")
-elseif (UNIX)
+if (UNIX)
list(APPEND BASE_SRCS "builds/unix/ftsystem.c")
+elseif (WIN32)
+ list(APPEND BASE_SRCS "builds/windows/ftsystem.c")
else ()
list(APPEND BASE_SRCS "src/base/ftsystem.c")
endif ()
diff --git a/LICENSE b/LICENSE
index 3afd47a..2ea854b 100644
--- a/LICENSE
+++ b/LICENSE
@@ -263,17 +263,7 @@
-------------------------------------------------------------------
-Copyright (C) 1995-2022 Jean-loup Gailly, Mark Adler
-For conditions of distribution and use, see copyright notice in zlib.h
-
--------------------------------------------------------------------
-
-Copyright (C) 1995-2022 Mark Adler
-For conditions of distribution and use, see copyright notice in zlib.h
-
--------------------------------------------------------------------
-
-Copyright (C) 1995-2023 Jean-loup Gailly and Mark Adler
+Copyright (C) 1995-2022 Jean-loup Gailly and Mark Adler
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -296,7 +286,12 @@
-------------------------------------------------------------------
-Copyright (C) 1995-2023 Mark Adler
+Copyright (C) 1995-2022 Jean-loup Gailly, Mark Adler
+For conditions of distribution and use, see copyright notice in zlib.h
+
+-------------------------------------------------------------------
+
+Copyright (C) 1995-2022 Mark Adler
For conditions of distribution and use, see copyright notice in zlib.h
-------------------------------------------------------------------
@@ -312,7 +307,7 @@
-------------------------------------------------------------------
-Copyright (C) 1996-2024 by
+Copyright (C) 1996-2023 by
David Turner, Robert Wilhelm, Werner Lemberg and Detlef Würkner.
This file is part of the FreeType project, and may only be used,
@@ -323,7 +318,7 @@
-------------------------------------------------------------------
-Copyright (C) 1996-2024 by
+Copyright (C) 1996-2023 by
David Turner, Robert Wilhelm, Werner Lemberg, and Detlef Wuerkner.
This file is part of the FreeType project, and may only be used,
@@ -334,7 +329,7 @@
-------------------------------------------------------------------
-Copyright (C) 1996-2024 by
+Copyright (C) 1996-2023 by
David Turner, Robert Wilhelm, Werner Lemberg, and Dominik Röttsches.
This file is part of the FreeType project, and may only be used,
@@ -345,7 +340,7 @@
-------------------------------------------------------------------
-Copyright (C) 1996-2024 by
+Copyright (C) 1996-2023 by
David Turner, Robert Wilhelm, and Werner Lemberg
This file is part of the FreeType project, and may only be used,
@@ -356,7 +351,7 @@
-------------------------------------------------------------------
-Copyright (C) 1996-2024 by
+Copyright (C) 1996-2023 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used
@@ -367,7 +362,7 @@
-------------------------------------------------------------------
-Copyright (C) 1996-2024 by
+Copyright (C) 1996-2023 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used,
@@ -378,7 +373,7 @@
-------------------------------------------------------------------
-Copyright (C) 1996-2024 by
+Copyright (C) 1996-2023 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used, modified,
@@ -389,7 +384,7 @@
-------------------------------------------------------------------
-Copyright (C) 1996-2024 by
+Copyright (C) 1996-2023 by
David Turner, Robert Wilhelm, and Werner Lemberg.
Copyright 2003 Huw D M Davies for Codeweavers
Copyright 2007 Dmitry Timoshkov for Codeweavers
@@ -402,7 +397,7 @@
-------------------------------------------------------------------
-Copyright (C) 1996-2024 by
+Copyright (C) 1996-2023 by
David Turner, Robert Wilhelm, and Werner Lemberg.
Copyright 2007 Dmitry Timoshkov for Codeweavers
@@ -414,7 +409,7 @@
-------------------------------------------------------------------
-Copyright (C) 1996-2024 by
+Copyright (C) 1996-2023 by
Just van Rossum, David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used,
@@ -471,7 +466,7 @@
-------------------------------------------------------------------
-Copyright (C) 2000-2024 by
+Copyright (C) 2000-2023 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used,
@@ -482,7 +477,7 @@
-------------------------------------------------------------------
-Copyright (C) 2000-2024 by
+Copyright (C) 2000-2023 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used,
@@ -493,7 +488,7 @@
-------------------------------------------------------------------
-Copyright (C) 2000-2024 by
+Copyright (C) 2000-2023 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used,
@@ -504,7 +499,7 @@
-------------------------------------------------------------------
-Copyright (C) 2000-2024 by
+Copyright (C) 2000-2023 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used, modified,
@@ -584,7 +579,7 @@
-------------------------------------------------------------------
-Copyright (C) 2001-2024 by
+Copyright (C) 2001-2023 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used,
@@ -595,7 +590,7 @@
-------------------------------------------------------------------
-Copyright (C) 2001-2024 by
+Copyright (C) 2001-2023 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used
@@ -606,7 +601,7 @@
-------------------------------------------------------------------
-Copyright (C) 2001-2024 by
+Copyright (C) 2001-2023 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used,
@@ -617,7 +612,7 @@
-------------------------------------------------------------------
-Copyright (C) 2001-2024 by
+Copyright (C) 2001-2023 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used, modified,
@@ -628,7 +623,7 @@
-------------------------------------------------------------------
-Copyright (C) 2001-2024 by
+Copyright (C) 2001-2023 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used, modified,
@@ -646,7 +641,7 @@
-------------------------------------------------------------------
-Copyright (C) 2002-2024 by
+Copyright (C) 2002-2023 by
David Turner, Robert Wilhelm, and Werner Lemberg
This file is part of the FreeType project, and may only be used,
@@ -657,7 +652,7 @@
-------------------------------------------------------------------
-Copyright (C) 2002-2024 by
+Copyright (C) 2002-2023 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used,
@@ -668,7 +663,7 @@
-------------------------------------------------------------------
-Copyright (C) 2002-2024 by
+Copyright (C) 2002-2023 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used,
@@ -679,7 +674,7 @@
-------------------------------------------------------------------
-Copyright (C) 2002-2024 by
+Copyright (C) 2002-2023 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used,
@@ -690,7 +685,7 @@
-------------------------------------------------------------------
-Copyright (C) 2002-2024 by
+Copyright (C) 2002-2023 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used, modified,
@@ -701,7 +696,7 @@
-------------------------------------------------------------------
-Copyright (C) 2002-2024 by
+Copyright (C) 2002-2023 by
Roberto Alameda.
This file is part of the FreeType project, and may only be used,
@@ -712,7 +707,7 @@
-------------------------------------------------------------------
-Copyright (C) 2003-2024 by
+Copyright (C) 2003-2023 by
David Turner, Robert Wilhelm, Werner Lemberg, and Dominik Röttsches.
This file is part of the FreeType project, and may only be used,
@@ -723,7 +718,7 @@
-------------------------------------------------------------------
-Copyright (C) 2003-2024 by
+Copyright (C) 2003-2023 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used,
@@ -734,7 +729,7 @@
-------------------------------------------------------------------
-Copyright (C) 2003-2024 by
+Copyright (C) 2003-2023 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used,
@@ -745,7 +740,7 @@
-------------------------------------------------------------------
-Copyright (C) 2003-2024 by
+Copyright (C) 2003-2023 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used,
@@ -756,7 +751,7 @@
-------------------------------------------------------------------
-Copyright (C) 2003-2024 by
+Copyright (C) 2003-2023 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used, modified,
@@ -767,7 +762,7 @@
-------------------------------------------------------------------
-Copyright (C) 2003-2024 by
+Copyright (C) 2003-2023 by
Masatake YAMATO, Redhat K.K.,
David Turner, Robert Wilhelm, and Werner Lemberg.
@@ -784,7 +779,7 @@
-------------------------------------------------------------------
-Copyright (C) 2004-2024 by
+Copyright (C) 2004-2023 by
Albert Chin-A-Young.
based on `src/lzw/rules.mk'
@@ -797,7 +792,7 @@
-------------------------------------------------------------------
-Copyright (C) 2004-2024 by
+Copyright (C) 2004-2023 by
Albert Chin-A-Young.
based on code in `src/gzip/ftgzip.c'
@@ -810,7 +805,7 @@
-------------------------------------------------------------------
-Copyright (C) 2004-2024 by
+Copyright (C) 2004-2023 by
David Turner, Robert Wilhelm, Werner Lemberg and George Williams.
This file is part of the FreeType project, and may only be used,
@@ -821,7 +816,7 @@
-------------------------------------------------------------------
-Copyright (C) 2004-2024 by
+Copyright (C) 2004-2023 by
David Turner, Robert Wilhelm, Werner Lemberg, and George Williams.
This file is part of the FreeType project, and may only be used,
@@ -832,7 +827,7 @@
-------------------------------------------------------------------
-Copyright (C) 2004-2024 by
+Copyright (C) 2004-2023 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used,
@@ -843,7 +838,7 @@
-------------------------------------------------------------------
-Copyright (C) 2004-2024 by
+Copyright (C) 2004-2023 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used,
@@ -854,7 +849,7 @@
-------------------------------------------------------------------
-Copyright (C) 2004-2024 by
+Copyright (C) 2004-2023 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used, modified,
@@ -865,7 +860,7 @@
-------------------------------------------------------------------
-Copyright (C) 2004-2024 by
+Copyright (C) 2004-2023 by
Masatake YAMATO and Redhat K.K.
FT_Raccess_Get_HeaderInfo() and raccess_guess_darwin_hfsplus() are
@@ -879,7 +874,7 @@
-------------------------------------------------------------------
-Copyright (C) 2004-2024 by
+Copyright (C) 2004-2023 by
Masatake YAMATO and Redhat K.K.
This file is part of the FreeType project, and may only be used,
@@ -890,7 +885,7 @@
-------------------------------------------------------------------
-Copyright (C) 2004-2024 by
+Copyright (C) 2004-2023 by
Masatake YAMATO and Redhat K.K.
This file may only be used,
@@ -901,7 +896,7 @@
-------------------------------------------------------------------
-Copyright (C) 2004-2024 by
+Copyright (C) 2004-2023 by
Masatake YAMATO, Red Hat K.K.,
David Turner, Robert Wilhelm, and Werner Lemberg.
@@ -913,7 +908,7 @@
-------------------------------------------------------------------
-Copyright (C) 2004-2024 by
+Copyright (C) 2004-2023 by
Masatake YAMATO, Redhat K.K,
David Turner, Robert Wilhelm, and Werner Lemberg.
@@ -925,7 +920,7 @@
-------------------------------------------------------------------
-Copyright (C) 2004-2024 by
+Copyright (C) 2004-2023 by
suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
David Turner, Robert Wilhelm, and Werner Lemberg.
@@ -937,7 +932,7 @@
-------------------------------------------------------------------
-Copyright (C) 2004-2024 by
+Copyright (C) 2004-2023 by
suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
David Turner, Robert Wilhelm, and Werner Lemberg.
@@ -949,7 +944,7 @@
-------------------------------------------------------------------
-Copyright (C) 2004-2024 by
+Copyright (C) 2004-2023 by
suzuki toshiya, Masatake YAMATO, Red hat K.K.,
David Turner, Robert Wilhelm, and Werner Lemberg.
@@ -989,7 +984,7 @@
-------------------------------------------------------------------
-Copyright (C) 2005-2024 by
+Copyright (C) 2005-2023 by
David Turner, Robert Wilhelm, and Werner Lemberg.
Copyright 2013 by Google, Inc.
@@ -1003,7 +998,7 @@
-------------------------------------------------------------------
-Copyright (C) 2005-2024 by
+Copyright (C) 2005-2023 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used,
@@ -1014,7 +1009,7 @@
-------------------------------------------------------------------
-Copyright (C) 2005-2024 by
+Copyright (C) 2005-2023 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used
@@ -1025,7 +1020,7 @@
-------------------------------------------------------------------
-Copyright (C) 2005-2024 by
+Copyright (C) 2005-2023 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used,
@@ -1036,7 +1031,7 @@
-------------------------------------------------------------------
-Copyright (C) 2005-2024 by
+Copyright (C) 2005-2023 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used, modified,
@@ -1047,7 +1042,7 @@
-------------------------------------------------------------------
-Copyright (C) 2005-2024 by
+Copyright (C) 2005-2023 by
David Turner.
This file is part of the FreeType project, and may only be used,
@@ -1058,7 +1053,7 @@
-------------------------------------------------------------------
-Copyright (C) 2005-2024 by
+Copyright (C) 2005-2023 by
Werner Lemberg and Detlef Würkner.
This file is part of the FreeType project, and may only be used,
@@ -1069,7 +1064,7 @@
-------------------------------------------------------------------
-Copyright (C) 2005-2024 by
+Copyright (C) 2005-2023 by
Werner Lemberg and Detlef Würkner.
This file is part of the FreeType project, and may only be used, modified,
@@ -1080,7 +1075,7 @@
-------------------------------------------------------------------
-Copyright (C) 2005-2024 by
+Copyright (C) 2005-2023 by
suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
David Turner, Robert Wilhelm, and Werner Lemberg.
@@ -1092,7 +1087,7 @@
-------------------------------------------------------------------
-Copyright (C) 2006-2024 by
+Copyright (C) 2006-2023 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used,
@@ -1103,7 +1098,7 @@
-------------------------------------------------------------------
-Copyright (C) 2006-2024 by
+Copyright (C) 2006-2023 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used,
@@ -1114,7 +1109,7 @@
-------------------------------------------------------------------
-Copyright (C) 2006-2024 by
+Copyright (C) 2006-2023 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used, modified,
@@ -1125,7 +1120,7 @@
-------------------------------------------------------------------
-Copyright (C) 2006-2024 by
+Copyright (C) 2006-2023 by
suzuki toshiya, David Turner, Robert Wilhelm, and Werner Lemberg.
@@ -1153,7 +1148,7 @@
-------------------------------------------------------------------
-Copyright (C) 2007-2024 by
+Copyright (C) 2007-2023 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used,
@@ -1164,7 +1159,7 @@
-------------------------------------------------------------------
-Copyright (C) 2007-2024 by
+Copyright (C) 2007-2023 by
David Turner, Robert Wilhelm, and Werner Lemberg.
Written by George Williams.
@@ -1177,7 +1172,7 @@
-------------------------------------------------------------------
-Copyright (C) 2007-2024 by
+Copyright (C) 2007-2023 by
David Turner.
This file is part of the FreeType project, and may only be used,
@@ -1188,7 +1183,7 @@
-------------------------------------------------------------------
-Copyright (C) 2007-2024 by
+Copyright (C) 2007-2023 by
Dereg Clegg and Michael Toftdal.
This file is part of the FreeType project, and may only be used,
@@ -1199,7 +1194,7 @@
-------------------------------------------------------------------
-Copyright (C) 2007-2024 by
+Copyright (C) 2007-2023 by
Derek Clegg and Michael Toftdal.
This file is part of the FreeType project, and may only be used,
@@ -1210,7 +1205,7 @@
-------------------------------------------------------------------
-Copyright (C) 2007-2024 by
+Copyright (C) 2007-2023 by
Rahul Bhalerao <rahul.bhalerao@redhat.com>, <b.rahul.pm@gmail.com>.
This file is part of the FreeType project, and may only be used,
@@ -1221,7 +1216,7 @@
-------------------------------------------------------------------
-Copyright (C) 2008-2024 by
+Copyright (C) 2008-2023 by
David Turner, Robert Wilhelm, Werner Lemberg, and suzuki toshiya.
This file is part of the FreeType project, and may only be used,
@@ -1232,7 +1227,7 @@
-------------------------------------------------------------------
-Copyright (C) 2008-2024 by
+Copyright (C) 2008-2023 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used,
@@ -1243,7 +1238,7 @@
-------------------------------------------------------------------
-Copyright (C) 2008-2024 by
+Copyright (C) 2008-2023 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used, modified,
@@ -1254,7 +1249,7 @@
-------------------------------------------------------------------
-Copyright (C) 2009-2024 by
+Copyright (C) 2009-2023 by
Oran Agra and Mickey Gabel.
This file is part of the FreeType project, and may only be used,
@@ -1265,7 +1260,7 @@
-------------------------------------------------------------------
-Copyright (C) 2010-2024 by
+Copyright (C) 2010-2023 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used, modified,
@@ -1276,7 +1271,7 @@
-------------------------------------------------------------------
-Copyright (C) 2010-2024 by
+Copyright (C) 2010-2023 by
Joel Klinghed.
This file is part of the FreeType project, and may only be used,
@@ -1287,7 +1282,7 @@
-------------------------------------------------------------------
-Copyright (C) 2010-2024 by
+Copyright (C) 2010-2023 by
Joel Klinghed.
based on `src/gzip/ftgzip.c'
@@ -1300,7 +1295,7 @@
-------------------------------------------------------------------
-Copyright (C) 2010-2024 by
+Copyright (C) 2010-2023 by
Joel Klinghed.
based on `src/lzw/rules.mk'
@@ -1313,7 +1308,7 @@
-------------------------------------------------------------------
-Copyright (C) 2012-2024 by
+Copyright (C) 2012-2023 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used,
@@ -1324,7 +1319,7 @@
-------------------------------------------------------------------
-Copyright (C) 2013-2024 by
+Copyright (C) 2013-2023 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used,
@@ -1335,7 +1330,7 @@
-------------------------------------------------------------------
-Copyright (C) 2013-2024 by
+Copyright (C) 2013-2023 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used, modified,
@@ -1346,7 +1341,7 @@
-------------------------------------------------------------------
-Copyright (C) 2013-2024 by
+Copyright (C) 2013-2023 by
David Turner, Robert Wilhelm, and Werner Lemberg.
Written originally by John Cary <cary@txcorp.com>
@@ -1359,7 +1354,7 @@
-------------------------------------------------------------------
-Copyright (C) 2013-2024 by
+Copyright (C) 2013-2023 by
Google, Inc.
Written by Stuart Gill and Behdad Esfahbod.
@@ -1371,7 +1366,7 @@
-------------------------------------------------------------------
-Copyright (C) 2014-2024 by
+Copyright (C) 2014-2023 by
David Turner, Robert Wilhelm, and Werner Lemberg.
Written by David Wimsey <david@wimsey.us>
@@ -1384,7 +1379,7 @@
-------------------------------------------------------------------
-Copyright (C) 2015-2024 by
+Copyright (C) 2015-2023 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used, modified,
@@ -1395,7 +1390,7 @@
-------------------------------------------------------------------
-Copyright (C) 2015-2024 by
+Copyright (C) 2015-2023 by
Werner Lemberg.
This file is part of the FreeType project, and may only be used, modified,
@@ -1406,7 +1401,7 @@
-------------------------------------------------------------------
-Copyright (C) 2016-2024 by
+Copyright (C) 2016-2023 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used,
@@ -1417,7 +1412,7 @@
-------------------------------------------------------------------
-Copyright (C) 2016-2024 by
+Copyright (C) 2016-2023 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used, modified,
@@ -1428,7 +1423,7 @@
-------------------------------------------------------------------
-Copyright (C) 2017-2024 by
+Copyright (C) 2017-2023 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used,
@@ -1439,7 +1434,7 @@
-------------------------------------------------------------------
-Copyright (C) 2017-2024 by
+Copyright (C) 2017-2023 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used, modified,
@@ -1450,7 +1445,7 @@
-------------------------------------------------------------------
-Copyright (C) 2018-2024 by
+Copyright (C) 2018-2023 by
Armin Hasitzka, David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used,
@@ -1461,7 +1456,7 @@
-------------------------------------------------------------------
-Copyright (C) 2018-2024 by
+Copyright (C) 2018-2023 by
David Turner, Robert Wilhelm, Dominik Röttsches, and Werner Lemberg.
Originally written by Shao Yu Zhang <shaozhang@fb.com>.
@@ -1474,7 +1469,7 @@
-------------------------------------------------------------------
-Copyright (C) 2018-2024 by
+Copyright (C) 2018-2023 by
David Turner, Robert Wilhelm, and Werner Lemberg.
Originally written by Shao Yu Zhang <shaozhang@fb.com>.
@@ -1487,7 +1482,7 @@
-------------------------------------------------------------------
-Copyright (C) 2018-2024 by
+Copyright (C) 2018-2023 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used,
@@ -1498,7 +1493,7 @@
-------------------------------------------------------------------
-Copyright (C) 2018-2024 by
+Copyright (C) 2018-2023 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used, modified,
@@ -1509,7 +1504,7 @@
-------------------------------------------------------------------
-Copyright (C) 2018-2024 by
+Copyright (C) 2018-2023 by
Nikhil Ramakrishnan, David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used,
@@ -1520,7 +1515,7 @@
-------------------------------------------------------------------
-Copyright (C) 2019-2024 by
+Copyright (C) 2019-2023 by
David Turner, Robert Wilhelm, and Werner Lemberg.
Written by Werner Lemberg <wl@gnu.org>
@@ -1533,7 +1528,7 @@
-------------------------------------------------------------------
-Copyright (C) 2019-2024 by
+Copyright (C) 2019-2023 by
Nikhil Ramakrishnan, David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used,
@@ -1544,7 +1539,7 @@
-------------------------------------------------------------------
-Copyright (C) 2020-2024 by
+Copyright (C) 2020-2023 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used,
@@ -1555,7 +1550,7 @@
-------------------------------------------------------------------
-Copyright (C) 2020-2024 by
+Copyright (C) 2020-2023 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used, modified,
@@ -1566,7 +1561,7 @@
-------------------------------------------------------------------
-Copyright (C) 2020-2024 by
+Copyright (C) 2020-2023 by
David Turner, Robert Wilhelm, and Werner Lemberg.
Written by Anuj Verma.
@@ -1579,7 +1574,7 @@
-------------------------------------------------------------------
-Copyright (C) 2021-2024 by
+Copyright (C) 2021-2023 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used,
@@ -1590,7 +1585,7 @@
-------------------------------------------------------------------
-Copyright (C) 2022-2024 by
+Copyright (C) 2022-2023 by
David Turner, Robert Wilhelm, Werner Lemberg, George Williams, and
Dominik Röttsches.
@@ -1602,7 +1597,7 @@
-------------------------------------------------------------------
-Copyright (C) 2022-2024 by
+Copyright (C) 2022-2023 by
David Turner, Robert Wilhelm, Werner Lemberg, and Moazin Khatti.
This file is part of the FreeType project, and may only be used,
@@ -1613,7 +1608,7 @@
-------------------------------------------------------------------
-Copyright (C) 2022-2024 by
+Copyright (C) 2022-2023 by
David Turner, Robert Wilhelm, Werner Lemberg, and Moazin Khatti.
This file is part of the FreeType project, and may only be used, modified,
@@ -1624,17 +1619,6 @@
-------------------------------------------------------------------
-Copyright (C) 2024 by
-David Saltzman
-
-This file is part of the FreeType project, and may only be used,
-modified, and distributed under the terms of the FreeType project
-license, LICENSE.TXT. By continuing to use, modify, or distribute
-this file you indicate that you have read the license and
-understand and accept it fully.
-
--------------------------------------------------------------------
-
Copyright (c) 2001 Alexander Peslyak and it is hereby released to the
general public under the following terms:
diff --git a/METADATA b/METADATA
index fd65d0f..e715d6c 100644
--- a/METADATA
+++ b/METADATA
@@ -9,14 +9,14 @@
type: GIT
value: "git://git.sv.nongnu.org/freetype/freetype2.git"
}
- version: "2.13.3"
+ version: "2.13.2"
license_type: RESTRICTED
last_upgrade_date {
- year: 2024
- month: 11
- day: 6
+ year: 2023
+ month: 10
+ day: 17
}
security {
- tag: "NVD-CPE2.3:cpe:/a:freetype:freetype:2.13.3"
+ tag: "NVD-CPE2.3:cpe:/a:freetype:freetype:2.13.2"
}
}
diff --git a/MSBuild.rsp b/MSBuild.rsp
deleted file mode 100644
index 3eba507..0000000
--- a/MSBuild.rsp
+++ /dev/null
@@ -1,2 +0,0 @@
-#/p:WindowsTargetPlatformVersion=10.0.16299.0
-/p:Configuration="Release"
diff --git a/Makefile b/Makefile
index 030ca03..14fba30 100644
--- a/Makefile
+++ b/Makefile
@@ -3,7 +3,7 @@
#
-# Copyright (C) 1996-2024 by
+# Copyright (C) 1996-2023 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/README b/README
index 0f5d3e0..cd4c1d7 100644
--- a/README
+++ b/README
@@ -1,4 +1,4 @@
-FreeType 2.13.3
+FreeType 2.13.2
===============
Homepage: https://www.freetype.org
@@ -32,9 +32,9 @@
and download one of the following files.
- freetype-doc-2.13.3.tar.xz
- freetype-doc-2.13.3.tar.gz
- ftdoc2133.zip
+ freetype-doc-2.13.2.tar.xz
+ freetype-doc-2.13.2.tar.gz
+ ftdoc2132.zip
To view the documentation online, go to
@@ -94,7 +94,7 @@
----------------------------------------------------------------------
-Copyright (C) 2006-2024 by
+Copyright (C) 2006-2023 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used,
diff --git a/README.git b/README.git
index c818bbb..117d74f 100644
--- a/README.git
+++ b/README.git
@@ -89,7 +89,7 @@
----------------------------------------------------------------------
-Copyright (C) 2005-2024 by
+Copyright (C) 2005-2023 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used,
diff --git a/autogen.sh b/autogen.sh
index 7285a01..ff5e46f 100755
--- a/autogen.sh
+++ b/autogen.sh
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright (C) 2005-2024 by
+# Copyright (C) 2005-2023 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
@@ -190,7 +190,8 @@
:
else
echo "Checking out submodule in \`subprojects/dlg':"
- git submodule update --init
+ git submodule init
+ git submodule update
fi
copy_submodule_files
diff --git a/builds/amiga/README b/builds/amiga/README
index aec3bc4..5b2abef 100644
--- a/builds/amiga/README
+++ b/builds/amiga/README
@@ -1,7 +1,7 @@
README for the builds/amiga subdirectory.
-Copyright (C) 2005-2024 by
+Copyright (C) 2005-2023 by
Werner Lemberg and Detlef Würkner.
This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/amiga/include/config/ftconfig.h b/builds/amiga/include/config/ftconfig.h
index f26b8e0..de074bf 100644
--- a/builds/amiga/include/config/ftconfig.h
+++ b/builds/amiga/include/config/ftconfig.h
@@ -4,7 +4,7 @@
/* */
/* Amiga-specific configuration file (specification only). */
/* */
-/* Copyright (C) 2005-2024 by */
+/* Copyright (C) 2005-2023 by */
/* Werner Lemberg and Detlef Würkner. */
/* */
/* This file is part of the FreeType project, and may only be used, */
diff --git a/builds/amiga/include/config/ftmodule.h b/builds/amiga/include/config/ftmodule.h
index a7be0a4..bf33367 100644
--- a/builds/amiga/include/config/ftmodule.h
+++ b/builds/amiga/include/config/ftmodule.h
@@ -4,7 +4,7 @@
/* */
/* Amiga-specific FreeType module selection. */
/* */
-/* Copyright (C) 2005-2024 by */
+/* Copyright (C) 2005-2023 by */
/* Werner Lemberg and Detlef Würkner. */
/* */
/* This file is part of the FreeType project, and may only be used, */
diff --git a/builds/amiga/makefile b/builds/amiga/makefile
index 61b4a98..4a33fdd 100644
--- a/builds/amiga/makefile
+++ b/builds/amiga/makefile
@@ -5,7 +5,7 @@
#
-# Copyright (C) 2005-2024 by
+# Copyright (C) 2005-2023 by
# Werner Lemberg and Detlef Würkner.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/amiga/makefile.os4 b/builds/amiga/makefile.os4
index fcf7126..dfc3e9f 100644
--- a/builds/amiga/makefile.os4
+++ b/builds/amiga/makefile.os4
@@ -4,7 +4,7 @@
#
-# Copyright (C) 2005-2024 by
+# Copyright (C) 2005-2023 by
# Werner Lemberg and Detlef Würkner.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/amiga/smakefile b/builds/amiga/smakefile
index 9efb362..ca3da66 100644
--- a/builds/amiga/smakefile
+++ b/builds/amiga/smakefile
@@ -3,7 +3,7 @@
#
-# Copyright (C) 2005-2024 by
+# Copyright (C) 2005-2023 by
# Werner Lemberg and Detlef Würkner.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/amiga/src/base/ftdebug.c b/builds/amiga/src/base/ftdebug.c
index 4d8addb..a209297 100644
--- a/builds/amiga/src/base/ftdebug.c
+++ b/builds/amiga/src/base/ftdebug.c
@@ -4,7 +4,7 @@
*
* Debugging and logging component for amiga (body).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, Werner Lemberg, and Detlef Wuerkner.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/builds/amiga/src/base/ftsystem.c b/builds/amiga/src/base/ftsystem.c
index 7f1a0ea..d85845c 100644
--- a/builds/amiga/src/base/ftsystem.c
+++ b/builds/amiga/src/base/ftsystem.c
@@ -4,7 +4,7 @@
/* */
/* Amiga-specific FreeType low-level system interface (body). */
/* */
-/* Copyright (C) 1996-2024 by */
+/* Copyright (C) 1996-2023 by */
/* David Turner, Robert Wilhelm, Werner Lemberg and Detlef Würkner. */
/* */
/* This file is part of the FreeType project, and may only be used, */
diff --git a/builds/ansi/ansi-def.mk b/builds/ansi/ansi-def.mk
index 687af10..8217893 100644
--- a/builds/ansi/ansi-def.mk
+++ b/builds/ansi/ansi-def.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 1996-2024 by
+# Copyright (C) 1996-2023 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/ansi/ansi.mk b/builds/ansi/ansi.mk
index ec4076e..ad40939 100644
--- a/builds/ansi/ansi.mk
+++ b/builds/ansi/ansi.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 1996-2024 by
+# Copyright (C) 1996-2023 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/beos/beos-def.mk b/builds/beos/beos-def.mk
index 30e79db..1cca80c 100644
--- a/builds/beos/beos-def.mk
+++ b/builds/beos/beos-def.mk
@@ -5,7 +5,7 @@
#
-# Copyright (C) 1996-2024 by
+# Copyright (C) 1996-2023 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/beos/beos.mk b/builds/beos/beos.mk
index eb9fde4..69ca1f1 100644
--- a/builds/beos/beos.mk
+++ b/builds/beos/beos.mk
@@ -2,7 +2,7 @@
# FreeType 2 configuration rules for a BeOS system
#
-# Copyright (C) 1996-2024 by
+# Copyright (C) 1996-2023 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/beos/detect.mk b/builds/beos/detect.mk
index 874e8a8..dd1b5a6 100644
--- a/builds/beos/detect.mk
+++ b/builds/beos/detect.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 1996-2024 by
+# Copyright (C) 1996-2023 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/cmake/FindBrotliDec.cmake b/builds/cmake/FindBrotliDec.cmake
index 385f0ab..81036cb 100644
--- a/builds/cmake/FindBrotliDec.cmake
+++ b/builds/cmake/FindBrotliDec.cmake
@@ -1,6 +1,6 @@
# FindBrotliDec.cmake
#
-# Copyright (C) 2019-2024 by
+# Copyright (C) 2019-2023 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# Written by Werner Lemberg <wl@gnu.org>
diff --git a/builds/cmake/iOS.cmake b/builds/cmake/iOS.cmake
index 92097ef..7aba7c5 100644
--- a/builds/cmake/iOS.cmake
+++ b/builds/cmake/iOS.cmake
@@ -1,6 +1,6 @@
# iOS.cmake
#
-# Copyright (C) 2014-2024 by
+# Copyright (C) 2014-2023 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# Written by David Wimsey <david@wimsey.us>
diff --git a/builds/cmake/testbuild.sh b/builds/cmake/testbuild.sh
index eba97a1..007170b 100755
--- a/builds/cmake/testbuild.sh
+++ b/builds/cmake/testbuild.sh
@@ -1,6 +1,6 @@
#!/bin/sh -e
-# Copyright (C) 2015-2024 by
+# Copyright (C) 2015-2023 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/compiler/ansi-cc.mk b/builds/compiler/ansi-cc.mk
index ccb79c5..f8386f6 100644
--- a/builds/compiler/ansi-cc.mk
+++ b/builds/compiler/ansi-cc.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 1996-2024 by
+# Copyright (C) 1996-2023 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/compiler/bcc-dev.mk b/builds/compiler/bcc-dev.mk
index bade0e6..d01ed7c 100644
--- a/builds/compiler/bcc-dev.mk
+++ b/builds/compiler/bcc-dev.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 1996-2024 by
+# Copyright (C) 1996-2023 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/compiler/bcc.mk b/builds/compiler/bcc.mk
index 1203804..a484bba 100644
--- a/builds/compiler/bcc.mk
+++ b/builds/compiler/bcc.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 1996-2024 by
+# Copyright (C) 1996-2023 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/compiler/emx.mk b/builds/compiler/emx.mk
index 3d5573b..34d06b2 100644
--- a/builds/compiler/emx.mk
+++ b/builds/compiler/emx.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 2003-2024 by
+# Copyright (C) 2003-2023 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/compiler/gcc-dev.mk b/builds/compiler/gcc-dev.mk
index e7121be..a6ded52 100644
--- a/builds/compiler/gcc-dev.mk
+++ b/builds/compiler/gcc-dev.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 1996-2024 by
+# Copyright (C) 1996-2023 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/compiler/gcc.mk b/builds/compiler/gcc.mk
index 6916cac..20ca969 100644
--- a/builds/compiler/gcc.mk
+++ b/builds/compiler/gcc.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 1996-2024 by
+# Copyright (C) 1996-2023 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/compiler/intelc.mk b/builds/compiler/intelc.mk
index 64a6a68..1f72493 100644
--- a/builds/compiler/intelc.mk
+++ b/builds/compiler/intelc.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 1996-2024 by
+# Copyright (C) 1996-2023 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/compiler/unix-lcc.mk b/builds/compiler/unix-lcc.mk
index 66248d6..af11d17 100644
--- a/builds/compiler/unix-lcc.mk
+++ b/builds/compiler/unix-lcc.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 1996-2024 by
+# Copyright (C) 1996-2023 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/compiler/visualage.mk b/builds/compiler/visualage.mk
index e0fca45..75e9023 100644
--- a/builds/compiler/visualage.mk
+++ b/builds/compiler/visualage.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 1996-2024 by
+# Copyright (C) 1996-2023 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/compiler/visualc.mk b/builds/compiler/visualc.mk
index 9eda2a0..30b03fc 100644
--- a/builds/compiler/visualc.mk
+++ b/builds/compiler/visualc.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 1996-2024 by
+# Copyright (C) 1996-2023 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/compiler/watcom.mk b/builds/compiler/watcom.mk
index 16fd877..61f8cd7 100644
--- a/builds/compiler/watcom.mk
+++ b/builds/compiler/watcom.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 1996-2024 by
+# Copyright (C) 1996-2023 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/compiler/win-lcc.mk b/builds/compiler/win-lcc.mk
index 1511da5..92f653e 100644
--- a/builds/compiler/win-lcc.mk
+++ b/builds/compiler/win-lcc.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 1996-2024 by
+# Copyright (C) 1996-2023 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/detect.mk b/builds/detect.mk
index de42b8e..d5cddb0 100644
--- a/builds/detect.mk
+++ b/builds/detect.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 1996-2024 by
+# Copyright (C) 1996-2023 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/dos/detect.mk b/builds/dos/detect.mk
index 93cc719..8ed148b 100644
--- a/builds/dos/detect.mk
+++ b/builds/dos/detect.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 1996-2024 by
+# Copyright (C) 1996-2023 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/dos/dos-def.mk b/builds/dos/dos-def.mk
index 1b04bf9..37cb2c1 100644
--- a/builds/dos/dos-def.mk
+++ b/builds/dos/dos-def.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 1996-2024 by
+# Copyright (C) 1996-2023 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/dos/dos-emx.mk b/builds/dos/dos-emx.mk
index c58931a..23181d7 100644
--- a/builds/dos/dos-emx.mk
+++ b/builds/dos/dos-emx.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 2003-2024 by
+# Copyright (C) 2003-2023 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/dos/dos-gcc.mk b/builds/dos/dos-gcc.mk
index a282275..cd695db 100644
--- a/builds/dos/dos-gcc.mk
+++ b/builds/dos/dos-gcc.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 1996-2024 by
+# Copyright (C) 1996-2023 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/dos/dos-wat.mk b/builds/dos/dos-wat.mk
index 6f935de..a6b65cb 100644
--- a/builds/dos/dos-wat.mk
+++ b/builds/dos/dos-wat.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 2003-2024 by
+# Copyright (C) 2003-2023 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/exports.mk b/builds/exports.mk
index 31da7c6..b10924a 100644
--- a/builds/exports.mk
+++ b/builds/exports.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 2005-2024 by
+# Copyright (C) 2005-2023 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/freetype.mk b/builds/freetype.mk
index feed7bd..b3fac80 100644
--- a/builds/freetype.mk
+++ b/builds/freetype.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 1996-2024 by
+# Copyright (C) 1996-2023 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/link_dos.mk b/builds/link_dos.mk
index 42df6df..b3dc451 100644
--- a/builds/link_dos.mk
+++ b/builds/link_dos.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 1996-2024 by
+# Copyright (C) 1996-2023 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/link_std.mk b/builds/link_std.mk
index 48fe097..aca8ec4 100644
--- a/builds/link_std.mk
+++ b/builds/link_std.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 1996-2024 by
+# Copyright (C) 1996-2023 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/mac/ftmac.c b/builds/mac/ftmac.c
index 4e4ace3..8fe5565 100644
--- a/builds/mac/ftmac.c
+++ b/builds/mac/ftmac.c
@@ -5,7 +5,7 @@
/* Mac FOND support. Written by just@letterror.com. */
/* Heavily Fixed by mpsuzuki, George Williams and Sean McBride */
/* */
-/* Copyright (C) 1996-2024 by */
+/* Copyright (C) 1996-2023 by */
/* Just van Rossum, David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
diff --git a/builds/meson/extract_freetype_version.py b/builds/meson/extract_freetype_version.py
index c46ba36..c4c60e7 100644
--- a/builds/meson/extract_freetype_version.py
+++ b/builds/meson/extract_freetype_version.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python3
#
-# Copyright (C) 2020-2024 by
+# Copyright (C) 2020-2023 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/meson/extract_libtool_version.py b/builds/meson/extract_libtool_version.py
index 8a25fcd..6fac74c 100644
--- a/builds/meson/extract_libtool_version.py
+++ b/builds/meson/extract_libtool_version.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python3
#
-# Copyright (C) 2020-2024 by
+# Copyright (C) 2020-2023 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/meson/generate_reference_docs.py b/builds/meson/generate_reference_docs.py
index 5534057..4208bb6 100644
--- a/builds/meson/generate_reference_docs.py
+++ b/builds/meson/generate_reference_docs.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python3
#
-# Copyright (C) 2020-2024 by
+# Copyright (C) 2020-2023 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/meson/parse_modules_cfg.py b/builds/meson/parse_modules_cfg.py
index f56a5db..d48129f 100644
--- a/builds/meson/parse_modules_cfg.py
+++ b/builds/meson/parse_modules_cfg.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python3
#
-# Copyright (C) 2020-2024 by
+# Copyright (C) 2020-2023 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/meson/process_ftoption_h.py b/builds/meson/process_ftoption_h.py
index cfb9d09..98daa8c 100644
--- a/builds/meson/process_ftoption_h.py
+++ b/builds/meson/process_ftoption_h.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python3
#
-# Copyright (C) 2020-2024 by
+# Copyright (C) 2020-2023 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/modules.mk b/builds/modules.mk
index f98e931..a75baaf 100644
--- a/builds/modules.mk
+++ b/builds/modules.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 1996-2024 by
+# Copyright (C) 1996-2023 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/os2/detect.mk b/builds/os2/detect.mk
index d4667b2..afdba74 100644
--- a/builds/os2/detect.mk
+++ b/builds/os2/detect.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 1996-2024 by
+# Copyright (C) 1996-2023 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/os2/os2-def.mk b/builds/os2/os2-def.mk
index 160ca1b..917ef2d 100644
--- a/builds/os2/os2-def.mk
+++ b/builds/os2/os2-def.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 1996-2024 by
+# Copyright (C) 1996-2023 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/os2/os2-dev.mk b/builds/os2/os2-dev.mk
index 9f401de..3584fb6 100644
--- a/builds/os2/os2-dev.mk
+++ b/builds/os2/os2-dev.mk
@@ -5,7 +5,7 @@
#
-# Copyright (C) 1996-2024 by
+# Copyright (C) 1996-2023 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/os2/os2-gcc.mk b/builds/os2/os2-gcc.mk
index fd6f2ec..e17c5be 100644
--- a/builds/os2/os2-gcc.mk
+++ b/builds/os2/os2-gcc.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 1996-2024 by
+# Copyright (C) 1996-2023 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/symbian/bld.inf b/builds/symbian/bld.inf
index f2e67ff..6168922 100644
--- a/builds/symbian/bld.inf
+++ b/builds/symbian/bld.inf
@@ -2,7 +2,7 @@
// FreeType 2 project for the symbian platform
//
-// Copyright (C) 2008-2024 by
+// Copyright (C) 2008-2023 by
// David Turner, Robert Wilhelm, and Werner Lemberg.
//
// This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/symbian/freetype.mmp b/builds/symbian/freetype.mmp
index ee948f0..297678e 100644
--- a/builds/symbian/freetype.mmp
+++ b/builds/symbian/freetype.mmp
@@ -2,7 +2,7 @@
// FreeType 2 makefile for the symbian platform
//
-// Copyright (C) 2008-2024 by
+// Copyright (C) 2008-2023 by
// David Turner, Robert Wilhelm, and Werner Lemberg.
//
// This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/toplevel.mk b/builds/toplevel.mk
index 4b7b148..8d5063e 100644
--- a/builds/toplevel.mk
+++ b/builds/toplevel.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 1996-2024 by
+# Copyright (C) 1996-2023 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
@@ -170,7 +170,8 @@
check_out_submodule:
$(info Checking out submodule in `subprojects/dlg')
- git -C $(TOP_DIR) submodule update --init
+ git --git-dir=$(TOP_DIR) submodule init
+ git --git-dir=$(TOP_DIR) submodule update
copy_submodule:
$(info Copying files from `subprojects/dlg' to `src/dlg' and `include/dlg')
diff --git a/builds/unix/configure.raw b/builds/unix/configure.raw
index 7a795cb..dc7426e 100644
--- a/builds/unix/configure.raw
+++ b/builds/unix/configure.raw
@@ -2,7 +2,7 @@
#
# Process this file with autoconf to produce a configure script.
#
-# Copyright (C) 2001-2024 by
+# Copyright (C) 2001-2023 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
@@ -17,7 +17,7 @@
# Don't forget to update `docs/VERSIONS.TXT'!
-version_info='26:2:20'
+version_info='26:1:20'
AC_SUBST([version_info])
ft_version=`echo $version_info | tr : .`
AC_SUBST([ft_version])
diff --git a/builds/unix/detect.mk b/builds/unix/detect.mk
index 28e6b74..6b87013 100644
--- a/builds/unix/detect.mk
+++ b/builds/unix/detect.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 1996-2024 by
+# Copyright (C) 1996-2023 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/unix/freetype-config.in b/builds/unix/freetype-config.in
index f9fd1cb..5856112 100644
--- a/builds/unix/freetype-config.in
+++ b/builds/unix/freetype-config.in
@@ -1,6 +1,6 @@
#! /bin/sh
#
-# Copyright (C) 2000-2024 by
+# Copyright (C) 2000-2023 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/unix/freetype2.m4 b/builds/unix/freetype2.m4
index 7fbda6b..09ead43 100644
--- a/builds/unix/freetype2.m4
+++ b/builds/unix/freetype2.m4
@@ -1,7 +1,7 @@
# Configure paths for FreeType2
# Marcelo Magallon 2001-10-26, based on `gtk.m4` by Owen Taylor
#
-# Copyright (C) 2001-2024 by
+# Copyright (C) 2001-2023 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/unix/ft-munmap.m4 b/builds/unix/ft-munmap.m4
index d398736..a0fcf35 100644
--- a/builds/unix/ft-munmap.m4
+++ b/builds/unix/ft-munmap.m4
@@ -1,6 +1,6 @@
## FreeType specific autoconf tests
#
-# Copyright (C) 2002-2024 by
+# Copyright (C) 2002-2023 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/unix/ftconfig.h.in b/builds/unix/ftconfig.h.in
index da0d22c..3dac561 100644
--- a/builds/unix/ftconfig.h.in
+++ b/builds/unix/ftconfig.h.in
@@ -4,7 +4,7 @@
*
* UNIX-specific configuration file (specification only).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/builds/unix/ftsystem.c b/builds/unix/ftsystem.c
index 42895e8..5927215 100644
--- a/builds/unix/ftsystem.c
+++ b/builds/unix/ftsystem.c
@@ -4,7 +4,7 @@
*
* Unix-specific FreeType low-level system interface (body).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/builds/unix/install.mk b/builds/unix/install.mk
index e1d374a..2f1729b 100644
--- a/builds/unix/install.mk
+++ b/builds/unix/install.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 1996-2024 by
+# Copyright (C) 1996-2023 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/unix/unix-cc.in b/builds/unix/unix-cc.in
index aafad2f..802016d 100644
--- a/builds/unix/unix-cc.in
+++ b/builds/unix/unix-cc.in
@@ -2,7 +2,7 @@
# FreeType 2 template for Unix-specific compiler definitions
#
-# Copyright (C) 1996-2024 by
+# Copyright (C) 1996-2023 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/unix/unix-def.in b/builds/unix/unix-def.in
index 451880e..d50994f 100644
--- a/builds/unix/unix-def.in
+++ b/builds/unix/unix-def.in
@@ -3,7 +3,7 @@
#
-# Copyright (C) 1996-2024 by
+# Copyright (C) 1996-2023 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/unix/unix-dev.mk b/builds/unix/unix-dev.mk
index 6603a51..9dd8ad6 100644
--- a/builds/unix/unix-dev.mk
+++ b/builds/unix/unix-dev.mk
@@ -6,7 +6,7 @@
#
-# Copyright (C) 1996-2024 by
+# Copyright (C) 1996-2023 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/unix/unix-lcc.mk b/builds/unix/unix-lcc.mk
index 7b3dd9d..ded24f4 100644
--- a/builds/unix/unix-lcc.mk
+++ b/builds/unix/unix-lcc.mk
@@ -6,7 +6,7 @@
#
-# Copyright (C) 1996-2024 by
+# Copyright (C) 1996-2023 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/unix/unix.mk b/builds/unix/unix.mk
index a8b62db..3505175 100644
--- a/builds/unix/unix.mk
+++ b/builds/unix/unix.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 1996-2024 by
+# Copyright (C) 1996-2023 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/unix/unixddef.mk b/builds/unix/unixddef.mk
index 17f6b0e..7197347 100644
--- a/builds/unix/unixddef.mk
+++ b/builds/unix/unixddef.mk
@@ -4,7 +4,7 @@
#
-# Copyright (C) 1996-2024 by
+# Copyright (C) 1996-2023 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/vms/ftconfig.h b/builds/vms/ftconfig.h
index d965434..31dfcec 100644
--- a/builds/vms/ftconfig.h
+++ b/builds/vms/ftconfig.h
@@ -4,7 +4,7 @@
*
* VMS-specific configuration file (specification only).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/builds/vms/ftsystem.c b/builds/vms/ftsystem.c
index a61e8ea..0afd07d 100644
--- a/builds/vms/ftsystem.c
+++ b/builds/vms/ftsystem.c
@@ -4,7 +4,7 @@
/* */
/* VMS-specific FreeType low-level system interface (body). */
/* */
-/* Copyright (C) 1996-2024 by */
+/* Copyright (C) 1996-2023 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
diff --git a/builds/wince/ftdebug.c b/builds/wince/ftdebug.c
index 2e9a1dc..6453f8d 100644
--- a/builds/wince/ftdebug.c
+++ b/builds/wince/ftdebug.c
@@ -4,7 +4,7 @@
*
* Debugging and logging component for WinCE (body).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/builds/wince/vc2005-ce/index.html b/builds/wince/vc2005-ce/index.html
index 2505d77..8ea6cfd 100644
--- a/builds/wince/vc2005-ce/index.html
+++ b/builds/wince/vc2005-ce/index.html
@@ -21,7 +21,7 @@
<li>PPC/SP WM6 (Windows Mobile 6)</li>
</ul>
-It compiles the following libraries from the FreeType 2.13.3 sources:</p>
+It compiles the following libraries from the FreeType 2.13.2 sources:</p>
<ul>
<pre>
diff --git a/builds/wince/vc2008-ce/index.html b/builds/wince/vc2008-ce/index.html
index 80a30eb..a6e74f8 100644
--- a/builds/wince/vc2008-ce/index.html
+++ b/builds/wince/vc2008-ce/index.html
@@ -21,7 +21,7 @@
<li>PPC/SP WM6 (Windows Mobile 6)</li>
</ul>
-It compiles the following libraries from the FreeType 2.13.3 sources:</p>
+It compiles the following libraries from the FreeType 2.13.2 sources:</p>
<ul>
<pre>
diff --git a/builds/windows/detect.mk b/builds/windows/detect.mk
index e452eaa..d7908be 100644
--- a/builds/windows/detect.mk
+++ b/builds/windows/detect.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 1996-2024 by
+# Copyright (C) 1996-2023 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/windows/ftdebug.c b/builds/windows/ftdebug.c
index 2c69967..360f8c7 100644
--- a/builds/windows/ftdebug.c
+++ b/builds/windows/ftdebug.c
@@ -4,7 +4,7 @@
*
* Debugging and logging component for Win32 (body).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/builds/windows/ftsystem.c b/builds/windows/ftsystem.c
index 477cad7..418d799 100644
--- a/builds/windows/ftsystem.c
+++ b/builds/windows/ftsystem.c
@@ -4,7 +4,7 @@
*
* Windows-specific FreeType low-level system interface (body).
*
- * Copyright (C) 2021-2024 by
+ * Copyright (C) 2021-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -196,8 +196,8 @@
}
- /* support for Universal Windows Platform UWP, formerly WinRT */
-#ifdef _WINRT_DLL
+ /* non-desktop Universal Windows Platform */
+#if defined( WINAPI_FAMILY ) && WINAPI_FAMILY != WINAPI_FAMILY_DESKTOP_APP
#define PACK_DWORD64( hi, lo ) ( ( (DWORD64)(hi) << 32 ) | (DWORD)(lo) )
@@ -248,11 +248,10 @@
dwCreationDisposition, &createExParams );
}
-#endif /* _WINRT_DLL */
+#endif
- /* support for Windows CE */
-#ifdef _WIN32_WCE
+#if defined( _WIN32_WCE )
/* malloc.h provides implementation of alloca()/_alloca() */
#include <malloc.h>
@@ -292,9 +291,9 @@
dwFlagsAndAttributes, hTemplateFile );
}
-#endif /* _WIN32_WCE */
+#endif
- /* support for really old Windows */
+
#if defined( _WIN32_WCE ) || defined ( _WIN32_WINDOWS ) || \
!defined( _WIN32_WINNT ) || _WIN32_WINNT <= 0x0400
@@ -312,7 +311,7 @@
return TRUE;
}
-#endif /* _WIN32_WCE || _WIN32_WINDOWS || _WIN32_WINNT <= 0x0400 */
+#endif
/* documentation is in ftobjs.h */
diff --git a/MSBuild.sln b/builds/windows/vc2010/freetype.sln
similarity index 84%
rename from MSBuild.sln
rename to builds/windows/vc2010/freetype.sln
index 0019611..d88d70a 100644
--- a/MSBuild.sln
+++ b/builds/windows/vc2010/freetype.sln
@@ -1,20 +1,6 @@
Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio Express 2012 for Windows Desktop
-#
-# You can build FreeType with MSBuild as follows
-#
-# MSBuild.exe -t:Rebuild
-# -p:Configuration=Debug
-# -p:Platform=x64
-# -p:UserDefines=FT_DEBUG_LOGGING
-# MSBuild.sln
-#
-# or with different appropriate switches. The library file
-# freetype.dll and/or freetype.lib should appear in the objs/
-# folder. A copy should be sent to ../freetype-demos/bin/
-# to be used with the demo programs.
-#
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "freetype", "builds\windows\vc2010\freetype.vcxproj", "{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "freetype", "freetype.vcxproj", "{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
diff --git a/builds/windows/vc2010/index.html b/builds/windows/vc2010/index.html
index 03149d2..ee9b59a 100644
--- a/builds/windows/vc2010/index.html
+++ b/builds/windows/vc2010/index.html
@@ -12,7 +12,7 @@
<p>This directory contains solution and project files for
Visual C++ 2010 or newer, named <tt>freetype.sln</tt>,
and <tt>freetype.vcxproj</tt>. It compiles the following libraries
-from the FreeType 2.13.3 sources:</p>
+from the FreeType 2.13.2 sources:</p>
<ul>
<li>freetype.dll using 'Release' or 'Debug' configurations</li>
diff --git a/builds/windows/visualc/index.html b/builds/windows/visualc/index.html
index b3102e5..816605e 100644
--- a/builds/windows/visualc/index.html
+++ b/builds/windows/visualc/index.html
@@ -12,7 +12,7 @@
<p>This directory contains project files <tt>freetype.dsp</tt> for
Visual C++ 6.0, and <tt>freetype.vcproj</tt> for Visual C++ 2002
through 2008, which you might need to upgrade automatically.
-It compiles the following libraries from the FreeType 2.13.3 sources:</p>
+It compiles the following libraries from the FreeType 2.13.2 sources:</p>
<ul>
<li>freetype.dll using 'Release' or 'Debug' configurations</li>
diff --git a/builds/windows/visualce/index.html b/builds/windows/visualce/index.html
index db9246c..d9c8fe4 100644
--- a/builds/windows/visualce/index.html
+++ b/builds/windows/visualce/index.html
@@ -21,7 +21,7 @@
<li>PPC/SP WM6 (Windows Mobile 6)</li>
</ul>
-It compiles the following libraries from the FreeType 2.13.3 sources:</p>
+It compiles the following libraries from the FreeType 2.13.2 sources:</p>
<ul>
<pre>
diff --git a/builds/windows/w32-bcc.mk b/builds/windows/w32-bcc.mk
index a68656f..e7cf668 100644
--- a/builds/windows/w32-bcc.mk
+++ b/builds/windows/w32-bcc.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 1996-2024 by
+# Copyright (C) 1996-2023 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/windows/w32-bccd.mk b/builds/windows/w32-bccd.mk
index 484aefc..64dafdb 100644
--- a/builds/windows/w32-bccd.mk
+++ b/builds/windows/w32-bccd.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 1996-2024 by
+# Copyright (C) 1996-2023 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/windows/w32-dev.mk b/builds/windows/w32-dev.mk
index 6ae6d9f..7c89ad2 100644
--- a/builds/windows/w32-dev.mk
+++ b/builds/windows/w32-dev.mk
@@ -5,7 +5,7 @@
#
-# Copyright (C) 1996-2024 by
+# Copyright (C) 1996-2023 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/windows/w32-gcc.mk b/builds/windows/w32-gcc.mk
index f1dace5..f37c185 100644
--- a/builds/windows/w32-gcc.mk
+++ b/builds/windows/w32-gcc.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 1996-2024 by
+# Copyright (C) 1996-2023 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/windows/w32-icc.mk b/builds/windows/w32-icc.mk
index e331c5d..cf51cce 100644
--- a/builds/windows/w32-icc.mk
+++ b/builds/windows/w32-icc.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 1996-2024 by
+# Copyright (C) 1996-2023 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/windows/w32-intl.mk b/builds/windows/w32-intl.mk
index 440b48d..0c16b4c 100644
--- a/builds/windows/w32-intl.mk
+++ b/builds/windows/w32-intl.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 1996-2024 by
+# Copyright (C) 1996-2023 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/windows/w32-lcc.mk b/builds/windows/w32-lcc.mk
index d34bcd5..0dd740e 100644
--- a/builds/windows/w32-lcc.mk
+++ b/builds/windows/w32-lcc.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 1996-2024 by
+# Copyright (C) 1996-2023 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/windows/w32-mingw32.mk b/builds/windows/w32-mingw32.mk
index c5b19f7..dc323bd 100644
--- a/builds/windows/w32-mingw32.mk
+++ b/builds/windows/w32-mingw32.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 1996-2024 by
+# Copyright (C) 1996-2023 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/windows/w32-vcc.mk b/builds/windows/w32-vcc.mk
index bfba2ad..eea7db8 100644
--- a/builds/windows/w32-vcc.mk
+++ b/builds/windows/w32-vcc.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 1996-2024 by
+# Copyright (C) 1996-2023 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/windows/w32-wat.mk b/builds/windows/w32-wat.mk
index 665ef49..5392d2a 100644
--- a/builds/windows/w32-wat.mk
+++ b/builds/windows/w32-wat.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 1996-2024 by
+# Copyright (C) 1996-2023 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/builds/windows/win32-def.mk b/builds/windows/win32-def.mk
index af4e8b5..3242651 100644
--- a/builds/windows/win32-def.mk
+++ b/builds/windows/win32-def.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 1996-2024 by
+# Copyright (C) 1996-2023 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/configure b/configure
index f4049db..d4315bd 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
#!/bin/sh
#
-# Copyright (C) 2002-2024 by
+# Copyright (C) 2002-2023 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/devel/ft2build.h b/devel/ft2build.h
index 7e5260d..82fdb30 100644
--- a/devel/ft2build.h
+++ b/devel/ft2build.h
@@ -4,7 +4,7 @@
*
* FreeType 2 build and setup macros (development version).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/devel/ftoption.h b/devel/ftoption.h
index caa4509..da56abc 100644
--- a/devel/ftoption.h
+++ b/devel/ftoption.h
@@ -4,7 +4,7 @@
*
* User-selectable configuration macros (specification only).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -757,22 +757,6 @@
#endif
- /**************************************************************************
- *
- * Option `TT_CONFIG_OPTION_GPOS_KERNING` enables a basic GPOS kerning
- * implementation (for TrueType fonts only). With this defined, FreeType
- * is able to get kerning pair data from the GPOS 'kern' feature as well as
- * legacy 'kern' tables; without this defined, FreeType will only be able
- * to use legacy 'kern' tables.
- *
- * Note that FreeType does not support more advanced GPOS layout features;
- * even the 'kern' feature implemented here doesn't handle more
- * sophisticated kerning variants. Use a higher-level library like
- * HarfBuzz instead for that.
- */
-#define TT_CONFIG_OPTION_GPOS_KERNING
-
-
/*************************************************************************/
/*************************************************************************/
/**** ****/
diff --git a/docs/CHANGES b/docs/CHANGES
index bd7b12a..96cf607 100644
--- a/docs/CHANGES
+++ b/docs/CHANGES
@@ -1,43 +1,3 @@
-CHANGES BETWEEN 2.13.2 and 2.13.3 (2024-Aug-11)
-
- I. IMPORTANT CHANGES
-
- - Some fields in the `FT_Outline` structure have been changed
- from signed to unsigned type, which better reflects the actual
- usage. It is also an additional means to protect against
- malformed input.
-
-
- II. IMPORTANT BUG FIXES
-
- - Rare double-free crashes in the cache subsystem have been fixed.
-
- - Excessive stack allocation in the autohinter has been fixed.
-
-
- III. MISCELLANEOUS
-
- - The B/W rasterizer has received a major upkeep that results in
- large performance improvements. The rendering speed has increased
- and even doubled for very complex glyphs.
-
- - If the new configuration option `TT_CONFIG_OPTION_GPOS_KERNING` is
- defined, `FT_Get_Kerning` understands rudimentary GPOS kerning
- (for TrueType fonts only). This is not enabled by default since
- its usage is very limited, mainly for legacy applications that
- have to support TrueType fonts automatically converted from 'kern'
- tables to GPOS kerning. If you need proper (GPOS) kerning support
- please use a higher-level library like HarfBuzz.
-
- Code contributed by David Saltzman <davidbsaltzman@gmail.com>.
-
- - The internal structures `PS_DesignMap` and `PS_Blend` related to
- parsing of old Multiple Masters fonts have been removed from the
- public header file `t1tables.h`.
-
-
-======================================================================
-
CHANGES BETWEEN 2.13.1 and 2.13.2 (2023-Aug-25)
I. MISCELLANEOUS
@@ -5708,7 +5668,7 @@
------------------------------------------------------------------------
-Copyright (C) 2000-2024 by
+Copyright (C) 2000-2023 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used,
diff --git a/docs/CUSTOMIZE b/docs/CUSTOMIZE
index a96726e..80527db 100644
--- a/docs/CUSTOMIZE
+++ b/docs/CUSTOMIZE
@@ -139,7 +139,7 @@
----------------------------------------------------------------------
-Copyright (C) 2003-2024 by
+Copyright (C) 2003-2023 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used,
diff --git a/docs/DEBUG b/docs/DEBUG
index c892d41..7398df6 100644
--- a/docs/DEBUG
+++ b/docs/DEBUG
@@ -297,7 +297,7 @@
------------------------------------------------------------------------
-Copyright (C) 2002-2024 by
+Copyright (C) 2002-2023 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used,
diff --git a/docs/DOCGUIDE b/docs/DOCGUIDE
index 332b936..b46b7bd 100644
--- a/docs/DOCGUIDE
+++ b/docs/DOCGUIDE
@@ -285,7 +285,7 @@
----------------------------------------------------------------------
-Copyright (C) 2018-2024 by
+Copyright (C) 2018-2023 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/docs/INSTALL b/docs/INSTALL
index 0ab2a5e..49ab112 100644
--- a/docs/INSTALL
+++ b/docs/INSTALL
@@ -59,7 +59,7 @@
CMake :: see `CMakeLists.txt` for more information
Meson :: see `meson.build` for more information
- MSBuild :: see `MSBuild.sln` for more information
+ MSBuild :: see `builds/windows/vc2010/freetype.vcxproj`
MMS :: see `vms_make.com` and `docs/INSTALL.VMS`
@@ -101,7 +101,7 @@
----------------------------------------------------------------------
-Copyright (C) 2000-2024 by
+Copyright (C) 2000-2023 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used,
diff --git a/docs/INSTALL.ANY b/docs/INSTALL.ANY
index 32ee707..bb77b1b 100644
--- a/docs/INSTALL.ANY
+++ b/docs/INSTALL.ANY
@@ -72,9 +72,9 @@
-- rasterizers (optional; at least one is needed for vector
formats)
- src/smooth/smooth.c -- anti-aliasing rasterizer
src/raster/raster.c -- monochrome rasterizer
src/sdf/sdf.c -- Signed Distance Field driver
+ src/smooth/smooth.c -- anti-aliasing rasterizer
-- auxiliary modules (optional)
@@ -127,7 +127,7 @@
1. Copy all files in current directory
cp freetype/src/base/*.[hc] .
- cp freetype/src/raster/*.[hc] .
+ cp freetype/src/raster1/*.[hc] .
cp freetype/src/smooth/*.[hc] .
etc.
@@ -144,7 +144,7 @@
----------------------------------------------------------------------
-Copyright (C) 2003-2024 by
+Copyright (C) 2003-2023 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used,
diff --git a/docs/INSTALL.CROSS b/docs/INSTALL.CROSS
index b774527..21f4c31 100644
--- a/docs/INSTALL.CROSS
+++ b/docs/INSTALL.CROSS
@@ -163,7 +163,7 @@
----------------------------------------------------------------------
-Copyright (C) 2006-2024 by
+Copyright (C) 2006-2023 by
suzuki toshiya, David Turner, Robert Wilhelm, and Werner Lemberg.
diff --git a/docs/INSTALL.GNU b/docs/INSTALL.GNU
index 57f2018..7517d9c 100644
--- a/docs/INSTALL.GNU
+++ b/docs/INSTALL.GNU
@@ -168,7 +168,7 @@
----------------------------------------------------------------------
-Copyright (C) 2003-2024 by
+Copyright (C) 2003-2023 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used,
diff --git a/docs/INSTALL.UNIX b/docs/INSTALL.UNIX
index 4a4a101..659f3a2 100644
--- a/docs/INSTALL.UNIX
+++ b/docs/INSTALL.UNIX
@@ -126,7 +126,7 @@
----------------------------------------------------------------------
-Copyright (C) 2003-2024 by
+Copyright (C) 2003-2023 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used,
diff --git a/docs/INSTALL.VMS b/docs/INSTALL.VMS
index ba5aece..4f8c3ac 100644
--- a/docs/INSTALL.VMS
+++ b/docs/INSTALL.VMS
@@ -56,7 +56,7 @@
------------------------------------------------------------------------
-Copyright (C) 2000-2024 by
+Copyright (C) 2000-2023 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used,
diff --git a/docs/TODO b/docs/TODO
index 985e363..d340880 100644
--- a/docs/TODO
+++ b/docs/TODO
@@ -27,7 +27,7 @@
------------------------------------------------------------------------
-Copyright (C) 2001-2024 by
+Copyright (C) 2001-2023 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used,
diff --git a/docs/VERSIONS.TXT b/docs/VERSIONS.TXT
index a84067d..8b43c15 100644
--- a/docs/VERSIONS.TXT
+++ b/docs/VERSIONS.TXT
@@ -60,7 +60,6 @@
release libtool so
-------------------------------
- 2.13.3 26.2.20 6.20.2
2.13.2 26.1.20 6.20.1
2.13.1 26.0.20 6.20.0
2.13.0 25.0.19 6.19.0
@@ -125,7 +124,7 @@
----------------------------------------------------------------------
-Copyright (C) 2002-2024 by
+Copyright (C) 2002-2023 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used,
diff --git a/docs/formats.txt b/docs/formats.txt
index 00283e6..882d62d 100644
--- a/docs/formats.txt
+++ b/docs/formats.txt
@@ -206,7 +206,7 @@
------------------------------------------------------------------------
-Copyright (C) 2004-2024 by
+Copyright (C) 2004-2023 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used,
diff --git a/docs/freetype-config.1 b/docs/freetype-config.1
index f52a4e6..6ef1ac8 100644
--- a/docs/freetype-config.1
+++ b/docs/freetype-config.1
@@ -1,4 +1,4 @@
-.TH FREETYPE-CONFIG 1 "August 2024" "FreeType 2.13.3"
+.TH FREETYPE-CONFIG 1 "August 2023" "FreeType 2.13.2"
.
.
.SH NAME
diff --git a/docs/freetype-web.txt b/docs/freetype-web.txt
deleted file mode 100644
index 0c9140c..0000000
--- a/docs/freetype-web.txt
+++ /dev/null
@@ -1,42 +0,0 @@
-How to update the FreeType web pages
-------------------------------------
-
-The 'freetype.org' website is hosted via the 'freetype-web' repo
-located at
-
- https://gitlab.com/freetype/freetype-web ,
-
-which in turn is a mirror from the master 'freetype-web' repository
-located at
-
- https://gitlab.freedesktop.org/freetype/freetype-web .
-
-Due to Cloudflare caching, changes take time to appear on
-'freetype.org', so visit
-
- https://freetype.gitlab.io/freetype-web
-
-for instant feedback.
-
-All the commits should *only* be done to the 'freetype-web' repo at
-
- https://gitlab.freedesktop.org/freetype/freetype-web
-
-When a commit is done to this repo, the CI pipeline runs and the
-website is deployed via gitlab pages at
-
- https://freetype.pages.freedesktop.org/freetype-web .
-
-The pull mirror automatically updates the repository in 'gitlab.com',
-and the CI pipeline deploys the website at:
-
- https://freetype.gitlab.io/freetype-web
-
-Since the 'freetype.org' website uses Cloudflare caching, it will take
-a while for the changes to show up in 'freetype.org'.
-
-If you have access to the Cloudflare dashboard you can purge the
-cache from there; this will cause the cache to be fetched again
-resulting in the website being updated instantly.
-
---- end of freetype-web.txt ---
diff --git a/docs/oldlogs/ChangeLog.20 b/docs/oldlogs/ChangeLog.20
index c2e2e1d..0993728 100644
--- a/docs/oldlogs/ChangeLog.20
+++ b/docs/oldlogs/ChangeLog.20
@@ -2597,7 +2597,7 @@
----------------------------------------------------------------------------
-Copyright (C) 2000-2024 by
+Copyright (C) 2000-2023 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/docs/oldlogs/ChangeLog.21 b/docs/oldlogs/ChangeLog.21
index 0c2e0fb..b331257 100644
--- a/docs/oldlogs/ChangeLog.21
+++ b/docs/oldlogs/ChangeLog.21
@@ -9422,7 +9422,7 @@
----------------------------------------------------------------------------
-Copyright (C) 2002-2024 by
+Copyright (C) 2002-2023 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/docs/oldlogs/ChangeLog.210 b/docs/oldlogs/ChangeLog.210
index 3cf9ea9..adb23d5 100644
--- a/docs/oldlogs/ChangeLog.210
+++ b/docs/oldlogs/ChangeLog.210
@@ -7799,7 +7799,7 @@
----------------------------------------------------------------------------
-Copyright (C) 2018-2024 by
+Copyright (C) 2018-2023 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/docs/oldlogs/ChangeLog.22 b/docs/oldlogs/ChangeLog.22
index f3c6598..b06d645 100644
--- a/docs/oldlogs/ChangeLog.22
+++ b/docs/oldlogs/ChangeLog.22
@@ -2821,7 +2821,7 @@
----------------------------------------------------------------------------
-Copyright (C) 2005-2024 by
+Copyright (C) 2005-2023 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/docs/oldlogs/ChangeLog.23 b/docs/oldlogs/ChangeLog.23
index 8427175..a8a69dd 100644
--- a/docs/oldlogs/ChangeLog.23
+++ b/docs/oldlogs/ChangeLog.23
@@ -7932,7 +7932,7 @@
----------------------------------------------------------------------------
-Copyright (C) 2006-2024 by
+Copyright (C) 2006-2023 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/docs/oldlogs/ChangeLog.24 b/docs/oldlogs/ChangeLog.24
index 2258ecc..0dbb2ac 100644
--- a/docs/oldlogs/ChangeLog.24
+++ b/docs/oldlogs/ChangeLog.24
@@ -6344,7 +6344,7 @@
----------------------------------------------------------------------------
-Copyright (C) 2010-2024 by
+Copyright (C) 2010-2023 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/docs/oldlogs/ChangeLog.25 b/docs/oldlogs/ChangeLog.25
index 008c4e7..31d5111 100644
--- a/docs/oldlogs/ChangeLog.25
+++ b/docs/oldlogs/ChangeLog.25
@@ -5145,7 +5145,7 @@
----------------------------------------------------------------------------
-Copyright (C) 2013-2024 by
+Copyright (C) 2013-2023 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/docs/oldlogs/ChangeLog.26 b/docs/oldlogs/ChangeLog.26
index 157957d..528345e 100644
--- a/docs/oldlogs/ChangeLog.26
+++ b/docs/oldlogs/ChangeLog.26
@@ -5695,7 +5695,7 @@
----------------------------------------------------------------------------
-Copyright (C) 2015-2024 by
+Copyright (C) 2015-2023 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/docs/oldlogs/ChangeLog.27 b/docs/oldlogs/ChangeLog.27
index 69cda80..6510e45 100644
--- a/docs/oldlogs/ChangeLog.27
+++ b/docs/oldlogs/ChangeLog.27
@@ -2090,7 +2090,7 @@
----------------------------------------------------------------------------
-Copyright (C) 2016-2024 by
+Copyright (C) 2016-2023 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/docs/oldlogs/ChangeLog.28 b/docs/oldlogs/ChangeLog.28
index d810a1b..603fc61 100644
--- a/docs/oldlogs/ChangeLog.28
+++ b/docs/oldlogs/ChangeLog.28
@@ -3120,7 +3120,7 @@
----------------------------------------------------------------------------
-Copyright (C) 2016-2024 by
+Copyright (C) 2016-2023 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/docs/oldlogs/ChangeLog.29 b/docs/oldlogs/ChangeLog.29
index 3c6efa7..3d73d47 100644
--- a/docs/oldlogs/ChangeLog.29
+++ b/docs/oldlogs/ChangeLog.29
@@ -2336,7 +2336,7 @@
----------------------------------------------------------------------------
-Copyright (C) 2017-2024 by
+Copyright (C) 2017-2023 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/docs/raster.txt b/docs/raster.txt
index d85b662..1642a81 100644
--- a/docs/raster.txt
+++ b/docs/raster.txt
@@ -618,7 +618,7 @@
------------------------------------------------------------------------
-Copyright (C) 2003-2024 by
+Copyright (C) 2003-2023 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used,
diff --git a/docs/release b/docs/release
index 90ceb86..c296efc 100644
--- a/docs/release
+++ b/docs/release
@@ -5,7 +5,7 @@
`FREETYPE_MINOR`, and `FREETYPE_PATCH`.
. Update version numbers in all files where necessary (for example, do
- a grep for both '2.13.2' and '2132' for release 2.13.2).
+ a grep for both '2.10.4' and '2104' for release 2.10.4).
. builds/unix/configure.raw: Update `version_info`.
@@ -91,14 +91,13 @@
zip!
. Run the following script (with updated `$VERSION`, `$SAVANNAH_USER`,
- `$SOURCEFORGE_USER`, and `GPG_KEY_ID` variables) to sign and upload
- the bundles to both Savannah and SourceForge. The signing code has
- been taken from the `gnupload` script (part of the 'automake'
- bundle).
+ and `$SOURCEFORGE_USER` variables) to sign and upload the bundles to
+ both Savannah and SourceForge. The signing code has been taken from
+ the `gnupload` script (part of the 'automake' bundle).
#!/bin/sh
- VERSION=2.13.2
+ VERSION=2.12.0
SAVANNAH_USER=wl
SOURCEFORGE_USER=wlemb
GPG_KEY_ID=BE6C3AAC63AD8E3F
@@ -184,7 +183,7 @@
#!/bin/sh
- VERSION=2.13.2
+ VERSION=2.10.4
SOURCEFORGE_USER=wlemb
#####################################################################
@@ -211,7 +210,7 @@
----------------------------------------------------------------------
-Copyright (C) 2003-2024 by
+Copyright (C) 2003-2023 by
David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used,
diff --git a/generate_notice.py b/generate_notice.py
index 9ef8e0e..16f4e70 100644
--- a/generate_notice.py
+++ b/generate_notice.py
@@ -42,8 +42,6 @@
".mailmap",
"Android.bp",
"METADATA",
- "MSBuild.rsp",
- "MSBuild.sln",
"OWNERS",
"README.android",
"TEST_MAPPING",
@@ -71,6 +69,7 @@
"builds/wince/vc2008-ce/freetype.vcproj",
"builds/wince/vc2008-ce/index.html",
"builds/windows/.gitignore",
+ "builds/windows/vc2010/freetype.sln",
"builds/windows/vc2010/freetype.user.props",
"builds/windows/vc2010/freetype.vcxproj",
"builds/windows/vc2010/freetype.vcxproj.filters",
@@ -96,7 +95,6 @@
"docs/PROBLEMS",
"docs/README",
"docs/freetype-config.1",
- "docs/freetype-web.txt",
"docs/markdown/images/favico.ico",
"docs/markdown/javascripts/extra.js",
"docs/markdown/stylesheets/extra.css",
diff --git a/include/freetype/config/ftconfig.h b/include/freetype/config/ftconfig.h
index 0667493..a851516 100644
--- a/include/freetype/config/ftconfig.h
+++ b/include/freetype/config/ftconfig.h
@@ -4,7 +4,7 @@
*
* ANSI-specific configuration file (specification only).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/config/ftheader.h b/include/freetype/config/ftheader.h
index f6ef261..e607bce 100644
--- a/include/freetype/config/ftheader.h
+++ b/include/freetype/config/ftheader.h
@@ -4,7 +4,7 @@
*
* Build macros of the FreeType 2 library.
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/config/ftoption.h b/include/freetype/config/ftoption.h
index 6566c94..ea86c0c 100644
--- a/include/freetype/config/ftoption.h
+++ b/include/freetype/config/ftoption.h
@@ -4,7 +4,7 @@
*
* User-selectable configuration macros (specification only).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -761,22 +761,6 @@
#endif
- /**************************************************************************
- *
- * Option `TT_CONFIG_OPTION_GPOS_KERNING` enables a basic GPOS kerning
- * implementation (for TrueType fonts only). With this defined, FreeType
- * is able to get kerning pair data from the GPOS 'kern' feature as well as
- * legacy 'kern' tables; without this defined, FreeType will only be able
- * to use legacy 'kern' tables.
- *
- * Note that FreeType does not support more advanced GPOS layout features;
- * even the 'kern' feature implemented here doesn't handle more
- * sophisticated kerning variants. Use a higher-level library like
- * HarfBuzz instead for that.
- */
-/* #define TT_CONFIG_OPTION_GPOS_KERNING */
-
-
/*************************************************************************/
/*************************************************************************/
/**** ****/
diff --git a/include/freetype/config/ftstdlib.h b/include/freetype/config/ftstdlib.h
index e17aa7b..f65148a 100644
--- a/include/freetype/config/ftstdlib.h
+++ b/include/freetype/config/ftstdlib.h
@@ -5,7 +5,7 @@
* ANSI-specific library and header configuration file (specification
* only).
*
- * Copyright (C) 2002-2024 by
+ * Copyright (C) 2002-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/config/integer-types.h b/include/freetype/config/integer-types.h
index c27505f..7258b50 100644
--- a/include/freetype/config/integer-types.h
+++ b/include/freetype/config/integer-types.h
@@ -4,7 +4,7 @@
*
* FreeType integer types definitions.
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/config/mac-support.h b/include/freetype/config/mac-support.h
index 07b6f91..b77b96d 100644
--- a/include/freetype/config/mac-support.h
+++ b/include/freetype/config/mac-support.h
@@ -4,7 +4,7 @@
*
* Mac/OS X support configuration header.
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/config/public-macros.h b/include/freetype/config/public-macros.h
index f56581a..23d0fa6 100644
--- a/include/freetype/config/public-macros.h
+++ b/include/freetype/config/public-macros.h
@@ -4,7 +4,7 @@
*
* Define a set of compiler macros used in public FreeType headers.
*
- * Copyright (C) 2020-2024 by
+ * Copyright (C) 2020-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/freetype.h b/include/freetype/freetype.h
index 58fc33d..92acf37 100644
--- a/include/freetype/freetype.h
+++ b/include/freetype/freetype.h
@@ -4,7 +4,7 @@
*
* FreeType high-level API and common types (specification only).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -1322,13 +1322,9 @@
* FT_FACE_FLAG_KERNING ::
* The face contains kerning information. If set, the kerning distance
* can be retrieved using the function @FT_Get_Kerning. Otherwise the
- * function always returns the vector (0,0).
- *
- * Note that for TrueType fonts only, FreeType supports both the 'kern'
- * table and the basic, pair-wise kerning feature from the 'GPOS' table
- * (with `TT_CONFIG_OPTION_GPOS_KERNING` enabled), though FreeType does
- * not support the more advanced GPOS layout features; use a library
- * like HarfBuzz for those instead.
+ * function always returns the vector (0,0). Note that FreeType
+ * doesn't handle kerning data from the SFNT 'GPOS' table (as present
+ * in many OpenType fonts).
*
* FT_FACE_FLAG_FAST_GLYPHS ::
* THIS FLAG IS DEPRECATED. DO NOT USE OR TEST IT.
@@ -3771,18 +3767,87 @@
* pixels and use the @FT_PIXEL_MODE_LCD_V mode.
*
* FT_RENDER_MODE_SDF ::
- * The positive (unsigned) 8-bit bitmap values can be converted to the
- * single-channel signed distance field (SDF) by subtracting 128, with
- * the positive and negative results corresponding to the inside and
- * the outside of a glyph contour, respectively. The distance units are
- * arbitrarily determined by an adjustable @spread property.
+ * This mode corresponds to 8-bit, single-channel signed distance field
+ * (SDF) bitmaps. Each pixel in the SDF grid is the value from the
+ * pixel's position to the nearest glyph's outline. The distances are
+ * calculated from the center of the pixel and are positive if they are
+ * filled by the outline (i.e., inside the outline) and negative
+ * otherwise. Check the note below on how to convert the output values
+ * to usable data.
*
* @note:
- * The selected render mode only affects scalable vector glyphs of a font.
+ * The selected render mode only affects vector glyphs of a font.
* Embedded bitmaps often have a different pixel mode like
* @FT_PIXEL_MODE_MONO. You can use @FT_Bitmap_Convert to transform them
* into 8-bit pixmaps.
*
+ * For @FT_RENDER_MODE_SDF the output bitmap buffer contains normalized
+ * distances that are packed into unsigned 8-bit values. To get pixel
+ * values in floating point representation use the following pseudo-C
+ * code for the conversion.
+ *
+ * ```
+ * // Load glyph and render using FT_RENDER_MODE_SDF,
+ * // then use the output buffer as follows.
+ *
+ * ...
+ * FT_Byte buffer = glyph->bitmap->buffer;
+ *
+ *
+ * for pixel in buffer
+ * {
+ * // `sd` is the signed distance and `spread` is the current spread;
+ * // the default spread is 2 and can be changed.
+ *
+ * float sd = (float)pixel - 128.0f;
+ *
+ *
+ * // Convert to pixel values.
+ * sd = ( sd / 128.0f ) * spread;
+ *
+ * // Store `sd` in a buffer or use as required.
+ * }
+ *
+ * ```
+ *
+ * FreeType has two rasterizers for generating SDF, namely:
+ *
+ * 1. `sdf` for generating SDF directly from glyph's outline, and
+ *
+ * 2. `bsdf` for generating SDF from rasterized bitmaps.
+ *
+ * Depending on the glyph type (i.e., outline or bitmap), one of the two
+ * rasterizers is chosen at runtime and used for generating SDFs. To
+ * force the use of `bsdf` you should render the glyph with any of the
+ * FreeType's other rendering modes (e.g., `FT_RENDER_MODE_NORMAL`) and
+ * then re-render with `FT_RENDER_MODE_SDF`.
+ *
+ * There are some issues with stability and possible failures of the SDF
+ * renderers (specifically `sdf`).
+ *
+ * 1. The `sdf` rasterizer is sensitive to really small features (e.g.,
+ * sharp turns that are less than 1~pixel) and imperfections in the
+ * glyph's outline, causing artifacts in the final output.
+ *
+ * 2. The `sdf` rasterizer has limited support for handling intersecting
+ * contours and *cannot* handle self-intersecting contours whatsoever.
+ * Self-intersection happens when a single connected contour
+ * intersects itself at some point; having these in your font
+ * definitely poses a problem to the rasterizer and cause artifacts,
+ * too.
+ *
+ * 3. Generating SDF for really small glyphs may result in undesirable
+ * output; the pixel grid (which stores distance information) becomes
+ * too coarse.
+ *
+ * 4. Since the output buffer is normalized, precision at smaller spreads
+ * is greater than precision at larger spread values because the
+ * output range of [0..255] gets mapped to a smaller SDF range. A
+ * spread of~2 should be sufficient in most cases.
+ *
+ * Points (1) and (2) can be avoided by using the `bsdf` rasterizer,
+ * which is more stable than the `sdf` rasterizer in general.
+ *
*/
typedef enum FT_Render_Mode_
{
@@ -3993,26 +4058,9 @@
* out of the scope of this API function -- they can be implemented
* through format-specific interfaces.
*
- * Note that, for TrueType fonts only, this can extract data from both
- * the 'kern' table and the basic, pair-wise kerning feature from the
- * GPOS table (with `TT_CONFIG_OPTION_GPOS_KERNING` enabled), though
- * FreeType does not support the more advanced GPOS layout features; use
- * a library like HarfBuzz for those instead. If a font has both a
- * 'kern' table and kern features of a GPOS table, the 'kern' table will
- * be used.
- *
- * Also note for right-to-left scripts, the functionality may differ for
- * fonts with GPOS tables vs. 'kern' tables. For GPOS, right-to-left
- * fonts typically use both a placement offset and an advance for pair
- * positioning, which this API does not support, so it would output
- * kerning values of zero; though if the right-to-left font used only
- * advances in GPOS pair positioning, then this API could output kerning
- * values for it, but it would use `left_glyph` to mean the first glyph
- * for that case. Whereas 'kern' tables are always advance-only and
- * always store the left glyph first.
- *
- * Use @FT_HAS_KERNING to find out whether a font has data that can be
- * extracted with `FT_Get_Kerning`.
+ * Kerning for OpenType fonts implemented in a 'GPOS' table is not
+ * supported; use @FT_HAS_KERNING to find out whether a font has data
+ * that can be extracted with `FT_Get_Kerning`.
*/
FT_EXPORT( FT_Error )
FT_Get_Kerning( FT_Face face,
@@ -5174,7 +5222,7 @@
*/
#define FREETYPE_MAJOR 2
#define FREETYPE_MINOR 13
-#define FREETYPE_PATCH 3
+#define FREETYPE_PATCH 2
/**************************************************************************
diff --git a/include/freetype/ftadvanc.h b/include/freetype/ftadvanc.h
index 85b8ba2..4560ded 100644
--- a/include/freetype/ftadvanc.h
+++ b/include/freetype/ftadvanc.h
@@ -4,7 +4,7 @@
*
* Quick computation of advance widths (specification only).
*
- * Copyright (C) 2008-2024 by
+ * Copyright (C) 2008-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/ftbbox.h b/include/freetype/ftbbox.h
index 12bbfa6..fc21740 100644
--- a/include/freetype/ftbbox.h
+++ b/include/freetype/ftbbox.h
@@ -4,7 +4,7 @@
*
* FreeType exact bbox computation (specification).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/ftbdf.h b/include/freetype/ftbdf.h
index 6f63b0b..e8ce643 100644
--- a/include/freetype/ftbdf.h
+++ b/include/freetype/ftbdf.h
@@ -4,7 +4,7 @@
*
* FreeType API for accessing BDF-specific strings (specification).
*
- * Copyright (C) 2002-2024 by
+ * Copyright (C) 2002-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/ftbitmap.h b/include/freetype/ftbitmap.h
index df9d462..eb6b4b1 100644
--- a/include/freetype/ftbitmap.h
+++ b/include/freetype/ftbitmap.h
@@ -4,7 +4,7 @@
*
* FreeType utility functions for bitmaps (specification).
*
- * Copyright (C) 2004-2024 by
+ * Copyright (C) 2004-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/ftbzip2.h b/include/freetype/ftbzip2.h
index c5baea8..7d29f46 100644
--- a/include/freetype/ftbzip2.h
+++ b/include/freetype/ftbzip2.h
@@ -4,7 +4,7 @@
*
* Bzip2-compressed stream support.
*
- * Copyright (C) 2010-2024 by
+ * Copyright (C) 2010-2023 by
* Joel Klinghed.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/ftcache.h b/include/freetype/ftcache.h
index 140df4c..a2072e2 100644
--- a/include/freetype/ftcache.h
+++ b/include/freetype/ftcache.h
@@ -4,7 +4,7 @@
*
* FreeType Cache subsystem (specification).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/ftcid.h b/include/freetype/ftcid.h
index 96b2a90..ef22939 100644
--- a/include/freetype/ftcid.h
+++ b/include/freetype/ftcid.h
@@ -4,7 +4,7 @@
*
* FreeType API for accessing CID font information (specification).
*
- * Copyright (C) 2007-2024 by
+ * Copyright (C) 2007-2023 by
* Dereg Clegg and Michael Toftdal.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/ftcolor.h b/include/freetype/ftcolor.h
index 420720d..eae200f 100644
--- a/include/freetype/ftcolor.h
+++ b/include/freetype/ftcolor.h
@@ -4,7 +4,7 @@
*
* FreeType's glyph color management (specification).
*
- * Copyright (C) 2018-2024 by
+ * Copyright (C) 2018-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/ftdriver.h b/include/freetype/ftdriver.h
index 1b7f539..7af7465 100644
--- a/include/freetype/ftdriver.h
+++ b/include/freetype/ftdriver.h
@@ -4,7 +4,7 @@
*
* FreeType API for controlling driver modules (specification only).
*
- * Copyright (C) 2017-2024 by
+ * Copyright (C) 2017-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -817,80 +817,6 @@
* 2.5
*/
-
- /**************************************************************************
- *
- * @property:
- * spread
- *
- * @description:
- * This property of the 'sdf' and 'bsdf' renderers defines how the signed
- * distance field (SDF) is represented in the output bitmap. The output
- * values are calculated as follows, '128 * ( SDF / spread + 1 )', with
- * the result clamped to the 8-bit range [0..255]. Therefore, 'spread'
- * is also the maximum euclidean distance from the edge after which the
- * values are clamped. The spread is specified in pixels with the
- * default value of 8. For accurate SDF texture mapping (interpolation),
- * the spread should be large enough to accommodate the target grid unit.
- *
- * @example:
- * The following example code demonstrates how to set the SDF spread
- * (omitting the error handling).
- *
- * ```
- * FT_Library library;
- * FT_Int spread = 2;
- *
- *
- * FT_Init_FreeType( &library );
- *
- * FT_Property_Set( library, "sdf", "spread", &spread );
- * ```
- *
- * @note:
- * FreeType has two rasterizers for generating SDF, namely:
- *
- * 1. `sdf` for generating SDF directly from glyph's outline, and
- *
- * 2. `bsdf` for generating SDF from rasterized bitmaps.
- *
- * Depending on the glyph type (i.e., outline or bitmap), one of the two
- * rasterizers is chosen at runtime and used for generating SDFs. To
- * force the use of `bsdf` you should render the glyph with any of the
- * FreeType's other rendering modes (e.g., `FT_RENDER_MODE_NORMAL`) and
- * then re-render with `FT_RENDER_MODE_SDF`.
- *
- * There are some issues with stability and possible failures of the SDF
- * renderers (specifically `sdf`).
- *
- * 1. The `sdf` rasterizer is sensitive to really small features (e.g.,
- * sharp turns that are less than 1~pixel) and imperfections in the
- * glyph's outline, causing artifacts in the final output.
- *
- * 2. The `sdf` rasterizer has limited support for handling intersecting
- * contours and *cannot* handle self-intersecting contours whatsoever.
- * Self-intersection happens when a single connected contour
- * intersects itself at some point; having these in your font
- * definitely poses a problem to the rasterizer and cause artifacts,
- * too.
- *
- * 3. Generating SDF for really small glyphs may result in undesirable
- * output; the pixel grid (which stores distance information) becomes
- * too coarse.
- *
- * 4. Since the output buffer is normalized, precision at smaller spreads
- * is greater than precision at larger spread values because the
- * output range of [0..255] gets mapped to a smaller SDF range. A
- * spread of~2 should be sufficient in most cases.
- *
- * Points (1) and (2) can be avoided by using the `bsdf` rasterizer,
- * which is more stable than the `sdf` rasterizer in general.
- *
- * @since:
- * 2.11
- */
-
-
/**************************************************************************
*
* @property:
diff --git a/include/freetype/fterrdef.h b/include/freetype/fterrdef.h
index 710ca91..d59b3cc 100644
--- a/include/freetype/fterrdef.h
+++ b/include/freetype/fterrdef.h
@@ -4,7 +4,7 @@
*
* FreeType error codes (specification).
*
- * Copyright (C) 2002-2024 by
+ * Copyright (C) 2002-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/fterrors.h b/include/freetype/fterrors.h
index 27c0ece..15ef3f7 100644
--- a/include/freetype/fterrors.h
+++ b/include/freetype/fterrors.h
@@ -4,7 +4,7 @@
*
* FreeType error code handling (specification).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/ftfntfmt.h b/include/freetype/ftfntfmt.h
index 7c8b087..c0018fc 100644
--- a/include/freetype/ftfntfmt.h
+++ b/include/freetype/ftfntfmt.h
@@ -4,7 +4,7 @@
*
* Support functions for font formats.
*
- * Copyright (C) 2002-2024 by
+ * Copyright (C) 2002-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/ftgasp.h b/include/freetype/ftgasp.h
index 30e5a9b..d5f19ad 100644
--- a/include/freetype/ftgasp.h
+++ b/include/freetype/ftgasp.h
@@ -4,7 +4,7 @@
*
* Access of TrueType's 'gasp' table (specification).
*
- * Copyright (C) 2007-2024 by
+ * Copyright (C) 2007-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/ftglyph.h b/include/freetype/ftglyph.h
index dc1eb88..4658895 100644
--- a/include/freetype/ftglyph.h
+++ b/include/freetype/ftglyph.h
@@ -4,7 +4,7 @@
*
* FreeType convenience functions to handle glyphs (specification).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/ftgxval.h b/include/freetype/ftgxval.h
index 065cd53..e8de9a6 100644
--- a/include/freetype/ftgxval.h
+++ b/include/freetype/ftgxval.h
@@ -4,7 +4,7 @@
*
* FreeType API for validating TrueTypeGX/AAT tables (specification).
*
- * Copyright (C) 2004-2024 by
+ * Copyright (C) 2004-2023 by
* Masatake YAMATO, Redhat K.K,
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
diff --git a/include/freetype/ftgzip.h b/include/freetype/ftgzip.h
index 9516dc0..443ec29 100644
--- a/include/freetype/ftgzip.h
+++ b/include/freetype/ftgzip.h
@@ -4,7 +4,7 @@
*
* Gzip-compressed stream support.
*
- * Copyright (C) 2002-2024 by
+ * Copyright (C) 2002-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/ftimage.h b/include/freetype/ftimage.h
index 2b4b4ac..6baa812 100644
--- a/include/freetype/ftimage.h
+++ b/include/freetype/ftimage.h
@@ -5,7 +5,7 @@
* FreeType glyph image formats and default raster interface
* (specification).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -21,11 +21,6 @@
* Note: A 'raster' is simply a scan-line converter, used to render
* `FT_Outline`s into `FT_Bitmap`s.
*
- * Note: This file can be used for `STANDALONE_` compilation of raster
- * (B/W) and smooth (anti-aliased) renderers. Therefore, it must
- * rely on standard variable types only instead of aliases in
- * `fttypes.h`.
- *
*/
@@ -323,7 +318,7 @@
*
* If bit~2 is set, bits 5-7 contain the drop-out mode (as defined in
* the OpenType specification; the value is the same as the argument to
- * the 'SCANTYPE' instruction).
+ * the 'SCANMODE' instruction).
*
* Bits 3 and~4 are reserved for internal purposes.
*
@@ -346,14 +341,14 @@
*/
typedef struct FT_Outline_
{
- unsigned short n_contours; /* number of contours in glyph */
- unsigned short n_points; /* number of points in the glyph */
+ short n_contours; /* number of contours in glyph */
+ short n_points; /* number of points in the glyph */
- FT_Vector* points; /* the outline's points */
- unsigned char* tags; /* the points flags */
- unsigned short* contours; /* the contour end points */
+ FT_Vector* points; /* the outline's points */
+ char* tags; /* the points flags */
+ short* contours; /* the contour end points */
- int flags; /* outline masks */
+ int flags; /* outline masks */
} FT_Outline;
@@ -361,8 +356,8 @@
/* Following limits must be consistent with */
/* FT_Outline.{n_contours,n_points} */
-#define FT_OUTLINE_CONTOURS_MAX USHRT_MAX
-#define FT_OUTLINE_POINTS_MAX USHRT_MAX
+#define FT_OUTLINE_CONTOURS_MAX SHRT_MAX
+#define FT_OUTLINE_POINTS_MAX SHRT_MAX
/**************************************************************************
@@ -439,8 +434,8 @@
* rasterizer; see the `tags` field in @FT_Outline.
*
* Please refer to the description of the 'SCANTYPE' instruction in the
- * [OpenType specification](https://learn.microsoft.com/en-us/typography/opentype/spec/tt_instructions#scantype)
- * how simple drop-outs, smart drop-outs, and stubs are defined.
+ * OpenType specification (in file `ttinst1.doc`) how simple drop-outs,
+ * smart drop-outs, and stubs are defined.
*/
#define FT_OUTLINE_NONE 0x0
#define FT_OUTLINE_OWNER 0x1
diff --git a/include/freetype/ftincrem.h b/include/freetype/ftincrem.h
index 816581b..2d4f5de 100644
--- a/include/freetype/ftincrem.h
+++ b/include/freetype/ftincrem.h
@@ -4,7 +4,7 @@
*
* FreeType incremental loading (specification).
*
- * Copyright (C) 2002-2024 by
+ * Copyright (C) 2002-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/ftlcdfil.h b/include/freetype/ftlcdfil.h
index 25274dc..d3723e1 100644
--- a/include/freetype/ftlcdfil.h
+++ b/include/freetype/ftlcdfil.h
@@ -5,7 +5,7 @@
* FreeType API for color filtering of subpixel bitmap glyphs
* (specification).
*
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/ftlist.h b/include/freetype/ftlist.h
index 972fbfa..b553131 100644
--- a/include/freetype/ftlist.h
+++ b/include/freetype/ftlist.h
@@ -4,7 +4,7 @@
*
* Generic list support for FreeType (specification).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/ftlogging.h b/include/freetype/ftlogging.h
index 1813cfc..53b8b89 100644
--- a/include/freetype/ftlogging.h
+++ b/include/freetype/ftlogging.h
@@ -4,7 +4,7 @@
*
* Additional debugging APIs.
*
- * Copyright (C) 2020-2024 by
+ * Copyright (C) 2020-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/ftlzw.h b/include/freetype/ftlzw.h
index bcf59ba..adfd172 100644
--- a/include/freetype/ftlzw.h
+++ b/include/freetype/ftlzw.h
@@ -4,7 +4,7 @@
*
* LZW-compressed stream support.
*
- * Copyright (C) 2004-2024 by
+ * Copyright (C) 2004-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/ftmac.h b/include/freetype/ftmac.h
index e4efde3..a91e38f 100644
--- a/include/freetype/ftmac.h
+++ b/include/freetype/ftmac.h
@@ -4,7 +4,7 @@
*
* Additional Mac-specific API.
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 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/include/freetype/ftmm.h b/include/freetype/ftmm.h
index 35ed039..d145128 100644
--- a/include/freetype/ftmm.h
+++ b/include/freetype/ftmm.h
@@ -4,7 +4,7 @@
*
* FreeType Multiple Master font interface (specification).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -19,13 +19,8 @@
#ifndef FTMM_H_
#define FTMM_H_
-#include <freetype/freetype.h>
-#ifdef FREETYPE_H
-#error "freetype.h of FreeType 1 has been loaded!"
-#error "Please fix the directory search order for header files"
-#error "so that freetype.h of FreeType 2 is found first."
-#endif
+#include <freetype/t1tables.h>
FT_BEGIN_HEADER
@@ -60,30 +55,6 @@
/**************************************************************************
*
- * @enum:
- * T1_MAX_MM_XXX
- *
- * @description:
- * Multiple Masters limits as defined in their specifications.
- *
- * @values:
- * T1_MAX_MM_AXIS ::
- * The maximum number of Multiple Masters axes.
- *
- * T1_MAX_MM_DESIGNS ::
- * The maximum number of Multiple Masters designs.
- *
- * T1_MAX_MM_MAP_POINTS ::
- * The maximum number of elements in a design map.
- *
- */
-#define T1_MAX_MM_AXIS 4
-#define T1_MAX_MM_DESIGNS 16
-#define T1_MAX_MM_MAP_POINTS 20
-
-
- /**************************************************************************
- *
* @struct:
* FT_MM_Axis
*
diff --git a/include/freetype/ftmodapi.h b/include/freetype/ftmodapi.h
index 0ee7158..c8f0c2c 100644
--- a/include/freetype/ftmodapi.h
+++ b/include/freetype/ftmodapi.h
@@ -4,7 +4,7 @@
*
* FreeType modules public interface (specification).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/ftmoderr.h b/include/freetype/ftmoderr.h
index 6722fbf..c8c892d 100644
--- a/include/freetype/ftmoderr.h
+++ b/include/freetype/ftmoderr.h
@@ -4,7 +4,7 @@
*
* FreeType module error offsets (specification).
*
- * Copyright (C) 2001-2024 by
+ * Copyright (C) 2001-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/ftotval.h b/include/freetype/ftotval.h
index 810200b..011bdfc 100644
--- a/include/freetype/ftotval.h
+++ b/include/freetype/ftotval.h
@@ -4,7 +4,7 @@
*
* FreeType API for validating OpenType tables (specification).
*
- * Copyright (C) 2004-2024 by
+ * Copyright (C) 2004-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/ftoutln.h b/include/freetype/ftoutln.h
index 44e94b4..f9329ca 100644
--- a/include/freetype/ftoutln.h
+++ b/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-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -112,7 +112,7 @@
* Degenerate contours, segments, and Bezier arcs may be reported. In
* most cases, it is best to filter these out before using the outline
* for stroking or other path modification purposes (which may cause
- * degenerate segments to become non-degenerate and visible, like when
+ * degenerate segments to become non-degenrate and visible, like when
* stroke caps are used or the path is otherwise outset). Some glyph
* outlines may contain deliberate degenerate single points for mark
* attachement.
diff --git a/include/freetype/ftparams.h b/include/freetype/ftparams.h
index 43bf69c..6a9f243 100644
--- a/include/freetype/ftparams.h
+++ b/include/freetype/ftparams.h
@@ -4,7 +4,7 @@
*
* FreeType API for possible FT_Parameter tags (specification only).
*
- * Copyright (C) 2017-2024 by
+ * Copyright (C) 2017-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/ftpfr.h b/include/freetype/ftpfr.h
index 1a712b9..7111d40 100644
--- a/include/freetype/ftpfr.h
+++ b/include/freetype/ftpfr.h
@@ -4,7 +4,7 @@
*
* FreeType API for accessing PFR-specific data (specification only).
*
- * Copyright (C) 2002-2024 by
+ * Copyright (C) 2002-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/ftrender.h b/include/freetype/ftrender.h
index dc5018a..0b6fad3 100644
--- a/include/freetype/ftrender.h
+++ b/include/freetype/ftrender.h
@@ -4,7 +4,7 @@
*
* FreeType renderer modules public interface (specification).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/ftsizes.h b/include/freetype/ftsizes.h
index 4ef5c79..7bfb1ae 100644
--- a/include/freetype/ftsizes.h
+++ b/include/freetype/ftsizes.h
@@ -4,7 +4,7 @@
*
* FreeType size objects management (specification).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/ftsnames.h b/include/freetype/ftsnames.h
index d5d5cd9..9d5d22b 100644
--- a/include/freetype/ftsnames.h
+++ b/include/freetype/ftsnames.h
@@ -7,7 +7,7 @@
*
* This is _not_ used to retrieve glyph names!
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/ftstroke.h b/include/freetype/ftstroke.h
index 41626dc..b3d9080 100644
--- a/include/freetype/ftstroke.h
+++ b/include/freetype/ftstroke.h
@@ -4,7 +4,7 @@
*
* FreeType path stroker (specification).
*
- * Copyright (C) 2002-2024 by
+ * Copyright (C) 2002-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/ftsynth.h b/include/freetype/ftsynth.h
index 43081b6..af90967 100644
--- a/include/freetype/ftsynth.h
+++ b/include/freetype/ftsynth.h
@@ -5,7 +5,7 @@
* FreeType synthesizing code for emboldening and slanting
* (specification).
*
- * Copyright (C) 2000-2024 by
+ * Copyright (C) 2000-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/ftsystem.h b/include/freetype/ftsystem.h
index 1eacb3a..3a08f49 100644
--- a/include/freetype/ftsystem.h
+++ b/include/freetype/ftsystem.h
@@ -4,7 +4,7 @@
*
* FreeType low-level system interface definition (specification).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/fttrigon.h b/include/freetype/fttrigon.h
index a5299e9..294981a 100644
--- a/include/freetype/fttrigon.h
+++ b/include/freetype/fttrigon.h
@@ -4,7 +4,7 @@
*
* FreeType trigonometric functions (specification).
*
- * Copyright (C) 2001-2024 by
+ * Copyright (C) 2001-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/fttypes.h b/include/freetype/fttypes.h
index 2781514..5b109f0 100644
--- a/include/freetype/fttypes.h
+++ b/include/freetype/fttypes.h
@@ -4,7 +4,7 @@
*
* FreeType simple types definitions (specification only).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/ftwinfnt.h b/include/freetype/ftwinfnt.h
index 2591e58..7b701ea 100644
--- a/include/freetype/ftwinfnt.h
+++ b/include/freetype/ftwinfnt.h
@@ -4,7 +4,7 @@
*
* FreeType API for accessing Windows fnt-specific data.
*
- * Copyright (C) 2003-2024 by
+ * Copyright (C) 2003-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/internal/autohint.h b/include/freetype/internal/autohint.h
index 8865d53..bf9c8b7 100644
--- a/include/freetype/internal/autohint.h
+++ b/include/freetype/internal/autohint.h
@@ -4,7 +4,7 @@
*
* High-level 'autohint' module-specific interface (specification).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/internal/cffotypes.h b/include/freetype/internal/cffotypes.h
index 36b0390..50d5353 100644
--- a/include/freetype/internal/cffotypes.h
+++ b/include/freetype/internal/cffotypes.h
@@ -4,7 +4,7 @@
*
* Basic OpenType/CFF object type definitions (specification).
*
- * Copyright (C) 2017-2024 by
+ * Copyright (C) 2017-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/internal/cfftypes.h b/include/freetype/internal/cfftypes.h
index ef2e8e7..c252176 100644
--- a/include/freetype/internal/cfftypes.h
+++ b/include/freetype/internal/cfftypes.h
@@ -5,7 +5,7 @@
* Basic OpenType/CFF type definitions and interface (specification
* only).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -248,10 +248,10 @@
FT_Byte num_family_blues;
FT_Byte num_family_other_blues;
- FT_Fixed blue_values[14];
- FT_Fixed other_blues[10];
- FT_Fixed family_blues[14];
- FT_Fixed family_other_blues[10];
+ FT_Pos blue_values[14];
+ FT_Pos other_blues[10];
+ FT_Pos family_blues[14];
+ FT_Pos family_other_blues[10];
FT_Fixed blue_scale;
FT_Pos blue_shift;
diff --git a/include/freetype/internal/compiler-macros.h b/include/freetype/internal/compiler-macros.h
index 876f66e..6f67650 100644
--- a/include/freetype/internal/compiler-macros.h
+++ b/include/freetype/internal/compiler-macros.h
@@ -4,7 +4,7 @@
*
* Compiler-specific macro definitions used internally by FreeType.
*
- * Copyright (C) 2020-2024 by
+ * Copyright (C) 2020-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/internal/ftcalc.h b/include/freetype/internal/ftcalc.h
index 71128a2..d9aea23 100644
--- a/include/freetype/internal/ftcalc.h
+++ b/include/freetype/internal/ftcalc.h
@@ -4,7 +4,7 @@
*
* Arithmetic computations (specification).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -415,7 +415,7 @@
#define FT_MSB( x ) ( 31 - _CountLeadingZeros( x ) )
-#elif defined( _M_ARM64 ) || defined( _M_ARM ) || defined( _M_ARM64EC )
+#elif defined( _M_ARM64 ) || defined( _M_ARM )
#include <intrin.h>
#pragma intrinsic( _CountLeadingZeros )
@@ -455,12 +455,6 @@
#define FT_MSB( x ) FT_MSB_i386( x )
-#elif defined( __SunOS_5_11 )
-
-#include <string.h>
-
-#define FT_MSB( x ) ( fls( x ) - 1 )
-
#elif defined( __DECC ) || defined( __DECCXX )
#include <builtins.h>
@@ -495,6 +489,8 @@
FT_Fixed y );
+#if 0
+
/**************************************************************************
*
* @function:
@@ -511,11 +507,12 @@
* The result of 'sqrt(x)'.
*
* @note:
- * This function is slow and should be avoided. Consider @FT_Hypot or
- * @FT_Vector_NormLen instead.
+ * This function is not very fast.
*/
- FT_BASE( FT_UInt32 )
- FT_SqrtFixed( FT_UInt32 x );
+ FT_BASE( FT_Int32 )
+ FT_SqrtFixed( FT_Int32 x );
+
+#endif /* 0 */
#define INT_TO_F26DOT6( x ) ( (FT_Long)(x) * 64 ) /* << 6 */
diff --git a/include/freetype/internal/ftdebug.h b/include/freetype/internal/ftdebug.h
index d7fa8dc..4e013ba 100644
--- a/include/freetype/internal/ftdebug.h
+++ b/include/freetype/internal/ftdebug.h
@@ -4,7 +4,7 @@
*
* Debugging and logging component (specification).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/internal/ftdrv.h b/include/freetype/internal/ftdrv.h
index 5609b3e..9001c07 100644
--- a/include/freetype/internal/ftdrv.h
+++ b/include/freetype/internal/ftdrv.h
@@ -4,7 +4,7 @@
*
* FreeType internal font driver interface (specification).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/internal/ftgloadr.h b/include/freetype/internal/ftgloadr.h
index f1c155b..36e5509 100644
--- a/include/freetype/internal/ftgloadr.h
+++ b/include/freetype/internal/ftgloadr.h
@@ -4,7 +4,7 @@
*
* The FreeType glyph loader (specification).
*
- * Copyright (C) 2002-2024 by
+ * Copyright (C) 2002-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/internal/ftmemory.h b/include/freetype/internal/ftmemory.h
index 4e05a29..5eb1d21 100644
--- a/include/freetype/internal/ftmemory.h
+++ b/include/freetype/internal/ftmemory.h
@@ -4,7 +4,7 @@
*
* The FreeType memory management macros (specification).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg
*
* This file is part of the FreeType project, and may only be used,
@@ -371,11 +371,8 @@
#define FT_STRDUP( dst, str ) \
FT_MEM_SET_ERROR( FT_MEM_STRDUP( dst, str ) )
-#define FT_MEM_DUP( dst, address, size ) \
- FT_ASSIGNP_INNER( dst, ft_mem_dup( memory, \
- (address), \
- (FT_ULong)(size), \
- &error ) )
+#define FT_MEM_DUP( dst, address, size ) \
+ (dst) = ft_mem_dup( memory, (address), (FT_ULong)(size), &error )
#define FT_DUP( dst, address, size ) \
FT_MEM_SET_ERROR( FT_MEM_DUP( dst, address, size ) )
diff --git a/include/freetype/internal/ftmmtypes.h b/include/freetype/internal/ftmmtypes.h
index 8449e7a..c4b21d6 100644
--- a/include/freetype/internal/ftmmtypes.h
+++ b/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-2024 by
+ * Copyright (C) 2022-2023 by
* David Turner, Robert Wilhelm, Werner Lemberg, George Williams, and
* Dominik Röttsches.
*
diff --git a/include/freetype/internal/ftobjs.h b/include/freetype/internal/ftobjs.h
index a1e9329..28bc9b6 100644
--- a/include/freetype/internal/ftobjs.h
+++ b/include/freetype/internal/ftobjs.h
@@ -4,7 +4,7 @@
*
* The FreeType private base classes (specification).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -604,6 +604,12 @@
#define FT_FACE_MEMORY( x ) FT_FACE( x )->memory
#define FT_FACE_STREAM( x ) FT_FACE( x )->stream
+#define FT_SIZE_FACE( x ) FT_SIZE( x )->face
+#define FT_SLOT_FACE( x ) FT_SLOT( x )->face
+
+#define FT_FACE_SLOT( x ) FT_FACE( x )->glyph
+#define FT_FACE_SIZE( x ) FT_FACE( x )->size
+
/**************************************************************************
*
diff --git a/include/freetype/internal/ftpsprop.h b/include/freetype/internal/ftpsprop.h
index 4f11aa1..1d5b287 100644
--- a/include/freetype/internal/ftpsprop.h
+++ b/include/freetype/internal/ftpsprop.h
@@ -4,7 +4,7 @@
*
* Get and set properties of PostScript drivers (specification).
*
- * Copyright (C) 2017-2024 by
+ * Copyright (C) 2017-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/internal/ftrfork.h b/include/freetype/internal/ftrfork.h
index 05c1d6c..e964599 100644
--- a/include/freetype/internal/ftrfork.h
+++ b/include/freetype/internal/ftrfork.h
@@ -4,7 +4,7 @@
*
* Embedded resource forks accessor (specification).
*
- * Copyright (C) 2004-2024 by
+ * Copyright (C) 2004-2023 by
* Masatake YAMATO and Redhat K.K.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/internal/ftserv.h b/include/freetype/internal/ftserv.h
index 8c35dbd..1e85d6d 100644
--- a/include/freetype/internal/ftserv.h
+++ b/include/freetype/internal/ftserv.h
@@ -4,7 +4,7 @@
*
* The FreeType services (specification only).
*
- * Copyright (C) 2003-2024 by
+ * Copyright (C) 2003-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/internal/ftstream.h b/include/freetype/internal/ftstream.h
index fd52f76..88e1928 100644
--- a/include/freetype/internal/ftstream.h
+++ b/include/freetype/internal/ftstream.h
@@ -4,7 +4,7 @@
*
* Stream handling (specification).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/internal/fttrace.h b/include/freetype/internal/fttrace.h
index 42595a2..319fe56 100644
--- a/include/freetype/internal/fttrace.h
+++ b/include/freetype/internal/fttrace.h
@@ -4,7 +4,7 @@
*
* Tracing handling (specification only).
*
- * Copyright (C) 2002-2024 by
+ * Copyright (C) 2002-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -64,7 +64,6 @@
FT_TRACE_DEF( ttcmap ) /* charmap handler (ttcmap.c) */
FT_TRACE_DEF( ttcolr ) /* glyph layer table (ttcolr.c) */
FT_TRACE_DEF( ttcpal ) /* color palette table (ttcpal.c) */
-FT_TRACE_DEF( ttgpos ) /* GPOS handler (ttgpos.c) */
FT_TRACE_DEF( ttsvg ) /* OpenType SVG table (ttsvg.c) */
FT_TRACE_DEF( ttkern ) /* kerning handler (ttkern.c) */
FT_TRACE_DEF( ttload ) /* basic TrueType tables (ttload.c) */
diff --git a/include/freetype/internal/ftvalid.h b/include/freetype/internal/ftvalid.h
index a1312f2..e98ee4e 100644
--- a/include/freetype/internal/ftvalid.h
+++ b/include/freetype/internal/ftvalid.h
@@ -4,7 +4,7 @@
*
* FreeType validation support (specification).
*
- * Copyright (C) 2004-2024 by
+ * Copyright (C) 2004-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/internal/psaux.h b/include/freetype/internal/psaux.h
index 745d2cb..dfb1987 100644
--- a/include/freetype/internal/psaux.h
+++ b/include/freetype/internal/psaux.h
@@ -5,7 +5,7 @@
* Auxiliary functions and data structures related to PostScript fonts
* (specification).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -225,7 +225,6 @@
typedef enum T1_FieldLocation_
{
- T1_FIELD_LOCATION_NONE = 0,
T1_FIELD_LOCATION_CID_INFO,
T1_FIELD_LOCATION_FONT_DICT,
T1_FIELD_LOCATION_FONT_EXTRA,
@@ -250,7 +249,6 @@
/* structure type used to model object fields */
typedef struct T1_FieldRec_
{
- FT_UInt len; /* field identifier length */
const char* ident; /* field identifier */
T1_FieldLocation location;
T1_FieldType type; /* type of field */
@@ -275,9 +273,8 @@
#define T1_NEW_SIMPLE_FIELD( _ident, _type, _fname, _dict ) \
{ \
- sizeof ( _ident ) - 1, \
_ident, T1CODE, _type, \
- NULL, \
+ 0, \
FT_FIELD_OFFSET( _fname ), \
FT_FIELD_SIZE( _fname ), \
0, 0, \
@@ -286,7 +283,6 @@
#define T1_NEW_CALLBACK_FIELD( _ident, _reader, _dict ) \
{ \
- sizeof ( _ident ) - 1, \
_ident, T1CODE, T1_FIELD_TYPE_CALLBACK, \
(T1_Field_ParseFunc)_reader, \
0, 0, \
@@ -296,9 +292,8 @@
#define T1_NEW_TABLE_FIELD( _ident, _type, _fname, _max, _dict ) \
{ \
- sizeof ( _ident ) - 1, \
_ident, T1CODE, _type, \
- NULL, \
+ 0, \
FT_FIELD_OFFSET( _fname ), \
FT_FIELD_SIZE_DELTA( _fname ), \
_max, \
@@ -308,9 +303,8 @@
#define T1_NEW_TABLE_FIELD2( _ident, _type, _fname, _max, _dict ) \
{ \
- sizeof ( _ident ) - 1, \
_ident, T1CODE, _type, \
- NULL, \
+ 0, \
FT_FIELD_OFFSET( _fname ), \
FT_FIELD_SIZE_DELTA( _fname ), \
_max, 0, \
@@ -360,13 +354,6 @@
#define T1_FIELD_CALLBACK( _ident, _name, _dict ) \
T1_NEW_CALLBACK_FIELD( _ident, _name, _dict )
-#define T1_FIELD_ZERO \
- { \
- 0, \
- NULL, T1_FIELD_LOCATION_NONE, T1_FIELD_TYPE_NONE, \
- NULL, 0, 0, 0, 0, 0 \
- }
-
/*************************************************************************/
/*************************************************************************/
diff --git a/include/freetype/internal/pshints.h b/include/freetype/internal/pshints.h
index dba6c73..ededc4c 100644
--- a/include/freetype/internal/pshints.h
+++ b/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-2024 by
+ * Copyright (C) 2001-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/internal/services/svbdf.h b/include/freetype/internal/services/svbdf.h
index 89e9c2e..bf0c1dc 100644
--- a/include/freetype/internal/services/svbdf.h
+++ b/include/freetype/internal/services/svbdf.h
@@ -4,7 +4,7 @@
*
* The FreeType BDF services (specification).
*
- * Copyright (C) 2003-2024 by
+ * Copyright (C) 2003-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/internal/services/svcfftl.h b/include/freetype/internal/services/svcfftl.h
index 3cb483c..4a20498 100644
--- a/include/freetype/internal/services/svcfftl.h
+++ b/include/freetype/internal/services/svcfftl.h
@@ -4,7 +4,7 @@
*
* The FreeType CFF tables loader service (specification).
*
- * Copyright (C) 2017-2024 by
+ * Copyright (C) 2017-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/internal/services/svcid.h b/include/freetype/internal/services/svcid.h
index 8362cb8..06d0cb8 100644
--- a/include/freetype/internal/services/svcid.h
+++ b/include/freetype/internal/services/svcid.h
@@ -4,7 +4,7 @@
*
* The FreeType CID font services (specification).
*
- * Copyright (C) 2007-2024 by
+ * Copyright (C) 2007-2023 by
* Derek Clegg and Michael Toftdal.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/internal/services/svfntfmt.h b/include/freetype/internal/services/svfntfmt.h
index 6b837e7..bc45e80 100644
--- a/include/freetype/internal/services/svfntfmt.h
+++ b/include/freetype/internal/services/svfntfmt.h
@@ -4,7 +4,7 @@
*
* The FreeType font format service (specification only).
*
- * Copyright (C) 2003-2024 by
+ * Copyright (C) 2003-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/internal/services/svgldict.h b/include/freetype/internal/services/svgldict.h
index 6126ec9..6437abf 100644
--- a/include/freetype/internal/services/svgldict.h
+++ b/include/freetype/internal/services/svgldict.h
@@ -4,7 +4,7 @@
*
* The FreeType glyph dictionary services (specification).
*
- * Copyright (C) 2003-2024 by
+ * Copyright (C) 2003-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/internal/services/svgxval.h b/include/freetype/internal/services/svgxval.h
index 29cf552..31016af 100644
--- a/include/freetype/internal/services/svgxval.h
+++ b/include/freetype/internal/services/svgxval.h
@@ -4,7 +4,7 @@
*
* FreeType API for validating TrueTypeGX/AAT tables (specification).
*
- * Copyright (C) 2004-2024 by
+ * Copyright (C) 2004-2023 by
* Masatake YAMATO, Red Hat K.K.,
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
diff --git a/include/freetype/internal/services/svkern.h b/include/freetype/internal/services/svkern.h
index ac1bc30..bcabbc3 100644
--- a/include/freetype/internal/services/svkern.h
+++ b/include/freetype/internal/services/svkern.h
@@ -4,7 +4,7 @@
*
* The FreeType Kerning service (specification).
*
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/internal/services/svmetric.h b/include/freetype/internal/services/svmetric.h
index 8b3563b..167617e 100644
--- a/include/freetype/internal/services/svmetric.h
+++ b/include/freetype/internal/services/svmetric.h
@@ -4,7 +4,7 @@
*
* The FreeType services for metrics variations (specification).
*
- * Copyright (C) 2016-2024 by
+ * Copyright (C) 2016-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/internal/services/svmm.h b/include/freetype/internal/services/svmm.h
index 5288fad..7e76ab8 100644
--- a/include/freetype/internal/services/svmm.h
+++ b/include/freetype/internal/services/svmm.h
@@ -4,7 +4,7 @@
*
* The FreeType Multiple Masters and GX var services (specification).
*
- * Copyright (C) 2003-2024 by
+ * Copyright (C) 2003-2023 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/include/freetype/internal/services/svotval.h b/include/freetype/internal/services/svotval.h
index 7aea7ec..a4683cd 100644
--- a/include/freetype/internal/services/svotval.h
+++ b/include/freetype/internal/services/svotval.h
@@ -4,7 +4,7 @@
*
* The FreeType OpenType validation service (specification).
*
- * Copyright (C) 2004-2024 by
+ * Copyright (C) 2004-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/internal/services/svpfr.h b/include/freetype/internal/services/svpfr.h
index b2fac6d..fd189c7 100644
--- a/include/freetype/internal/services/svpfr.h
+++ b/include/freetype/internal/services/svpfr.h
@@ -4,7 +4,7 @@
*
* Internal PFR service functions (specification).
*
- * Copyright (C) 2003-2024 by
+ * Copyright (C) 2003-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/internal/services/svpostnm.h b/include/freetype/internal/services/svpostnm.h
index d19f3ad..2b8f6df 100644
--- a/include/freetype/internal/services/svpostnm.h
+++ b/include/freetype/internal/services/svpostnm.h
@@ -4,7 +4,7 @@
*
* The FreeType PostScript name services (specification).
*
- * Copyright (C) 2003-2024 by
+ * Copyright (C) 2003-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/internal/services/svprop.h b/include/freetype/internal/services/svprop.h
index ba39c0d..932ce32 100644
--- a/include/freetype/internal/services/svprop.h
+++ b/include/freetype/internal/services/svprop.h
@@ -4,7 +4,7 @@
*
* The FreeType property service (specification).
*
- * Copyright (C) 2012-2024 by
+ * Copyright (C) 2012-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/internal/services/svpscmap.h b/include/freetype/internal/services/svpscmap.h
index d4908ee..6e599f3 100644
--- a/include/freetype/internal/services/svpscmap.h
+++ b/include/freetype/internal/services/svpscmap.h
@@ -4,7 +4,7 @@
*
* The FreeType PostScript charmap service (specification).
*
- * Copyright (C) 2003-2024 by
+ * Copyright (C) 2003-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/internal/services/svpsinfo.h b/include/freetype/internal/services/svpsinfo.h
index 2aadcdd..09c4cdc 100644
--- a/include/freetype/internal/services/svpsinfo.h
+++ b/include/freetype/internal/services/svpsinfo.h
@@ -4,7 +4,7 @@
*
* The FreeType PostScript info service (specification).
*
- * Copyright (C) 2003-2024 by
+ * Copyright (C) 2003-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/internal/services/svsfnt.h b/include/freetype/internal/services/svsfnt.h
index 9e0f4ff..f98df2e 100644
--- a/include/freetype/internal/services/svsfnt.h
+++ b/include/freetype/internal/services/svsfnt.h
@@ -4,7 +4,7 @@
*
* The FreeType SFNT table loading service (specification).
*
- * Copyright (C) 2003-2024 by
+ * Copyright (C) 2003-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/internal/services/svttcmap.h b/include/freetype/internal/services/svttcmap.h
index 250886b..5f9eb02 100644
--- a/include/freetype/internal/services/svttcmap.h
+++ b/include/freetype/internal/services/svttcmap.h
@@ -4,7 +4,7 @@
*
* The FreeType TrueType/sfnt cmap extra information service.
*
- * Copyright (C) 2003-2024 by
+ * Copyright (C) 2003-2023 by
* Masatake YAMATO, Redhat K.K.,
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
diff --git a/include/freetype/internal/services/svtteng.h b/include/freetype/internal/services/svtteng.h
index 1496752..ad577cb 100644
--- a/include/freetype/internal/services/svtteng.h
+++ b/include/freetype/internal/services/svtteng.h
@@ -4,7 +4,7 @@
*
* The FreeType TrueType engine query service (specification).
*
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/internal/services/svttglyf.h b/include/freetype/internal/services/svttglyf.h
index f190b39..ca6fff7 100644
--- a/include/freetype/internal/services/svttglyf.h
+++ b/include/freetype/internal/services/svttglyf.h
@@ -4,7 +4,7 @@
*
* The FreeType TrueType glyph service.
*
- * Copyright (C) 2007-2024 by
+ * Copyright (C) 2007-2023 by
* David Turner.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/internal/services/svwinfnt.h b/include/freetype/internal/services/svwinfnt.h
index 49f3fb7..002923f 100644
--- a/include/freetype/internal/services/svwinfnt.h
+++ b/include/freetype/internal/services/svwinfnt.h
@@ -4,7 +4,7 @@
*
* The FreeType Windows FNT/FONT service (specification).
*
- * Copyright (C) 2003-2024 by
+ * Copyright (C) 2003-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/internal/sfnt.h b/include/freetype/internal/sfnt.h
index 35e4e73..a2d4e15 100644
--- a/include/freetype/internal/sfnt.h
+++ b/include/freetype/internal/sfnt.h
@@ -4,7 +4,7 @@
*
* High-level 'sfnt' driver interface (specification).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -924,7 +924,6 @@
/* this field was called `load_kerning' up to version 2.1.10 */
TT_Load_Table_Func load_kern;
- TT_Load_Table_Func load_gpos;
TT_Load_Table_Func load_gasp;
TT_Load_Table_Func load_pclt;
@@ -945,8 +944,6 @@
/* new elements introduced after version 2.1.10 */
- TT_Face_GetKerningFunc get_gpos_kerning;
-
/* load the font directory, i.e., the offset table and */
/* the table directory */
TT_Load_Table_Func load_font_dir;
@@ -1005,7 +1002,6 @@
load_name_, \
free_name_, \
load_kern_, \
- load_gpos_, \
load_gasp_, \
load_pclt_, \
load_bhed_, \
@@ -1013,7 +1009,6 @@
get_psname_, \
free_psnames_, \
get_kerning_, \
- get_gpos_kerning_, \
load_font_dir_, \
load_hmtx_, \
load_eblc_, \
@@ -1055,7 +1050,6 @@
load_name_, \
free_name_, \
load_kern_, \
- load_gpos_, \
load_gasp_, \
load_pclt_, \
load_bhed_, \
@@ -1063,7 +1057,6 @@
get_psname_, \
free_psnames_, \
get_kerning_, \
- get_gpos_kerning_, \
load_font_dir_, \
load_hmtx_, \
load_eblc_, \
diff --git a/include/freetype/internal/svginterface.h b/include/freetype/internal/svginterface.h
index 68c99ef..f464b2c 100644
--- a/include/freetype/internal/svginterface.h
+++ b/include/freetype/internal/svginterface.h
@@ -4,7 +4,7 @@
*
* Interface of ot-svg module (specification only).
*
- * Copyright (C) 2022-2024 by
+ * Copyright (C) 2022-2023 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/include/freetype/internal/t1types.h b/include/freetype/internal/t1types.h
index 1821ae5..b9c9439 100644
--- a/include/freetype/internal/t1types.h
+++ b/include/freetype/internal/t1types.h
@@ -5,7 +5,7 @@
* Basic Type1/Type2 type definitions and interface (specification
* only).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -21,7 +21,7 @@
#define T1TYPES_H_
-#include <freetype/ftmm.h>
+#include <freetype/t1tables.h>
#include <freetype/internal/pshints.h>
#include <freetype/internal/ftserv.h>
#include <freetype/internal/fthash.h>
@@ -137,54 +137,6 @@
} CID_SubrsRec, *CID_Subrs;
- /* this structure is used to store the BlendDesignMap entry for an axis */
- typedef struct PS_DesignMap_
- {
- FT_Byte num_points;
- FT_Long* design_points;
- FT_Fixed* blend_points;
-
- } PS_DesignMapRec, *PS_DesignMap;
-
- /* backward compatible definition */
- typedef PS_DesignMapRec T1_DesignMap;
-
-
- typedef struct PS_BlendRec_
- {
- FT_UInt num_designs;
- FT_UInt num_axis;
-
- FT_String* axis_names[T1_MAX_MM_AXIS];
- FT_Fixed* design_pos[T1_MAX_MM_DESIGNS];
- PS_DesignMapRec design_map[T1_MAX_MM_AXIS];
-
- FT_Fixed* weight_vector;
- FT_Fixed* default_weight_vector;
-
- PS_FontInfo font_infos[T1_MAX_MM_DESIGNS + 1];
- PS_Private privates [T1_MAX_MM_DESIGNS + 1];
-
- FT_ULong blend_bitflags;
-
- FT_BBox* bboxes [T1_MAX_MM_DESIGNS + 1];
-
- /* since 2.3.0 */
-
- /* undocumented, optional: the default design instance; */
- /* corresponds to default_weight_vector -- */
- /* num_default_design_vector == 0 means it is not present */
- /* in the font and associated metrics files */
- FT_UInt default_design_vector[T1_MAX_MM_DESIGNS];
- FT_UInt num_default_design_vector;
-
- } PS_BlendRec, *PS_Blend;
-
-
- /* backward compatible definition */
- typedef PS_BlendRec T1_Blend;
-
-
/*************************************************************************/
/*************************************************************************/
/*************************************************************************/
diff --git a/include/freetype/internal/tttypes.h b/include/freetype/internal/tttypes.h
index 7053e65..b9788c7 100644
--- a/include/freetype/internal/tttypes.h
+++ b/include/freetype/internal/tttypes.h
@@ -5,7 +5,7 @@
* Basic SFNT/TrueType type definitions and interface (specification
* only).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -24,7 +24,6 @@
#include <freetype/tttables.h>
#include <freetype/internal/ftobjs.h>
#include <freetype/ftcolor.h>
-#include "freetype/fttypes.h"
#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
#include <freetype/ftmm.h>
@@ -1582,11 +1581,6 @@
FT_UInt32 kern_avail_bits;
FT_UInt32 kern_order_bits;
-#ifdef TT_CONFIG_OPTION_GPOS_KERNING
- FT_Byte* gpos_table;
- FT_Bool gpos_kerning_available;
-#endif
-
#ifdef TT_CONFIG_OPTION_BDF
TT_BDFRec bdf;
#endif /* TT_CONFIG_OPTION_BDF */
@@ -1655,9 +1649,9 @@
{
FT_Memory memory;
FT_UShort max_points;
- FT_UShort max_contours;
+ FT_Short max_contours;
FT_UShort n_points; /* number of points in zone */
- FT_UShort n_contours; /* number of contours */
+ FT_Short n_contours; /* number of contours */
FT_Vector* org; /* original point coordinates */
FT_Vector* cur; /* current point coordinates */
diff --git a/include/freetype/internal/wofftypes.h b/include/freetype/internal/wofftypes.h
index 4a169d1..0c1d8ee 100644
--- a/include/freetype/internal/wofftypes.h
+++ b/include/freetype/internal/wofftypes.h
@@ -5,7 +5,7 @@
* Basic WOFF/WOFF2 type definitions and interface (specification
* only).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/otsvg.h b/include/freetype/otsvg.h
index 9d35693..bfe9a6a 100644
--- a/include/freetype/otsvg.h
+++ b/include/freetype/otsvg.h
@@ -4,7 +4,7 @@
*
* Interface for OT-SVG support related things (specification).
*
- * Copyright (C) 2022-2024 by
+ * Copyright (C) 2022-2023 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/include/freetype/t1tables.h b/include/freetype/t1tables.h
index fbd558a..1aecfbb 100644
--- a/include/freetype/t1tables.h
+++ b/include/freetype/t1tables.h
@@ -5,7 +5,7 @@
* Basic Type 1/Type 2 tables definitions and interface (specification
* only).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -269,6 +269,64 @@
/* */
+ /* maximum number of Multiple Masters designs, as defined in the spec */
+#define T1_MAX_MM_DESIGNS 16
+
+ /* maximum number of Multiple Masters axes, as defined in the spec */
+#define T1_MAX_MM_AXIS 4
+
+ /* maximum number of elements in a design map */
+#define T1_MAX_MM_MAP_POINTS 20
+
+
+ /* this structure is used to store the BlendDesignMap entry for an axis */
+ typedef struct PS_DesignMap_
+ {
+ FT_Byte num_points;
+ FT_Long* design_points;
+ FT_Fixed* blend_points;
+
+ } PS_DesignMapRec, *PS_DesignMap;
+
+ /* backward compatible definition */
+ typedef PS_DesignMapRec T1_DesignMap;
+
+
+ typedef struct PS_BlendRec_
+ {
+ FT_UInt num_designs;
+ FT_UInt num_axis;
+
+ FT_String* axis_names[T1_MAX_MM_AXIS];
+ FT_Fixed* design_pos[T1_MAX_MM_DESIGNS];
+ PS_DesignMapRec design_map[T1_MAX_MM_AXIS];
+
+ FT_Fixed* weight_vector;
+ FT_Fixed* default_weight_vector;
+
+ PS_FontInfo font_infos[T1_MAX_MM_DESIGNS + 1];
+ PS_Private privates [T1_MAX_MM_DESIGNS + 1];
+
+ FT_ULong blend_bitflags;
+
+ FT_BBox* bboxes [T1_MAX_MM_DESIGNS + 1];
+
+ /* since 2.3.0 */
+
+ /* undocumented, optional: the default design instance; */
+ /* corresponds to default_weight_vector -- */
+ /* num_default_design_vector == 0 means it is not present */
+ /* in the font and associated metrics files */
+ FT_UInt default_design_vector[T1_MAX_MM_DESIGNS];
+ FT_UInt num_default_design_vector;
+
+ } PS_BlendRec, *PS_Blend;
+
+
+ /* backward compatible definition */
+ typedef PS_BlendRec T1_Blend;
+
+
/**************************************************************************
*
* @struct:
diff --git a/include/freetype/ttnameid.h b/include/freetype/ttnameid.h
index d5d470e..e31c68b 100644
--- a/include/freetype/ttnameid.h
+++ b/include/freetype/ttnameid.h
@@ -4,7 +4,7 @@
*
* TrueType name ID definitions (specification only).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/freetype/tttables.h b/include/freetype/tttables.h
index 2cf0ff1..a9f60e7 100644
--- a/include/freetype/tttables.h
+++ b/include/freetype/tttables.h
@@ -5,7 +5,7 @@
* Basic SFNT/TrueType tables definitions and interface
* (specification only).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -838,9 +838,8 @@
* The target charmap.
*
* @return:
- * The format of `charmap`. If `charmap` doesn't belong to an SFNT face
- * (including the synthetic Unicode charmap sometimes created by
- * FreeType), return -1.
+ * The format of `charmap`. If `charmap` doesn't belong to an SFNT face,
+ * return -1.
*/
FT_EXPORT( FT_Long )
FT_Get_CMap_Format( FT_CharMap charmap );
diff --git a/include/freetype/tttags.h b/include/freetype/tttags.h
index da0af5d..9bf4fca 100644
--- a/include/freetype/tttags.h
+++ b/include/freetype/tttags.h
@@ -4,7 +4,7 @@
*
* Tags for TrueType and OpenType tables (specification only).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/include/ft2build.h b/include/ft2build.h
index d3d7685..58491ce 100644
--- a/include/ft2build.h
+++ b/include/ft2build.h
@@ -4,7 +4,7 @@
*
* FreeType 2 build and setup macros.
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/meson.build b/meson.build
index bedf132..f81de3e 100644
--- a/meson.build
+++ b/meson.build
@@ -2,7 +2,7 @@
# Meson project file for FreeType 2
#
-# Copyright (C) 2020-2024 by
+# Copyright (C) 2020-2023 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
@@ -54,9 +54,6 @@
ft2_defines = []
-freetype_aclocaldir = join_paths(get_option('datadir'), 'aclocal')
-
-
# Generate a custom `ftmodule.h` version based on the content of
# `modules.cfg`.
@@ -234,7 +231,7 @@
# value from the environment, when this is supported. A smaller refactor
# might make these platform-specific files much smaller, and could be moved
# into `ftsystem.c` as well.
-
+#
if host_machine.system() == 'windows'
winmod = import('windows')
ft2_sources += [
@@ -254,7 +251,7 @@
#
# OSX sets the compatibility_version (aka libtools version) differently from
# the library name.
-
+#
if host_machine.system() == 'darwin'
# maintain compatibility with autotools on macOS
common_ldflags = [
@@ -269,13 +266,13 @@
process_header_command = [python_exe,
files('builds/meson/process_ftoption_h.py'),
'@INPUT@', '--output=@OUTPUT@']
-
ftoption_command = process_header_command
-# External GZip support.
+
+# external GZip support
zlib_option = get_option('zlib')
-# Backward-compatible aliases.
+# Backwards-compatible aliases.
if zlib_option == 'disabled'
zlib_option = 'none'
elif zlib_option == 'enabled'
@@ -318,13 +315,9 @@
assert(false, 'Invalid zlib option ' + zlib_option)
endif
-# BZip2 support.
-bzip2_dep = dependency('bzip2', required: false)
-if not bzip2_dep.found()
- bzip2_dep = cc.find_library('bz2',
- has_headers: ['bzlib.h'],
- required: get_option('bzip2'))
-endif
+# BZip2 support
+bzip2_dep = cc.find_library('bz2',
+ required: get_option('bzip2'))
if bzip2_dep.found()
ftoption_command += ['--enable=FT_CONFIG_OPTION_USE_BZIP2']
@@ -332,7 +325,7 @@
ft2_deps += [bzip2_dep]
endif
-# PNG support.
+# PNG support
libpng_dep = dependency('libpng',
required: get_option('png'),
fallback: 'libpng')
@@ -342,7 +335,7 @@
ft2_deps += [libpng_dep]
endif
-# Harfbuzz support.
+# Harfbuzz support
harfbuzz_dep = dependency('harfbuzz',
version: '>= 2.0.0',
required: get_option('harfbuzz'),
@@ -353,7 +346,7 @@
ft2_deps += [harfbuzz_dep]
endif
-# Brotli decompression support.
+# Brotli decompression support
brotli_dep = dependency('libbrotlidec',
required: get_option('brotli'))
@@ -381,7 +374,6 @@
# Generate `ftconfig.h`.
ftconfig_command = process_header_command
-
if has_unistd_h
ftconfig_command += '--enable=HAVE_UNISTD_H'
endif
@@ -415,8 +407,7 @@
)
-# To be used by other projects including this one via `subproject`.
-
+# To be used by other projects including this one through `subproject`.
freetype_dep = declare_dependency(
include_directories: ft2_includes,
link_with: ft2_lib,
@@ -425,9 +416,9 @@
meson.override_dependency('freetype2', freetype_dep)
-# NOTE: Using both `install_dir` and `subdir` doesn't seem to work
-# below, i.e., the `subdir` value seems to be ignored, contrary to
-# examples in the Meson documentation.
+# NOTE: Using both `install_dir` and `subdir` doesn't seem to work below,
+# i.e., the subdir value seems to be ignored, contrary to examples in the
+# Meson documentation.
install_headers('include/ft2build.h',
install_dir: freetype_includedir)
install_headers(ft2_public_headers,
@@ -436,10 +427,6 @@
install_dir: join_paths(freetype_includedir, 'freetype/config'))
-install_data('builds/unix/freetype2.m4',
- install_dir: freetype_aclocaldir)
-
-
pkgconfig = import('pkgconfig')
pkgconfig.generate(ft2_lib,
@@ -455,11 +442,9 @@
subdir('tests')
endif
-
# NOTE: Unlike the old `make refdoc` command, this generates the
# documentation under `$BUILD/docs/` since Meson doesn't support modifying
# the source root directory (which is a good thing).
-
gen_docs = custom_target('freetype2 reference documentation',
output: 'docs',
input: ft2_public_headers + ft2_config_headers,
diff --git a/meson_options.txt b/meson_options.txt
index ce035b9..e4ad50c 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -2,7 +2,7 @@
# meson_options.txt
#
-# Copyright (C) 2020-2024 by
+# Copyright (C) 2020-2023 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/modules.cfg b/modules.cfg
index 948d219..5b6c9b5 100644
--- a/modules.cfg
+++ b/modules.cfg
@@ -1,6 +1,6 @@
# modules.cfg
#
-# Copyright (C) 2005-2024 by
+# Copyright (C) 2005-2023 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/src/autofit/afblue.c b/src/autofit/afblue.c
index ea83969..d7655b9 100644
--- a/src/autofit/afblue.c
+++ b/src/autofit/afblue.c
@@ -7,7 +7,7 @@
*
* Auto-fitter data for blue strings (body).
*
- * Copyright (C) 2013-2024 by
+ * Copyright (C) 2013-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/autofit/afblue.cin b/src/autofit/afblue.cin
index d2270fa..d561c50 100644
--- a/src/autofit/afblue.cin
+++ b/src/autofit/afblue.cin
@@ -4,7 +4,7 @@
*
* Auto-fitter data for blue strings (body).
*
- * Copyright (C) 2013-2024 by
+ * Copyright (C) 2013-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/autofit/afblue.dat b/src/autofit/afblue.dat
index 88bab26..8299baa 100644
--- a/src/autofit/afblue.dat
+++ b/src/autofit/afblue.dat
@@ -2,7 +2,7 @@
//
// Auto-fitter data for blue strings.
//
-// Copyright (C) 2013-2024 by
+// Copyright (C) 2013-2023 by
// David Turner, Robert Wilhelm, and Werner Lemberg.
//
// This file is part of the FreeType project, and may only be used,
diff --git a/src/autofit/afblue.h b/src/autofit/afblue.h
index 2aa9d09..76f2f47 100644
--- a/src/autofit/afblue.h
+++ b/src/autofit/afblue.h
@@ -7,7 +7,7 @@
*
* Auto-fitter data for blue strings (specification).
*
- * Copyright (C) 2013-2024 by
+ * Copyright (C) 2013-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/autofit/afblue.hin b/src/autofit/afblue.hin
index 3803150..6a31298 100644
--- a/src/autofit/afblue.hin
+++ b/src/autofit/afblue.hin
@@ -4,7 +4,7 @@
*
* Auto-fitter data for blue strings (specification).
*
- * Copyright (C) 2013-2024 by
+ * Copyright (C) 2013-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/autofit/afcjk.c b/src/autofit/afcjk.c
index 869b604..f414289 100644
--- a/src/autofit/afcjk.c
+++ b/src/autofit/afcjk.c
@@ -4,7 +4,7 @@
*
* Auto-fitter hinting routines for CJK writing system (body).
*
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/autofit/afcjk.h b/src/autofit/afcjk.h
index bc5aaf1..f380ef6 100644
--- a/src/autofit/afcjk.h
+++ b/src/autofit/afcjk.h
@@ -4,7 +4,7 @@
*
* Auto-fitter hinting routines for CJK writing system (specification).
*
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -84,7 +84,7 @@
/* used for horizontal metrics too for CJK */
FT_Bool control_overshoot;
FT_UInt blue_count;
- AF_CJKBlueRec blues[AF_BLUE_STRINGSET_MAX_LEN];
+ AF_CJKBlueRec blues[AF_BLUE_STRINGSET_MAX];
FT_Fixed org_scale;
FT_Pos org_delta;
diff --git a/src/autofit/afcover.h b/src/autofit/afcover.h
index 7980cf2..102ed42 100644
--- a/src/autofit/afcover.h
+++ b/src/autofit/afcover.h
@@ -4,7 +4,7 @@
*
* Auto-fitter coverages (specification only).
*
- * Copyright (C) 2013-2024 by
+ * Copyright (C) 2013-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/autofit/afdummy.c b/src/autofit/afdummy.c
index ad667d2..a4629b5 100644
--- a/src/autofit/afdummy.c
+++ b/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-2024 by
+ * Copyright (C) 2003-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/autofit/afdummy.h b/src/autofit/afdummy.h
index 613c2f8..a7af3f6 100644
--- a/src/autofit/afdummy.h
+++ b/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-2024 by
+ * Copyright (C) 2003-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/autofit/aferrors.h b/src/autofit/aferrors.h
index ae584ff..88faf05 100644
--- a/src/autofit/aferrors.h
+++ b/src/autofit/aferrors.h
@@ -4,7 +4,7 @@
*
* Autofitter error codes (specification only).
*
- * Copyright (C) 2005-2024 by
+ * Copyright (C) 2005-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/autofit/afglobal.c b/src/autofit/afglobal.c
index b7403fa..b195757 100644
--- a/src/autofit/afglobal.c
+++ b/src/autofit/afglobal.c
@@ -4,7 +4,7 @@
*
* Auto-fitter routines to compute global hinting values (body).
*
- * Copyright (C) 2003-2024 by
+ * Copyright (C) 2003-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/autofit/afglobal.h b/src/autofit/afglobal.h
index ddb54c8..66170e4 100644
--- a/src/autofit/afglobal.h
+++ b/src/autofit/afglobal.h
@@ -5,7 +5,7 @@
* Auto-fitter routines to compute global hinting values
* (specification).
*
- * Copyright (C) 2003-2024 by
+ * Copyright (C) 2003-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/autofit/afhints.c b/src/autofit/afhints.c
index 96ffe34..e4a378f 100644
--- a/src/autofit/afhints.c
+++ b/src/autofit/afhints.c
@@ -4,7 +4,7 @@
*
* Auto-fitter hinting routines (body).
*
- * Copyright (C) 2003-2024 by
+ * Copyright (C) 2003-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -979,8 +979,8 @@
/* compute coordinates & Bezier flags, next and prev */
{
FT_Vector* vec = outline->points;
- FT_Byte* tag = outline->tags;
- FT_UShort endpoint = outline->contours[0];
+ char* tag = outline->tags;
+ FT_Short endpoint = outline->contours[0];
AF_Point end = points + endpoint;
AF_Point prev = end;
FT_Int contour_index = 0;
@@ -1046,16 +1046,16 @@
/* set up the contours array */
{
- AF_Point* contour = hints->contours;
- AF_Point* contour_limit = contour + hints->num_contours;
- FT_UShort* end = outline->contours;
- FT_Int idx = 0;
+ AF_Point* contour = hints->contours;
+ AF_Point* contour_limit = contour + hints->num_contours;
+ short* end = outline->contours;
+ short idx = 0;
for ( ; contour < contour_limit; contour++, end++ )
{
contour[0] = points + idx;
- idx = *end + 1;
+ idx = (short)( end[0] + 1 );
}
}
@@ -1292,7 +1292,7 @@
AF_Point point = hints->points;
AF_Point limit = point + hints->num_points;
FT_Vector* vec = outline->points;
- FT_Byte* tag = outline->tags;
+ char* tag = outline->tags;
for ( ; point < limit; point++, vec++, tag++ )
diff --git a/src/autofit/afhints.h b/src/autofit/afhints.h
index 76fe830..d1cf952 100644
--- a/src/autofit/afhints.h
+++ b/src/autofit/afhints.h
@@ -4,7 +4,7 @@
*
* Auto-fitter hinting routines (specification).
*
- * Copyright (C) 2003-2024 by
+ * Copyright (C) 2003-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/autofit/afindic.c b/src/autofit/afindic.c
index c6d23ef..7fb12c6 100644
--- a/src/autofit/afindic.c
+++ b/src/autofit/afindic.c
@@ -4,7 +4,7 @@
*
* Auto-fitter hinting routines for Indic writing system (body).
*
- * Copyright (C) 2007-2024 by
+ * Copyright (C) 2007-2023 by
* Rahul Bhalerao <rahul.bhalerao@redhat.com>, <b.rahul.pm@gmail.com>.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/autofit/afindic.h b/src/autofit/afindic.h
index a7f73f2..3eb67f6 100644
--- a/src/autofit/afindic.h
+++ b/src/autofit/afindic.h
@@ -5,7 +5,7 @@
* Auto-fitter hinting routines for Indic writing system
* (specification).
*
- * Copyright (C) 2007-2024 by
+ * Copyright (C) 2007-2023 by
* Rahul Bhalerao <rahul.bhalerao@redhat.com>, <b.rahul.pm@gmail.com>.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/autofit/aflatin.c b/src/autofit/aflatin.c
index 89287f7..b86367a 100644
--- a/src/autofit/aflatin.c
+++ b/src/autofit/aflatin.c
@@ -4,7 +4,7 @@
*
* Auto-fitter hinting routines for latin writing system (body).
*
- * Copyright (C) 2003-2024 by
+ * Copyright (C) 2003-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -981,7 +981,7 @@
/* `ref' and `shoot' values of two blue zones must not overlap */
FT_UInt i;
- AF_LatinBlue blue_sorted[AF_BLUE_STRINGSET_MAX_LEN];
+ AF_LatinBlue blue_sorted[AF_BLUE_STRINGSET_MAX_LEN + 2];
for ( i = 0; i < axis->blue_count; i++ )
@@ -1263,9 +1263,10 @@
max_height = FT_MAX( max_height, -Axis->blues[nn].descender );
}
- dist = FT_MulFix( max_height, new_scale - scale );
+ dist = FT_ABS( FT_MulFix( max_height, new_scale - scale ) );
+ dist &= ~127;
- if ( -128 < dist && dist < 128 )
+ if ( dist == 0 )
{
FT_TRACE5(( "af_latin_metrics_scale_dim:"
" x height alignment (style `%s'):\n",
diff --git a/src/autofit/aflatin.h b/src/autofit/aflatin.h
index 54e5061..31aa91d 100644
--- a/src/autofit/aflatin.h
+++ b/src/autofit/aflatin.h
@@ -5,7 +5,7 @@
* Auto-fitter hinting routines for latin writing system
* (specification).
*
- * Copyright (C) 2003-2024 by
+ * Copyright (C) 2003-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -98,7 +98,7 @@
/* ignored for horizontal metrics */
FT_UInt blue_count;
- AF_LatinBlueRec blues[AF_BLUE_STRINGSET_MAX_LEN];
+ AF_LatinBlueRec blues[AF_BLUE_STRINGSET_MAX];
FT_Fixed org_scale;
FT_Pos org_delta;
diff --git a/src/autofit/afloader.c b/src/autofit/afloader.c
index af1d59a..7c47d56 100644
--- a/src/autofit/afloader.c
+++ b/src/autofit/afloader.c
@@ -4,7 +4,7 @@
*
* Auto-fitter glyph loading routines (body).
*
- * Copyright (C) 2003-2024 by
+ * Copyright (C) 2003-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/autofit/afloader.h b/src/autofit/afloader.h
index 99f0e15..e4e197e 100644
--- a/src/autofit/afloader.h
+++ b/src/autofit/afloader.h
@@ -4,7 +4,7 @@
*
* Auto-fitter glyph loading routines (specification).
*
- * Copyright (C) 2003-2024 by
+ * Copyright (C) 2003-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/autofit/afmodule.c b/src/autofit/afmodule.c
index 726f6ca..20a6b96 100644
--- a/src/autofit/afmodule.c
+++ b/src/autofit/afmodule.c
@@ -4,7 +4,7 @@
*
* Auto-fitter module implementation (body).
*
- * Copyright (C) 2003-2024 by
+ * Copyright (C) 2003-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -438,7 +438,7 @@
AF_Module module = (AF_Module)module_;
FT_Error error = FT_Err_Ok;
- FT_Memory memory = module->root.memory;
+ FT_Memory memory = module->root.library->memory;
#ifdef FT_DEBUG_AUTOFIT
diff --git a/src/autofit/afmodule.h b/src/autofit/afmodule.h
index 91a1abf..4b8b456 100644
--- a/src/autofit/afmodule.h
+++ b/src/autofit/afmodule.h
@@ -4,7 +4,7 @@
*
* Auto-fitter module implementation (specification).
*
- * Copyright (C) 2003-2024 by
+ * Copyright (C) 2003-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/autofit/afranges.c b/src/autofit/afranges.c
index 007b432..cfcaf34 100644
--- a/src/autofit/afranges.c
+++ b/src/autofit/afranges.c
@@ -4,7 +4,7 @@
*
* Auto-fitter Unicode script ranges (body).
*
- * Copyright (C) 2013-2024 by
+ * Copyright (C) 2013-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/autofit/afranges.h b/src/autofit/afranges.h
index 813b3ee..5775738 100644
--- a/src/autofit/afranges.h
+++ b/src/autofit/afranges.h
@@ -4,7 +4,7 @@
*
* Auto-fitter Unicode script ranges (specification).
*
- * Copyright (C) 2013-2024 by
+ * Copyright (C) 2013-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/autofit/afscript.h b/src/autofit/afscript.h
index 0a83d77..3a10193 100644
--- a/src/autofit/afscript.h
+++ b/src/autofit/afscript.h
@@ -4,7 +4,7 @@
*
* Auto-fitter scripts (specification only).
*
- * Copyright (C) 2013-2024 by
+ * Copyright (C) 2013-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/autofit/afshaper.c b/src/autofit/afshaper.c
index df0f46a..abc6f1d 100644
--- a/src/autofit/afshaper.c
+++ b/src/autofit/afshaper.c
@@ -4,7 +4,7 @@
*
* HarfBuzz interface for accessing OpenType features (body).
*
- * Copyright (C) 2013-2024 by
+ * Copyright (C) 2013-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/autofit/afshaper.h b/src/autofit/afshaper.h
index 2eb03bb..054a18f 100644
--- a/src/autofit/afshaper.h
+++ b/src/autofit/afshaper.h
@@ -4,7 +4,7 @@
*
* HarfBuzz interface for accessing OpenType features (specification).
*
- * Copyright (C) 2013-2024 by
+ * Copyright (C) 2013-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/autofit/afstyles.h b/src/autofit/afstyles.h
index 7a33f37..73ebef0 100644
--- a/src/autofit/afstyles.h
+++ b/src/autofit/afstyles.h
@@ -4,7 +4,7 @@
*
* Auto-fitter styles (specification only).
*
- * Copyright (C) 2013-2024 by
+ * Copyright (C) 2013-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/autofit/aftypes.h b/src/autofit/aftypes.h
index 27e4185..6615194 100644
--- a/src/autofit/aftypes.h
+++ b/src/autofit/aftypes.h
@@ -4,7 +4,7 @@
*
* Auto-fitter types (specification only).
*
- * Copyright (C) 2003-2024 by
+ * Copyright (C) 2003-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/autofit/afws-decl.h b/src/autofit/afws-decl.h
index b78745a..48c888a 100644
--- a/src/autofit/afws-decl.h
+++ b/src/autofit/afws-decl.h
@@ -4,7 +4,7 @@
*
* Auto-fitter writing system declarations (specification only).
*
- * Copyright (C) 2013-2024 by
+ * Copyright (C) 2013-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/autofit/afws-iter.h b/src/autofit/afws-iter.h
index c86d609..a0a686f 100644
--- a/src/autofit/afws-iter.h
+++ b/src/autofit/afws-iter.h
@@ -4,7 +4,7 @@
*
* Auto-fitter writing systems iterator (specification only).
*
- * Copyright (C) 2013-2024 by
+ * Copyright (C) 2013-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/autofit/autofit.c b/src/autofit/autofit.c
index de5ec7c..8bd609b 100644
--- a/src/autofit/autofit.c
+++ b/src/autofit/autofit.c
@@ -4,7 +4,7 @@
*
* Auto-fitter module (body).
*
- * Copyright (C) 2003-2024 by
+ * Copyright (C) 2003-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/autofit/module.mk b/src/autofit/module.mk
index dd6b407..95cb20a 100644
--- a/src/autofit/module.mk
+++ b/src/autofit/module.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 2003-2024 by
+# Copyright (C) 2003-2023 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/src/autofit/rules.mk b/src/autofit/rules.mk
index 682046f..a46ba3f 100644
--- a/src/autofit/rules.mk
+++ b/src/autofit/rules.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 2003-2024 by
+# Copyright (C) 2003-2023 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/src/base/ftadvanc.c b/src/base/ftadvanc.c
index 717f7d0..de25476 100644
--- a/src/base/ftadvanc.c
+++ b/src/base/ftadvanc.c
@@ -4,7 +4,7 @@
*
* Quick computation of advance widths (body).
*
- * Copyright (C) 2008-2024 by
+ * Copyright (C) 2008-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/base/ftbase.c b/src/base/ftbase.c
index 50805cc..156510f 100644
--- a/src/base/ftbase.c
+++ b/src/base/ftbase.c
@@ -4,7 +4,7 @@
*
* Single object library component (body only).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/base/ftbase.h b/src/base/ftbase.h
index 1d98b26..00790d3 100644
--- a/src/base/ftbase.h
+++ b/src/base/ftbase.h
@@ -4,7 +4,7 @@
*
* Private functions used in the `base' module (specification).
*
- * Copyright (C) 2008-2024 by
+ * Copyright (C) 2008-2023 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/src/base/ftbbox.c b/src/base/ftbbox.c
index d6aa5d5..385fea4 100644
--- a/src/base/ftbbox.c
+++ b/src/base/ftbbox.c
@@ -4,7 +4,7 @@
*
* FreeType bbox computation (body).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used
@@ -489,7 +489,7 @@
return FT_THROW( Invalid_Outline );
/* if outline is empty, return (0,0,0,0) */
- if ( outline->n_points == 0 || outline->n_contours == 0 )
+ if ( outline->n_points == 0 || outline->n_contours <= 0 )
{
abbox->xMin = abbox->xMax = 0;
abbox->yMin = abbox->yMax = 0;
diff --git a/src/base/ftbdf.c b/src/base/ftbdf.c
index d8e9fd7..f697c00 100644
--- a/src/base/ftbdf.c
+++ b/src/base/ftbdf.c
@@ -4,7 +4,7 @@
*
* FreeType API for accessing BDF-specific strings (body).
*
- * Copyright (C) 2002-2024 by
+ * Copyright (C) 2002-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/base/ftbitmap.c b/src/base/ftbitmap.c
index 4be1456..1c93648 100644
--- a/src/base/ftbitmap.c
+++ b/src/base/ftbitmap.c
@@ -4,7 +4,7 @@
*
* FreeType utility functions for bitmaps (body).
*
- * Copyright (C) 2004-2024 by
+ * Copyright (C) 2004-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/base/ftcalc.c b/src/base/ftcalc.c
index 92de09e..c5bc7e3 100644
--- a/src/base/ftcalc.c
+++ b/src/base/ftcalc.c
@@ -4,7 +4,7 @@
*
* Arithmetic computations (body).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -69,15 +69,13 @@
/* transfer sign, leaving a positive number; */
/* we need an unsigned value to safely negate INT_MIN (or LONG_MIN) */
-#define FT_MOVE_SIGN( utype, x, x_unsigned, s ) \
- FT_BEGIN_STMNT \
- if ( x < 0 ) \
- { \
- x_unsigned = 0U - (utype)x; \
- s = -s; \
- } \
- else \
- x_unsigned = (utype)x; \
+#define FT_MOVE_SIGN( x, x_unsigned, s ) \
+ FT_BEGIN_STMNT \
+ if ( x < 0 ) \
+ { \
+ x_unsigned = 0U - (x_unsigned); \
+ s = -s; \
+ } \
FT_END_STMNT
/* The following three functions are available regardless of whether */
@@ -181,9 +179,13 @@
FT_Long d_;
- FT_MOVE_SIGN( FT_UInt64, a_, a, s );
- FT_MOVE_SIGN( FT_UInt64, b_, b, s );
- FT_MOVE_SIGN( FT_UInt64, c_, c, s );
+ a = (FT_UInt64)a_;
+ b = (FT_UInt64)b_;
+ c = (FT_UInt64)c_;
+
+ FT_MOVE_SIGN( a_, a, s );
+ FT_MOVE_SIGN( b_, b, s );
+ FT_MOVE_SIGN( c_, c, s );
d = c > 0 ? ( a * b + ( c >> 1 ) ) / c
: 0x7FFFFFFFUL;
@@ -206,9 +208,13 @@
FT_Long d_;
- FT_MOVE_SIGN( FT_UInt64, a_, a, s );
- FT_MOVE_SIGN( FT_UInt64, b_, b, s );
- FT_MOVE_SIGN( FT_UInt64, c_, c, s );
+ a = (FT_UInt64)a_;
+ b = (FT_UInt64)b_;
+ c = (FT_UInt64)c_;
+
+ FT_MOVE_SIGN( a_, a, s );
+ FT_MOVE_SIGN( b_, b, s );
+ FT_MOVE_SIGN( c_, c, s );
d = c > 0 ? a * b / c
: 0x7FFFFFFFUL;
@@ -251,8 +257,11 @@
FT_Long q_;
- FT_MOVE_SIGN( FT_UInt64, a_, a, s );
- FT_MOVE_SIGN( FT_UInt64, b_, b, s );
+ a = (FT_UInt64)a_;
+ b = (FT_UInt64)b_;
+
+ FT_MOVE_SIGN( a_, a, s );
+ FT_MOVE_SIGN( b_, b, s );
q = b > 0 ? ( ( a << 16 ) + ( b >> 1 ) ) / b
: 0x7FFFFFFFUL;
@@ -413,9 +422,13 @@
/* XXX: this function does not allow 64-bit arguments */
- FT_MOVE_SIGN( FT_UInt32, a_, a, s );
- FT_MOVE_SIGN( FT_UInt32, b_, b, s );
- FT_MOVE_SIGN( FT_UInt32, c_, c, s );
+ a = (FT_UInt32)a_;
+ b = (FT_UInt32)b_;
+ c = (FT_UInt32)c_;
+
+ FT_MOVE_SIGN( a_, a, s );
+ FT_MOVE_SIGN( b_, b, s );
+ FT_MOVE_SIGN( c_, c, s );
if ( c == 0 )
a = 0x7FFFFFFFUL;
@@ -457,9 +470,13 @@
/* XXX: this function does not allow 64-bit arguments */
- FT_MOVE_SIGN( FT_UInt32, a_, a, s );
- FT_MOVE_SIGN( FT_UInt32, b_, b, s );
- FT_MOVE_SIGN( FT_UInt32, c_, c, s );
+ a = (FT_UInt32)a_;
+ b = (FT_UInt32)b_;
+ c = (FT_UInt32)c_;
+
+ FT_MOVE_SIGN( a_, a, s );
+ FT_MOVE_SIGN( b_, b, s );
+ FT_MOVE_SIGN( c_, c, s );
if ( c == 0 )
a = 0x7FFFFFFFUL;
@@ -558,8 +575,11 @@
/* XXX: this function does not allow 64-bit arguments */
- FT_MOVE_SIGN( FT_UInt32, a_, a, s );
- FT_MOVE_SIGN( FT_UInt32, b_, b, s );
+ a = (FT_UInt32)a_;
+ b = (FT_UInt32)b_;
+
+ FT_MOVE_SIGN( a_, a, s );
+ FT_MOVE_SIGN( b_, b, s );
if ( a + ( b >> 8 ) <= 8190UL )
a = ( a * b + 0x8000UL ) >> 16;
@@ -594,8 +614,11 @@
/* XXX: this function does not allow 64-bit arguments */
- FT_MOVE_SIGN( FT_UInt32, a_, a, s );
- FT_MOVE_SIGN( FT_UInt32, b_, b, s );
+ a = (FT_UInt32)a_;
+ b = (FT_UInt32)b_;
+
+ FT_MOVE_SIGN( a_, a, s );
+ FT_MOVE_SIGN( b_, b, s );
if ( b == 0 )
{
@@ -806,8 +829,11 @@
FT_Int sx = 1, sy = 1, shift;
- FT_MOVE_SIGN( FT_UInt32, x_, x, sx );
- FT_MOVE_SIGN( FT_UInt32, y_, y, sy );
+ x = (FT_UInt32)x_;
+ y = (FT_UInt32)y_;
+
+ FT_MOVE_SIGN( x_, x, sx );
+ FT_MOVE_SIGN( y_, y, sy );
/* trivial cases */
if ( x == 0 )
@@ -887,72 +913,44 @@
}
+#if 0
+
/* documentation is in ftcalc.h */
- FT_BASE_DEF( FT_UInt32 )
- FT_SqrtFixed( FT_UInt32 v )
+ FT_BASE_DEF( FT_Int32 )
+ FT_SqrtFixed( FT_Int32 x )
{
- if ( v == 0 )
- return 0;
+ FT_UInt32 root, rem_hi, rem_lo, test_div;
+ FT_Int count;
-#ifndef FT_INT64
- /* Algorithm by Christophe Meessen (1993) with overflow fixed and */
- /* rounding added. Any unsigned fixed 16.16 argument is acceptable. */
- /* However, this algorithm is slower than the Babylonian method with */
- /* a good initial guess. We only use it for large 32-bit values when */
- /* 64-bit computations are not desirable. */
- else if ( v > 0x10000U )
+ root = 0;
+
+ if ( x > 0 )
{
- FT_UInt32 r = v >> 1;
- FT_UInt32 q = ( v & 1 ) << 15;
- FT_UInt32 b = 0x20000000;
- FT_UInt32 t;
-
-
+ rem_hi = 0;
+ rem_lo = (FT_UInt32)x;
+ count = 24;
do
{
- t = q + b;
- if ( r >= t )
+ rem_hi = ( rem_hi << 2 ) | ( rem_lo >> 30 );
+ rem_lo <<= 2;
+ root <<= 1;
+ test_div = ( root << 1 ) + 1;
+
+ if ( rem_hi >= test_div )
{
- r -= t;
- q = t + b; /* equivalent to q += 2*b */
+ rem_hi -= test_div;
+ root += 1;
}
- r <<= 1;
- b >>= 1;
-
- } while ( b > 0x10 ); /* exactly 25 cycles */
-
- return ( q + 0x40 ) >> 7;
+ } while ( --count );
}
- else
- {
- FT_UInt32 r = ( v << 16 ) - 1;
-#else /* FT_INT64 */
-
- else
- {
- FT_UInt64 r = ( (FT_UInt64)v << 16 ) - 1;
-
-#endif /* FT_INT64 */
-
- FT_UInt32 q = 1 << ( ( 17 + FT_MSB( v ) ) >> 1 );
- FT_UInt32 t;
-
-
- /* Babylonian method with rounded-up division */
- do
- {
- t = q;
- q = ( t + (FT_UInt32)( r / t ) + 1 ) >> 1;
-
- } while ( q != t ); /* less than 6 cycles */
-
- return q;
- }
+ return (FT_Int32)root;
}
+#endif /* 0 */
+
/* documentation is in ftcalc.h */
@@ -1096,8 +1094,11 @@
FT_UInt32 factor;
- FT_MOVE_SIGN( FT_UInt32, s[i], scalar, sign );
- FT_MOVE_SIGN( FT_UInt32, f[i], factor, sign );
+ scalar = (FT_UInt32)s[i];
+ factor = (FT_UInt32)f[i];
+
+ FT_MOVE_SIGN( s[i], scalar, sign );
+ FT_MOVE_SIGN( f[i], factor, sign );
ft_multo64( scalar, factor, &multResult );
diff --git a/src/base/ftcid.c b/src/base/ftcid.c
index 4f2deb1..866cd23 100644
--- a/src/base/ftcid.c
+++ b/src/base/ftcid.c
@@ -4,7 +4,7 @@
*
* FreeType API for accessing CID font information.
*
- * Copyright (C) 2007-2024 by
+ * Copyright (C) 2007-2023 by
* Derek Clegg and Michael Toftdal.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/base/ftcolor.c b/src/base/ftcolor.c
index c6bf2a3..bcd6e89 100644
--- a/src/base/ftcolor.c
+++ b/src/base/ftcolor.c
@@ -4,7 +4,7 @@
*
* FreeType's glyph color management (body).
*
- * Copyright (C) 2018-2024 by
+ * Copyright (C) 2018-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/base/ftdbgmem.c b/src/base/ftdbgmem.c
index 902a5dc..8fab50d 100644
--- a/src/base/ftdbgmem.c
+++ b/src/base/ftdbgmem.c
@@ -4,7 +4,7 @@
*
* Memory debugger (body).
*
- * Copyright (C) 2001-2024 by
+ * Copyright (C) 2001-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/base/ftdebug.c b/src/base/ftdebug.c
index 11307ea..61c4563 100644
--- a/src/base/ftdebug.c
+++ b/src/base/ftdebug.c
@@ -4,7 +4,7 @@
*
* Debugging and logging component (body).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/base/fterrors.c b/src/base/fterrors.c
index 61041a3..5ad9709 100644
--- a/src/base/fterrors.c
+++ b/src/base/fterrors.c
@@ -4,7 +4,7 @@
*
* FreeType API for error code handling.
*
- * Copyright (C) 2018-2024 by
+ * Copyright (C) 2018-2023 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/src/base/ftfntfmt.c b/src/base/ftfntfmt.c
index 77b4089..0b41f7c 100644
--- a/src/base/ftfntfmt.c
+++ b/src/base/ftfntfmt.c
@@ -4,7 +4,7 @@
*
* FreeType utility file for font formats (body).
*
- * Copyright (C) 2002-2024 by
+ * Copyright (C) 2002-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/base/ftfstype.c b/src/base/ftfstype.c
index 1565c3b..ea24e64 100644
--- a/src/base/ftfstype.c
+++ b/src/base/ftfstype.c
@@ -4,7 +4,7 @@
*
* FreeType utility file to access FSType data (body).
*
- * Copyright (C) 2008-2024 by
+ * Copyright (C) 2008-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/base/ftgasp.c b/src/base/ftgasp.c
index c63d30e..29b7b08 100644
--- a/src/base/ftgasp.c
+++ b/src/base/ftgasp.c
@@ -4,7 +4,7 @@
*
* Access of TrueType's `gasp' table (body).
*
- * Copyright (C) 2007-2024 by
+ * Copyright (C) 2007-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/base/ftgloadr.c b/src/base/ftgloadr.c
index 484d98f..9823d09 100644
--- a/src/base/ftgloadr.c
+++ b/src/base/ftgloadr.c
@@ -4,7 +4,7 @@
*
* The FreeType glyph loader (body).
*
- * Copyright (C) 2002-2024 by
+ * Copyright (C) 2002-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg
*
* This file is part of the FreeType project, and may only be used,
@@ -355,25 +355,34 @@
FT_BASE_DEF( void )
FT_GlyphLoader_Add( FT_GlyphLoader loader )
{
- FT_Outline* base;
- FT_Outline* current;
- FT_Int n;
+ FT_GlyphLoad base;
+ FT_GlyphLoad current;
+
+ FT_Int n_curr_contours;
+ FT_Int n_base_points;
+ FT_Int n;
if ( !loader )
return;
- base = &loader->base.outline;
- current = &loader->current.outline;
+ base = &loader->base;
+ current = &loader->current;
+
+ n_curr_contours = current->outline.n_contours;
+ n_base_points = base->outline.n_points;
+
+ base->outline.n_points =
+ (short)( base->outline.n_points + current->outline.n_points );
+ base->outline.n_contours =
+ (short)( base->outline.n_contours + current->outline.n_contours );
+
+ base->num_subglyphs += current->num_subglyphs;
/* adjust contours count in newest outline */
- for ( n = 0; n < current->n_contours; n++ )
- current->contours[n] += base->n_points;
-
- base->n_points += current->n_points;
- base->n_contours += current->n_contours;
-
- loader->base.num_subglyphs += loader->current.num_subglyphs;
+ for ( n = 0; n < n_curr_contours; n++ )
+ current->outline.contours[n] =
+ (short)( current->outline.contours[n] + n_base_points );
/* prepare for another new glyph image */
FT_GlyphLoader_Prepare( loader );
diff --git a/src/base/ftglyph.c b/src/base/ftglyph.c
index 1b5849f..393d494 100644
--- a/src/base/ftglyph.c
+++ b/src/base/ftglyph.c
@@ -4,7 +4,7 @@
*
* FreeType convenience functions to handle glyphs (body).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/base/ftgxval.c b/src/base/ftgxval.c
index 6e38cb5..6b3c5d2 100644
--- a/src/base/ftgxval.c
+++ b/src/base/ftgxval.c
@@ -4,7 +4,7 @@
*
* FreeType API for validating TrueTypeGX/AAT tables (body).
*
- * Copyright (C) 2004-2024 by
+ * Copyright (C) 2004-2023 by
* Masatake YAMATO, Redhat K.K,
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
diff --git a/src/base/ftinit.c b/src/base/ftinit.c
index 9a6c00e..c9c71d2 100644
--- a/src/base/ftinit.c
+++ b/src/base/ftinit.c
@@ -4,7 +4,7 @@
*
* FreeType initialization layer (body).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/base/ftlcdfil.c b/src/base/ftlcdfil.c
index 1e69d4d..6c3fd66 100644
--- a/src/base/ftlcdfil.c
+++ b/src/base/ftlcdfil.c
@@ -4,7 +4,7 @@
*
* FreeType API for color filtering of subpixel bitmap glyphs (body).
*
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/base/ftmac.c b/src/base/ftmac.c
index e8e3562..492d055 100644
--- a/src/base/ftmac.c
+++ b/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-2024 by
+ * Copyright (C) 1996-2023 by
* Just van Rossum, David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -812,7 +812,6 @@
ResourceIndex res_index;
Handle fond;
short num_faces_in_res;
- FT_Long count;
if ( noErr != FT_FSPathMakeRes( pathname, &res_ref ) )
@@ -822,10 +821,8 @@
if ( ResError() )
return FT_THROW( Cannot_Open_Resource );
- res_index = 1;
num_faces_in_res = 0;
- count = face_index;
- while ( count >= 0 )
+ for ( res_index = 1; ; res_index++ )
{
short num_faces_in_fond;
@@ -837,21 +834,15 @@
num_faces_in_fond = count_faces( fond, pathname );
num_faces_in_res += num_faces_in_fond;
- if ( count < num_faces_in_fond )
- error = FT_New_Face_From_FOND( library, fond, count, aface );
+ if ( 0 <= face_index && face_index < num_faces_in_fond && error )
+ error = FT_New_Face_From_FOND( library, fond, face_index, aface );
- res_index++;
- count -= num_faces_in_fond;
+ face_index -= num_faces_in_fond;
}
CloseResFile( res_ref );
-
if ( !error && aface && *aface )
- {
- (*aface)->num_faces = num_faces_in_res;
- (*aface)->face_index = face_index;
- }
-
+ (*aface)->num_faces = num_faces_in_res;
return error;
}
diff --git a/src/base/ftmm.c b/src/base/ftmm.c
index cc4ca22..9e2dd7e 100644
--- a/src/base/ftmm.c
+++ b/src/base/ftmm.c
@@ -4,7 +4,7 @@
*
* Multiple Master font support (body).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/base/ftobjs.c b/src/base/ftobjs.c
index 9b97820..89a25bc 100644
--- a/src/base/ftobjs.c
+++ b/src/base/ftobjs.c
@@ -4,7 +4,7 @@
*
* The FreeType private base classes (body).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -2302,10 +2302,7 @@
face_index_internal, aface );
FT_FREE( data_offsets );
if ( !error )
- {
- (*aface)->num_faces = count;
- (*aface)->face_index = face_index_internal;
- }
+ (*aface)->num_faces = count;
}
return error;
@@ -5794,7 +5791,7 @@
ttface = (TT_Face)face;
sfnt = (SFNT_Service)ttface->sfnt;
- if ( sfnt->get_colr_glyph_paint )
+ if ( sfnt->get_colr_layer )
return sfnt->get_colr_glyph_paint( ttface,
base_glyph,
root_transform,
diff --git a/src/base/ftotval.c b/src/base/ftotval.c
index aed9eef..192e12a 100644
--- a/src/base/ftotval.c
+++ b/src/base/ftotval.c
@@ -4,7 +4,7 @@
*
* FreeType API for validating OpenType tables (body).
*
- * Copyright (C) 2004-2024 by
+ * Copyright (C) 2004-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/base/ftoutln.c b/src/base/ftoutln.c
index ef699b3..134f39d 100644
--- a/src/base/ftoutln.c
+++ b/src/base/ftoutln.c
@@ -4,7 +4,7 @@
*
* FreeType outline management (body).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -53,7 +53,7 @@
FT_Vector* point;
FT_Vector* limit;
- FT_Byte* tags;
+ char* tags;
FT_Error error;
@@ -332,8 +332,8 @@
FT_NEW_ARRAY( anoutline->contours, numContours ) )
goto Fail;
- anoutline->n_points = (FT_UShort)numPoints;
- anoutline->n_contours = (FT_UShort)numContours;
+ anoutline->n_points = (FT_Short)numPoints;
+ anoutline->n_contours = (FT_Short)numContours;
anoutline->flags |= FT_OUTLINE_OWNER;
return FT_Err_Ok;
@@ -359,14 +359,12 @@
FT_Int n;
- FT_TRACE5(( "FT_Outline_Check: contours = %d, points = %d\n",
- n_contours, n_points ));
/* empty glyph? */
if ( n_points == 0 && n_contours == 0 )
return FT_Err_Ok;
/* check point and contour counts */
- if ( n_points == 0 || n_contours == 0 )
+ if ( n_points <= 0 || n_contours <= 0 )
goto Bad;
end0 = -1;
@@ -578,13 +576,13 @@
/* reverse tags table */
{
- FT_Byte* p = outline->tags + first;
- FT_Byte* q = outline->tags + last;
+ char* p = outline->tags + first;
+ char* q = outline->tags + last;
while ( p < q )
{
- FT_Byte swap;
+ char swap;
swap = *p;
diff --git a/src/base/ftpatent.c b/src/base/ftpatent.c
index 2055757..cb5efad 100644
--- a/src/base/ftpatent.c
+++ b/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-2024 by
+ * Copyright (C) 2007-2023 by
* David Turner.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/base/ftpfr.c b/src/base/ftpfr.c
index 0caa9d1..378385a 100644
--- a/src/base/ftpfr.c
+++ b/src/base/ftpfr.c
@@ -4,7 +4,7 @@
*
* FreeType API for accessing PFR-specific data (body).
*
- * Copyright (C) 2002-2024 by
+ * Copyright (C) 2002-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/base/ftpsprop.c b/src/base/ftpsprop.c
index 37a6cee..cefdf48 100644
--- a/src/base/ftpsprop.c
+++ b/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-2024 by
+ * Copyright (C) 2017-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/base/ftrfork.c b/src/base/ftrfork.c
index dc9b043..2ab4301 100644
--- a/src/base/ftrfork.c
+++ b/src/base/ftrfork.c
@@ -4,7 +4,7 @@
*
* Embedded resource forks accessor (body).
*
- * Copyright (C) 2004-2024 by
+ * Copyright (C) 2004-2023 by
* Masatake YAMATO and Redhat K.K.
*
* FT_Raccess_Get_HeaderInfo() and raccess_guess_darwin_hfsplus() are
diff --git a/src/base/ftsnames.c b/src/base/ftsnames.c
index f7231fd..1917a3f 100644
--- a/src/base/ftsnames.c
+++ b/src/base/ftsnames.c
@@ -7,7 +7,7 @@
*
* This is _not_ used to retrieve glyph names!
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/base/ftstream.c b/src/base/ftstream.c
index 6672224..64826ac 100644
--- a/src/base/ftstream.c
+++ b/src/base/ftstream.c
@@ -4,7 +4,7 @@
*
* I/O stream support (body).
*
- * Copyright (C) 2000-2024 by
+ * Copyright (C) 2000-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -763,10 +763,10 @@
case ft_frame_bytes: /* read a byte sequence */
case ft_frame_skip: /* skip some bytes */
{
- FT_Offset len = fields->size;
+ FT_UInt len = fields->size;
- if ( len > (FT_Offset)( stream->limit - cursor ) )
+ if ( cursor + len > stream->limit )
{
error = FT_THROW( Invalid_Stream_Operation );
goto Exit;
@@ -830,7 +830,7 @@
goto Exit;
}
- /* now, compute the signed value if necessary */
+ /* now, compute the signed value is necessary */
if ( fields->value & FT_FRAME_OP_SIGNED )
value = (FT_ULong)( (FT_Int32)( value << sign_shift ) >> sign_shift );
diff --git a/src/base/ftstroke.c b/src/base/ftstroke.c
index 64f46ce..92f1e43 100644
--- a/src/base/ftstroke.c
+++ b/src/base/ftstroke.c
@@ -4,7 +4,7 @@
*
* FreeType path stroker (body).
*
- * Copyright (C) 2002-2024 by
+ * Copyright (C) 2002-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -711,7 +711,7 @@
{
FT_UInt count = border->num_points;
FT_Byte* read = border->tags;
- FT_Byte* write = outline->tags + outline->n_points;
+ FT_Byte* write = (FT_Byte*)outline->tags + outline->n_points;
for ( ; count > 0; count--, read++, write++ )
@@ -727,10 +727,10 @@
/* copy contours */
{
- FT_UInt count = border->num_points;
- FT_Byte* tags = border->tags;
- FT_UShort* write = outline->contours + outline->n_contours;
- FT_UShort idx = outline->n_points;
+ FT_UInt count = border->num_points;
+ FT_Byte* tags = border->tags;
+ FT_Short* write = outline->contours + outline->n_contours;
+ FT_Short idx = (FT_Short)outline->n_points;
for ( ; count > 0; count--, tags++, idx++ )
@@ -743,7 +743,7 @@
}
}
- outline->n_points += (FT_UShort)border->num_points;
+ outline->n_points += (short)border->num_points;
FT_ASSERT( FT_Outline_Check( outline ) == 0 );
}
@@ -2050,7 +2050,7 @@
FT_Vector* point;
FT_Vector* limit;
- FT_Byte* tags;
+ char* tags;
FT_Error error;
diff --git a/src/base/ftsynth.c b/src/base/ftsynth.c
index ec05bce..f32edd3 100644
--- a/src/base/ftsynth.c
+++ b/src/base/ftsynth.c
@@ -4,7 +4,7 @@
*
* FreeType synthesizing code for emboldening and slanting (body).
*
- * Copyright (C) 2000-2024 by
+ * Copyright (C) 2000-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/base/ftsystem.c b/src/base/ftsystem.c
index eee3642..61c99e3 100644
--- a/src/base/ftsystem.c
+++ b/src/base/ftsystem.c
@@ -4,7 +4,7 @@
*
* ANSI-specific FreeType low-level system interface (body).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/base/fttrigon.c b/src/base/fttrigon.c
index 4b1aced..2dd2c34 100644
--- a/src/base/fttrigon.c
+++ b/src/base/fttrigon.c
@@ -4,7 +4,7 @@
*
* FreeType trigonometric functions (body).
*
- * Copyright (C) 2001-2024 by
+ * Copyright (C) 2001-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/base/fttype1.c b/src/base/fttype1.c
index cedf7c4..637c5cf 100644
--- a/src/base/fttype1.c
+++ b/src/base/fttype1.c
@@ -4,7 +4,7 @@
*
* FreeType utility file for PS names support (body).
*
- * Copyright (C) 2002-2024 by
+ * Copyright (C) 2002-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/base/ftutil.c b/src/base/ftutil.c
index b13512f..6120846 100644
--- a/src/base/ftutil.c
+++ b/src/base/ftutil.c
@@ -4,7 +4,7 @@
*
* FreeType utility file for memory and list management (body).
*
- * Copyright (C) 2002-2024 by
+ * Copyright (C) 2002-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/base/ftver.rc b/src/base/ftver.rc
index 3175ab7..137a633 100644
--- a/src/base/ftver.rc
+++ b/src/base/ftver.rc
@@ -4,7 +4,7 @@
/* */
/* FreeType VERSIONINFO resource for Windows DLLs. */
/* */
-/* Copyright (C) 2018-2024 by */
+/* Copyright (C) 2018-2023 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<windows.h>
-#define FT_VERSION 2,13,3,0
-#define FT_VERSION_STR "2.13.3"
+#define FT_VERSION 2,13,2,0
+#define FT_VERSION_STR "2.13.2"
VS_VERSION_INFO VERSIONINFO
FILEVERSION FT_VERSION
@@ -45,7 +45,7 @@
VALUE "FileVersion", FT_VERSION_STR
VALUE "ProductName", "FreeType"
VALUE "ProductVersion", FT_VERSION_STR
- VALUE "LegalCopyright", L"\x00A9 2000-2024 The FreeType Project www.freetype.org. All rights reserved."
+ VALUE "LegalCopyright", L"\x00A9 2000-2023 The FreeType Project www.freetype.org. All rights reserved."
VALUE "InternalName", "freetype"
VALUE "OriginalFilename", FT_FILENAME
END
diff --git a/src/base/ftwinfnt.c b/src/base/ftwinfnt.c
index e849a15..03b023e 100644
--- a/src/base/ftwinfnt.c
+++ b/src/base/ftwinfnt.c
@@ -4,7 +4,7 @@
*
* FreeType API for accessing Windows FNT specific info (body).
*
- * Copyright (C) 2003-2024 by
+ * Copyright (C) 2003-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/base/rules.mk b/src/base/rules.mk
index 042c075..b7de9b5 100644
--- a/src/base/rules.mk
+++ b/src/base/rules.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 1996-2024 by
+# Copyright (C) 1996-2023 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/src/bdf/bdfdrivr.c b/src/bdf/bdfdrivr.c
index 4b9d634..e02a160 100644
--- a/src/bdf/bdfdrivr.c
+++ b/src/bdf/bdfdrivr.c
@@ -780,8 +780,8 @@
FT_UInt glyph_index,
FT_Int32 load_flags )
{
- FT_Face face = size->face;
- BDF_Face bdf = (BDF_Face)face;
+ BDF_Face bdf = (BDF_Face)FT_SIZE_FACE( size );
+ FT_Face face = FT_FACE( bdf );
FT_Error error = FT_Err_Ok;
FT_Bitmap* bitmap = &slot->bitmap;
bdf_glyph_t glyph;
diff --git a/src/bdf/bdflib.c b/src/bdf/bdflib.c
index 813a4d8..0fa7e0a 100644
--- a/src/bdf/bdflib.c
+++ b/src/bdf/bdflib.c
@@ -864,9 +864,15 @@
p = font->user_props + font->nuser_props;
- if ( FT_STRDUP( p->name, name ) )
+ n = ft_strlen( name ) + 1;
+ if ( n > FT_LONG_MAX )
+ return FT_THROW( Invalid_Argument );
+
+ if ( FT_QALLOC( p->name, n ) )
goto Exit;
+ FT_MEM_COPY( (char *)p->name, name, n );
+
p->format = format;
p->builtin = 0;
p->value.atom = NULL; /* nothing is ever stored here */
@@ -1436,9 +1442,11 @@
goto Exit;
}
- if ( FT_DUP( p->glyph_name, s, slen + 1 ) )
+ if ( FT_QALLOC( p->glyph_name, slen + 1 ) )
goto Exit;
+ FT_MEM_COPY( p->glyph_name, s, slen + 1 );
+
p->flags |= BDF_GLYPH_;
FT_TRACE4(( DBGMSG1, lineno, s ));
@@ -2043,8 +2051,9 @@
/* Allowing multiple `FONT' lines (which is invalid) doesn't hurt... */
FT_FREE( p->font->name );
- if ( FT_DUP( p->font->name, s, slen + 1 ) )
+ if ( FT_QALLOC( p->font->name, slen + 1 ) )
goto Exit;
+ FT_MEM_COPY( p->font->name, s, slen + 1 );
/* If the font name is an XLFD name, set the spacing to the one in */
/* the font name. If there is no spacing fall back on the default. */
diff --git a/src/bzip2/ftbzip2.c b/src/bzip2/ftbzip2.c
index a0249eb..ad342bd 100644
--- a/src/bzip2/ftbzip2.c
+++ b/src/bzip2/ftbzip2.c
@@ -8,7 +8,7 @@
* parse compressed PCF fonts, as found with many X11 server
* distributions.
*
- * Copyright (C) 2010-2024 by
+ * Copyright (C) 2010-2023 by
* Joel Klinghed.
*
* based on `src/gzip/ftgzip.c'
diff --git a/src/bzip2/rules.mk b/src/bzip2/rules.mk
index 9019eee..f4d3733 100644
--- a/src/bzip2/rules.mk
+++ b/src/bzip2/rules.mk
@@ -2,7 +2,7 @@
# FreeType 2 BZIP2 support configuration rules
#
-# Copyright (C) 2010-2024 by
+# Copyright (C) 2010-2023 by
# Joel Klinghed.
#
# based on `src/lzw/rules.mk'
diff --git a/src/cache/ftcache.c b/src/cache/ftcache.c
index 81e0347..1af2e67 100644
--- a/src/cache/ftcache.c
+++ b/src/cache/ftcache.c
@@ -4,7 +4,7 @@
*
* The FreeType Caching sub-system (body only).
*
- * Copyright (C) 2000-2024 by
+ * Copyright (C) 2000-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/cache/ftcbasic.c b/src/cache/ftcbasic.c
index 7102d3d..24a56c8 100644
--- a/src/cache/ftcbasic.c
+++ b/src/cache/ftcbasic.c
@@ -4,7 +4,7 @@
*
* The FreeType basic cache interface (body).
*
- * Copyright (C) 2003-2024 by
+ * Copyright (C) 2003-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -37,7 +37,7 @@
typedef struct FTC_BasicAttrRec_
{
FTC_ScalerRec scaler;
- FT_Int32 load_flags;
+ FT_UInt load_flags;
} FTC_BasicAttrRec, *FTC_BasicAttrs;
@@ -45,9 +45,8 @@
FT_BOOL( FTC_SCALER_COMPARE( &(a)->scaler, &(b)->scaler ) && \
(a)->load_flags == (b)->load_flags )
-#define FTC_BASIC_ATTR_HASH( a ) \
- ( FTC_SCALER_HASH( &(a)->scaler ) + \
- (FT_Offset)( 31 * (a)->load_flags ) )
+#define FTC_BASIC_ATTR_HASH( a ) \
+ ( FTC_SCALER_HASH( &(a)->scaler ) + 31 * (a)->load_flags )
typedef struct FTC_BasicQueryRec_
@@ -144,9 +143,10 @@
FT_Face face = size->face;
- error = FT_Load_Glyph( face,
- gindex,
- family->attrs.load_flags | FT_LOAD_RENDER );
+ error = FT_Load_Glyph(
+ face,
+ gindex,
+ (FT_Int)family->attrs.load_flags | FT_LOAD_RENDER );
if ( !error )
*aface = face;
}
@@ -176,7 +176,9 @@
{
face = size->face;
- error = FT_Load_Glyph( face, gindex, family->attrs.load_flags );
+ error = FT_Load_Glyph( face,
+ gindex,
+ (FT_Int)family->attrs.load_flags );
if ( !error )
{
if ( face->glyph->format == FT_GLYPH_FORMAT_BITMAP ||
@@ -244,6 +246,7 @@
ftc_basic_family_compare, /* FTC_MruNode_CompareFunc node_compare */
ftc_basic_family_init, /* FTC_MruNode_InitFunc node_init */
+ NULL, /* FTC_MruNode_ResetFunc node_reset */
NULL /* FTC_MruNode_DoneFunc node_done */
},
@@ -290,24 +293,40 @@
FT_Glyph *aglyph,
FTC_Node *anode )
{
- FT_Error error;
FTC_BasicQueryRec query;
- FTC_Node node = NULL; /* make compiler happy */
+ FTC_Node node = 0; /* make compiler happy */
+ FT_Error error;
FT_Offset hash;
- /* other argument checks delayed to `FTC_Cache_Lookup' */
+ /* some argument checks are delayed to `FTC_Cache_Lookup' */
if ( !aglyph )
- return FT_THROW( Invalid_Argument );
+ {
+ error = FT_THROW( Invalid_Argument );
+ goto Exit;
+ }
*aglyph = NULL;
if ( anode )
- *anode = NULL;
+ *anode = NULL;
+
+ /*
+ * Internal `FTC_BasicAttr->load_flags' is of type `FT_UInt',
+ * but public `FT_ImageType->flags' is of type `FT_Int32'.
+ *
+ * On 16bit systems, higher bits of type->flags cannot be handled.
+ */
+#if 0xFFFFFFFFUL > FT_UINT_MAX
+ if ( (type->flags & (FT_ULong)FT_UINT_MAX) )
+ FT_TRACE1(( "FTC_ImageCache_Lookup:"
+ " higher bits in load_flags 0x%lx are dropped\n",
+ (FT_ULong)type->flags & ~((FT_ULong)FT_UINT_MAX) ));
+#endif
query.attrs.scaler.face_id = type->face_id;
query.attrs.scaler.width = type->width;
query.attrs.scaler.height = type->height;
- query.attrs.load_flags = type->flags;
+ query.attrs.load_flags = (FT_UInt)type->flags;
query.attrs.scaler.pixel = 1;
query.attrs.scaler.x_res = 0; /* make compilers happy */
@@ -315,7 +334,7 @@
hash = FTC_BASIC_ATTR_HASH( &query.attrs ) + gindex;
-#ifdef FTC_INLINE /* inlining is about 50% faster! */
+#if 1 /* inlining is about 50% faster! */
FTC_GCACHE_LOOKUP_CMP( cache,
ftc_basic_family_compare,
ftc_gnode_compare,
@@ -340,6 +359,7 @@
}
}
+ Exit:
return error;
}
@@ -354,35 +374,38 @@
FT_Glyph *aglyph,
FTC_Node *anode )
{
- FT_Error error;
FTC_BasicQueryRec query;
- FTC_Node node = NULL; /* make compiler happy */
+ FTC_Node node = 0; /* make compiler happy */
+ FT_Error error;
FT_Offset hash;
- /* other argument checks delayed to `FTC_Cache_Lookup' */
+ /* some argument checks are delayed to `FTC_Cache_Lookup' */
if ( !aglyph || !scaler )
- return FT_THROW( Invalid_Argument );
+ {
+ error = FT_THROW( Invalid_Argument );
+ goto Exit;
+ }
*aglyph = NULL;
if ( anode )
- *anode = NULL;
+ *anode = NULL;
/*
- * Internal `FTC_BasicAttr->load_flags' is of type `FT_Int32',
+ * Internal `FTC_BasicAttr->load_flags' is of type `FT_UInt',
* but public `FT_Face->face_flags' is of type `FT_Long'.
*
* On long > int systems, higher bits of load_flags cannot be handled.
*/
-#if FT_ULONG_MAX > 0xFFFFFFFFUL
- if ( load_flags > 0xFFFFFFFFUL )
+#if FT_ULONG_MAX > FT_UINT_MAX
+ if ( load_flags > FT_UINT_MAX )
FT_TRACE1(( "FTC_ImageCache_LookupScaler:"
" higher bits in load_flags 0x%lx are dropped\n",
- load_flags & ~0xFFFFFFFFUL ));
+ load_flags & ~((FT_ULong)FT_UINT_MAX) ));
#endif
query.attrs.scaler = scaler[0];
- query.attrs.load_flags = (FT_Int32)load_flags;
+ query.attrs.load_flags = (FT_UInt)load_flags;
hash = FTC_BASIC_ATTR_HASH( &query.attrs ) + gindex;
@@ -404,6 +427,7 @@
}
}
+ Exit:
return error;
}
@@ -421,6 +445,7 @@
sizeof ( FTC_BasicFamilyRec ),
ftc_basic_family_compare, /* FTC_MruNode_CompareFunc node_compare */
ftc_basic_family_init, /* FTC_MruNode_InitFunc node_init */
+ NULL, /* FTC_MruNode_ResetFunc node_reset */
NULL /* FTC_MruNode_DoneFunc node_done */
},
@@ -470,22 +495,36 @@
{
FT_Error error;
FTC_BasicQueryRec query;
- FTC_Node node = NULL; /* make compiler happy */
+ FTC_Node node = 0; /* make compiler happy */
FT_Offset hash;
+ if ( anode )
+ *anode = NULL;
+
/* other argument checks delayed to `FTC_Cache_Lookup' */
if ( !ansbit )
return FT_THROW( Invalid_Argument );
*ansbit = NULL;
- if ( anode )
- *anode = NULL;
+
+ /*
+ * Internal `FTC_BasicAttr->load_flags' is of type `FT_UInt',
+ * but public `FT_ImageType->flags' is of type `FT_Int32'.
+ *
+ * On 16bit systems, higher bits of type->flags cannot be handled.
+ */
+#if 0xFFFFFFFFUL > FT_UINT_MAX
+ if ( (type->flags & (FT_ULong)FT_UINT_MAX) )
+ FT_TRACE1(( "FTC_ImageCache_Lookup:"
+ " higher bits in load_flags 0x%lx are dropped\n",
+ (FT_ULong)type->flags & ~((FT_ULong)FT_UINT_MAX) ));
+#endif
query.attrs.scaler.face_id = type->face_id;
query.attrs.scaler.width = type->width;
query.attrs.scaler.height = type->height;
- query.attrs.load_flags = type->flags;
+ query.attrs.load_flags = (FT_UInt)type->flags;
query.attrs.scaler.pixel = 1;
query.attrs.scaler.x_res = 0; /* make compilers happy */
@@ -495,7 +534,7 @@
hash = FTC_BASIC_ATTR_HASH( &query.attrs ) +
gindex / FTC_SBIT_ITEMS_PER_NODE;
-#ifdef FTC_INLINE /* inlining is about 50% faster! */
+#if 1 /* inlining is about 50% faster! */
FTC_GCACHE_LOOKUP_CMP( cache,
ftc_basic_family_compare,
ftc_snode_compare,
@@ -539,33 +578,34 @@
{
FT_Error error;
FTC_BasicQueryRec query;
- FTC_Node node = NULL; /* make compiler happy */
+ FTC_Node node = 0; /* make compiler happy */
FT_Offset hash;
+ if ( anode )
+ *anode = NULL;
+
/* other argument checks delayed to `FTC_Cache_Lookup' */
if ( !ansbit || !scaler )
- return FT_THROW( Invalid_Argument );
+ return FT_THROW( Invalid_Argument );
*ansbit = NULL;
- if ( anode )
- *anode = NULL;
/*
- * Internal `FTC_BasicAttr->load_flags' is of type `FT_Int32',
+ * Internal `FTC_BasicAttr->load_flags' is of type `FT_UInt',
* but public `FT_Face->face_flags' is of type `FT_Long'.
*
* On long > int systems, higher bits of load_flags cannot be handled.
*/
-#if FT_ULONG_MAX > 0xFFFFFFFFUL
- if ( load_flags > 0xFFFFFFFFUL )
+#if FT_ULONG_MAX > FT_UINT_MAX
+ if ( load_flags > FT_UINT_MAX )
FT_TRACE1(( "FTC_ImageCache_LookupScaler:"
" higher bits in load_flags 0x%lx are dropped\n",
- load_flags & ~0xFFFFFFFFUL ));
+ load_flags & ~((FT_ULong)FT_UINT_MAX) ));
#endif
query.attrs.scaler = scaler[0];
- query.attrs.load_flags = (FT_Int32)load_flags;
+ query.attrs.load_flags = (FT_UInt)load_flags;
/* beware, the hash must be the same for all glyph ranges! */
hash = FTC_BASIC_ATTR_HASH( &query.attrs ) +
diff --git a/src/cache/ftccache.c b/src/cache/ftccache.c
index 8a3d887..e069855 100644
--- a/src/cache/ftccache.c
+++ b/src/cache/ftccache.c
@@ -4,7 +4,7 @@
*
* The FreeType internal cache interface (body).
*
- * Copyright (C) 2000-2024 by
+ * Copyright (C) 2000-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -544,6 +544,7 @@
FTC_FaceID face_id )
{
FTC_Manager manager = cache->manager;
+ FTC_Node frees = NULL;
FT_UFast count = cache->p;
FT_UFast i;
@@ -556,27 +557,41 @@
for (;;)
{
FTC_Node node = *pnode;
+ FT_Bool list_changed = FALSE;
if ( !node )
break;
- if ( cache->clazz.node_remove_faceid( node, face_id, cache, NULL ) )
+ if ( cache->clazz.node_remove_faceid( node, face_id,
+ cache, &list_changed ) )
{
- *pnode = node->link;
-
- manager->cur_weight -= cache->clazz.node_weight( node, cache );
- ftc_node_mru_unlink( node, manager );
-
- cache->clazz.node_free( node, cache );
-
- cache->slack++;
+ *pnode = node->link;
+ node->link = frees;
+ frees = node;
}
else
pnode = &node->link;
}
}
+ /* remove all nodes in the free list */
+ while ( frees )
+ {
+ FTC_Node node;
+
+
+ node = frees;
+ frees = node->link;
+
+ manager->cur_weight -= cache->clazz.node_weight( node, cache );
+ ftc_node_mru_unlink( node, manager );
+
+ cache->clazz.node_free( node, cache );
+
+ cache->slack++;
+ }
+
ftc_cache_resize( cache );
}
diff --git a/src/cache/ftccache.h b/src/cache/ftccache.h
index 85d321c..850d255 100644
--- a/src/cache/ftccache.h
+++ b/src/cache/ftccache.h
@@ -4,7 +4,7 @@
*
* FreeType internal cache interface (specification).
*
- * Copyright (C) 2000-2024 by
+ * Copyright (C) 2000-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -87,10 +87,6 @@
ftc_get_top_node_for_hash( ( cache ), ( hash ) )
#endif
- FT_LOCAL( void )
- ftc_node_destroy( FTC_Node node,
- FTC_Manager manager );
-
/*************************************************************************/
/*************************************************************************/
diff --git a/src/cache/ftccback.h b/src/cache/ftccback.h
index a1d76ba..5f9db21 100644
--- a/src/cache/ftccback.h
+++ b/src/cache/ftccback.h
@@ -4,7 +4,7 @@
*
* Callback functions of the caching sub-system (specification only).
*
- * Copyright (C) 2004-2024 by
+ * Copyright (C) 2004-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -19,7 +19,11 @@
#define FTCCBACK_H_
#include <freetype/ftcache.h>
-#include "ftccache.h"
+#include "ftcmru.h"
+#include "ftcimage.h"
+#include "ftcmanag.h"
+#include "ftcglyph.h"
+#include "ftcsbits.h"
FT_BEGIN_HEADER
@@ -77,6 +81,10 @@
FT_LOCAL( void )
ftc_cache_done( FTC_Cache cache );
+ FT_LOCAL( void )
+ ftc_node_destroy( FTC_Node node,
+ FTC_Manager manager );
+
FT_END_HEADER
#endif /* FTCCBACK_H_ */
diff --git a/src/cache/ftccmap.c b/src/cache/ftccmap.c
index b5c61e8..84f22a6 100644
--- a/src/cache/ftccmap.c
+++ b/src/cache/ftccmap.c
@@ -4,7 +4,7 @@
*
* FreeType CharMap cache (body)
*
- * Copyright (C) 2000-2024 by
+ * Copyright (C) 2000-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -264,7 +264,7 @@
hash = FTC_CMAP_HASH( face_id, (FT_UInt)cmap_index, char_code );
-#ifdef FTC_INLINE
+#if 1
FTC_CACHE_LOOKUP_CMP( cache, ftc_cmap_node_compare, hash, &query,
node, error );
#else
diff --git a/src/cache/ftcerror.h b/src/cache/ftcerror.h
index daabcc6..dc1a620 100644
--- a/src/cache/ftcerror.h
+++ b/src/cache/ftcerror.h
@@ -4,7 +4,7 @@
*
* Caching sub-system error codes (specification only).
*
- * Copyright (C) 2001-2024 by
+ * Copyright (C) 2001-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/cache/ftcglyph.c b/src/cache/ftcglyph.c
index 5e78563..d344733 100644
--- a/src/cache/ftcglyph.c
+++ b/src/cache/ftcglyph.c
@@ -4,7 +4,7 @@
*
* FreeType Glyph Image (FT_Glyph) cache (body).
*
- * Copyright (C) 2000-2024 by
+ * Copyright (C) 2000-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -180,7 +180,7 @@
query->gindex = gindex;
- FTC_MRULIST_LOOKUP( &gcache->families, query, query->family, error );
+ FTC_MRULIST_LOOKUP( &cache->families, query, query->family, error );
if ( !error )
{
FTC_Family family = query->family;
@@ -193,7 +193,7 @@
error = FTC_Cache_Lookup( FTC_CACHE( gcache ), hash, query, anode );
if ( --family->num_nodes == 0 )
- FTC_FAMILY_FREE( family, FTC_CACHE( gcache ) );
+ FTC_FAMILY_FREE( family, cache );
}
return error;
}
diff --git a/src/cache/ftcglyph.h b/src/cache/ftcglyph.h
index b1a96da..0181e98 100644
--- a/src/cache/ftcglyph.h
+++ b/src/cache/ftcglyph.h
@@ -4,7 +4,7 @@
*
* FreeType abstract glyph cache (specification).
*
- * Copyright (C) 2000-2024 by
+ * Copyright (C) 2000-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -65,6 +65,7 @@
* - FTC_Family sub-class, e.g. MyFamily, with relevant methods:
* my_family_compare
* my_family_init
+ * my_family_reset (optional)
* my_family_done
*
* - FTC_GQuery sub-class, e.g. MyQuery, to hold cache-specific query
diff --git a/src/cache/ftcimage.c b/src/cache/ftcimage.c
index 1463064..428e5e1 100644
--- a/src/cache/ftcimage.c
+++ b/src/cache/ftcimage.c
@@ -4,7 +4,7 @@
*
* FreeType Image cache (body).
*
- * Copyright (C) 2000-2024 by
+ * Copyright (C) 2000-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -34,7 +34,11 @@
FT_Memory memory = cache->memory;
- FT_Done_Glyph( inode->glyph );
+ if ( inode->glyph )
+ {
+ FT_Done_Glyph( inode->glyph );
+ inode->glyph = NULL;
+ }
FTC_GNode_Done( FTC_GNODE( inode ), cache );
FT_FREE( inode );
@@ -115,9 +119,10 @@
{
case FT_GLYPH_FORMAT_BITMAP:
{
- FT_BitmapGlyph bitg = (FT_BitmapGlyph)glyph;
+ FT_BitmapGlyph bitg;
+ bitg = (FT_BitmapGlyph)glyph;
size = bitg->bitmap.rows * (FT_Offset)FT_ABS( bitg->bitmap.pitch ) +
sizeof ( *bitg );
}
@@ -125,9 +130,10 @@
case FT_GLYPH_FORMAT_OUTLINE:
{
- FT_OutlineGlyph outg = (FT_OutlineGlyph)glyph;
+ FT_OutlineGlyph outg;
+ outg = (FT_OutlineGlyph)glyph;
size = (FT_Offset)outg->outline.n_points *
( sizeof ( FT_Vector ) + sizeof ( FT_Byte ) ) +
(FT_Offset)outg->outline.n_contours * sizeof ( FT_Short ) +
diff --git a/src/cache/ftcimage.h b/src/cache/ftcimage.h
index a0c4a97..d2a807f 100644
--- a/src/cache/ftcimage.h
+++ b/src/cache/ftcimage.h
@@ -4,7 +4,7 @@
*
* FreeType Generic Image cache (specification)
*
- * Copyright (C) 2000-2024 by
+ * Copyright (C) 2000-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/cache/ftcmanag.c b/src/cache/ftcmanag.c
index c0a48a5..94f8469 100644
--- a/src/cache/ftcmanag.c
+++ b/src/cache/ftcmanag.c
@@ -4,7 +4,7 @@
*
* FreeType Cache Manager (body).
*
- * Copyright (C) 2000-2024 by
+ * Copyright (C) 2000-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -22,6 +22,7 @@
#include <freetype/internal/ftdebug.h>
#include <freetype/ftsizes.h>
+#include "ftccback.h"
#include "ftcerror.h"
@@ -85,10 +86,12 @@
FT_Pointer data )
{
FTC_SizeNode node = (FTC_SizeNode)ftcnode;
+ FT_Size size = node->size;
FT_UNUSED( data );
- FT_Done_Size( node->size );
+ if ( size )
+ FT_Done_Size( size );
}
@@ -115,21 +118,32 @@
FT_Pointer ftcscaler,
FT_Pointer ftcmanager )
{
- FT_Error error;
- FT_Size size;
FTC_SizeNode node = (FTC_SizeNode)ftcnode;
FTC_Scaler scaler = (FTC_Scaler)ftcscaler;
FTC_Manager manager = (FTC_Manager)ftcmanager;
- error = ftc_scaler_lookup_size( manager, scaler, &size );
- if ( !error )
- {
- node->size = size;
- node->scaler = scaler[0];
- }
+ node->scaler = scaler[0];
- return error;
+ return ftc_scaler_lookup_size( manager, scaler, &node->size );
+ }
+
+
+ FT_CALLBACK_DEF( FT_Error )
+ ftc_size_node_reset( FTC_MruNode ftcnode,
+ FT_Pointer ftcscaler,
+ FT_Pointer ftcmanager )
+ {
+ FTC_SizeNode node = (FTC_SizeNode)ftcnode;
+ FTC_Scaler scaler = (FTC_Scaler)ftcscaler;
+ FTC_Manager manager = (FTC_Manager)ftcmanager;
+
+
+ FT_Done_Size( node->size );
+
+ node->scaler = scaler[0];
+
+ return ftc_scaler_lookup_size( manager, scaler, &node->size );
}
@@ -140,6 +154,7 @@
ftc_size_node_compare, /* FTC_MruNode_CompareFunc node_compare */
ftc_size_node_init, /* FTC_MruNode_InitFunc node_init */
+ ftc_size_node_reset, /* FTC_MruNode_ResetFunc node_reset */
ftc_size_node_done /* FTC_MruNode_DoneFunc node_done */
};
@@ -216,25 +231,23 @@
FT_Pointer ftcface_id,
FT_Pointer ftcmanager )
{
- FT_Error error;
- FT_Face face;
FTC_FaceNode node = (FTC_FaceNode)ftcnode;
FTC_FaceID face_id = (FTC_FaceID)ftcface_id;
FTC_Manager manager = (FTC_Manager)ftcmanager;
+ FT_Error error;
+ node->face_id = face_id;
+
error = manager->request_face( face_id,
manager->library,
manager->request_data,
- &face );
+ &node->face );
if ( !error )
{
/* destroy initial size object; it will be re-created later */
- if ( face->size )
- FT_Done_Size( face->size );
-
- node->face = face;
- node->face_id = face_id;
+ if ( node->face->size )
+ FT_Done_Size( node->face->size );
}
return error;
@@ -281,6 +294,7 @@
ftc_face_node_compare, /* FTC_MruNode_CompareFunc node_compare */
ftc_face_node_init, /* FTC_MruNode_InitFunc node_init */
+ NULL, /* FTC_MruNode_ResetFunc node_reset */
ftc_face_node_done /* FTC_MruNode_DoneFunc node_done */
};
@@ -421,13 +435,18 @@
{
cache->clazz.cache_done( cache );
FT_FREE( cache );
+ manager->caches[idx] = NULL;
}
}
+ manager->num_caches = 0;
/* discard faces and sizes */
FTC_MruList_Done( &manager->sizes );
FTC_MruList_Done( &manager->faces );
+ manager->library = NULL;
+ manager->memory = NULL;
+
FT_FREE( manager );
}
diff --git a/src/cache/ftcmanag.h b/src/cache/ftcmanag.h
index bd158f5..5b30929 100644
--- a/src/cache/ftcmanag.h
+++ b/src/cache/ftcmanag.h
@@ -4,7 +4,7 @@
*
* FreeType Cache Manager (specification).
*
- * Copyright (C) 2000-2024 by
+ * Copyright (C) 2000-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/cache/ftcmru.c b/src/cache/ftcmru.c
index f908eb2..ad10a06 100644
--- a/src/cache/ftcmru.c
+++ b/src/cache/ftcmru.c
@@ -4,7 +4,7 @@
*
* FreeType MRU support (body).
*
- * Copyright (C) 2003-2024 by
+ * Copyright (C) 2003-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -238,43 +238,52 @@
{
FT_Error error;
FTC_MruNode node = NULL;
- FTC_MruNode prev = NULL;
FT_Memory memory = list->memory;
+ if ( list->num_nodes >= list->max_nodes && list->max_nodes > 0 )
+ {
+ node = list->nodes->prev;
+
+ FT_ASSERT( node );
+
+ if ( list->clazz.node_reset )
+ {
+ FTC_MruNode_Up( &list->nodes, node );
+
+ error = list->clazz.node_reset( node, key, list->data );
+ if ( !error )
+ goto Exit;
+ }
+
+ FTC_MruNode_Remove( &list->nodes, node );
+ list->num_nodes--;
+
+ if ( list->clazz.node_done )
+ list->clazz.node_done( node, list->data );
+ }
+
/* zero new node in case of node_init failure */
- if ( FT_ALLOC( node, list->clazz.node_size ) )
+ else if ( FT_ALLOC( node, list->clazz.node_size ) )
goto Exit;
error = list->clazz.node_init( node, key, list->data );
if ( error )
- {
- prev = node;
- node = NULL;
-
- goto Clean;
- }
- else if ( list->max_nodes > 0 && list->num_nodes >= list->max_nodes )
- prev = list->nodes->prev;
+ goto Fail;
FTC_MruNode_Prepend( &list->nodes, node );
list->num_nodes++;
- if ( !prev )
- goto Exit;
-
- FTC_MruNode_Remove( &list->nodes, prev );
- list->num_nodes--;
-
- Clean:
- if ( list->clazz.node_done )
- list->clazz.node_done( prev, list->data );
-
- FT_FREE( prev );
-
Exit:
*anode = node;
return error;
+
+ Fail:
+ if ( list->clazz.node_done )
+ list->clazz.node_done( node, list->data );
+
+ FT_FREE( node );
+ goto Exit;
}
@@ -300,16 +309,18 @@
FTC_MruList_Remove( FTC_MruList list,
FTC_MruNode node )
{
- FT_Memory memory = list->memory;
-
-
FTC_MruNode_Remove( &list->nodes, node );
list->num_nodes--;
- if ( list->clazz.node_done )
- list->clazz.node_done( node, list->data );
+ {
+ FT_Memory memory = list->memory;
- FT_FREE( node );
+
+ if ( list->clazz.node_done )
+ list->clazz.node_done( node, list->data );
+
+ FT_FREE( node );
+ }
}
diff --git a/src/cache/ftcmru.h b/src/cache/ftcmru.h
index 68faab9..45e5249 100644
--- a/src/cache/ftcmru.h
+++ b/src/cache/ftcmru.h
@@ -4,7 +4,7 @@
*
* Simple MRU list-cache (specification).
*
- * Copyright (C) 2000-2024 by
+ * Copyright (C) 2000-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -95,6 +95,11 @@
FT_Pointer key,
FT_Pointer data );
+ typedef FT_Error
+ (*FTC_MruNode_ResetFunc)( FTC_MruNode node,
+ FT_Pointer key,
+ FT_Pointer data );
+
typedef void
(*FTC_MruNode_DoneFunc)( FTC_MruNode node,
FT_Pointer data );
@@ -106,6 +111,7 @@
FTC_MruNode_CompareFunc node_compare;
FTC_MruNode_InitFunc node_init;
+ FTC_MruNode_ResetFunc node_reset;
FTC_MruNode_DoneFunc node_done;
} FTC_MruListClassRec;
diff --git a/src/cache/ftcsbits.c b/src/cache/ftcsbits.c
index 19f3ef0..9929a0b 100644
--- a/src/cache/ftcsbits.c
+++ b/src/cache/ftcsbits.c
@@ -4,7 +4,7 @@
*
* FreeType sbits manager (body).
*
- * Copyright (C) 2000-2024 by
+ * Copyright (C) 2000-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -53,7 +53,8 @@
size = (FT_ULong)pitch * bitmap->rows;
- FT_MEM_DUP( sbit->buffer, bitmap->buffer, size );
+ if ( !FT_QALLOC( sbit->buffer, size ) )
+ FT_MEM_COPY( sbit->buffer, bitmap->buffer, size );
return error;
}
diff --git a/src/cache/ftcsbits.h b/src/cache/ftcsbits.h
index d7c4a36..e833cb5 100644
--- a/src/cache/ftcsbits.h
+++ b/src/cache/ftcsbits.h
@@ -4,7 +4,7 @@
*
* A small-bitmap cache (specification).
*
- * Copyright (C) 2000-2024 by
+ * Copyright (C) 2000-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/cache/rules.mk b/src/cache/rules.mk
index ace92c5..82b39aa 100644
--- a/src/cache/rules.mk
+++ b/src/cache/rules.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 2000-2024 by
+# Copyright (C) 2000-2023 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/src/cff/cff.c b/src/cff/cff.c
index e3e0096..b486c38 100644
--- a/src/cff/cff.c
+++ b/src/cff/cff.c
@@ -4,7 +4,7 @@
*
* FreeType OpenType driver component (body only).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/cff/cffcmap.c b/src/cff/cffcmap.c
index ea5f8ed..10d287b 100644
--- a/src/cff/cffcmap.c
+++ b/src/cff/cffcmap.c
@@ -4,7 +4,7 @@
*
* CFF character mapping table (cmap) support (body).
*
- * Copyright (C) 2002-2024 by
+ * Copyright (C) 2002-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/cff/cffcmap.h b/src/cff/cffcmap.h
index 1dd8700..b2afc2f 100644
--- a/src/cff/cffcmap.h
+++ b/src/cff/cffcmap.h
@@ -4,7 +4,7 @@
*
* CFF character mapping table (cmap) support (specification).
*
- * Copyright (C) 2002-2024 by
+ * Copyright (C) 2002-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/cff/cffdrivr.c b/src/cff/cffdrivr.c
index f6ebdb3..9898d62 100644
--- a/src/cff/cffdrivr.c
+++ b/src/cff/cffdrivr.c
@@ -4,7 +4,7 @@
*
* OpenType font driver implementation (body).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 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/src/cff/cffdrivr.h b/src/cff/cffdrivr.h
index fd5bc37..ab1f147 100644
--- a/src/cff/cffdrivr.h
+++ b/src/cff/cffdrivr.h
@@ -4,7 +4,7 @@
*
* High-level OpenType driver interface (specification).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/cff/cfferrs.h b/src/cff/cfferrs.h
index 128adc3..bc9a304 100644
--- a/src/cff/cfferrs.h
+++ b/src/cff/cfferrs.h
@@ -4,7 +4,7 @@
*
* CFF error codes (specification only).
*
- * Copyright (C) 2001-2024 by
+ * Copyright (C) 2001-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/cff/cffgload.c b/src/cff/cffgload.c
index cbb071a..c483d1d 100644
--- a/src/cff/cffgload.c
+++ b/src/cff/cffgload.c
@@ -4,7 +4,7 @@
*
* OpenType Glyph Loader (body).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/cff/cffgload.h b/src/cff/cffgload.h
index 346d4b1..3b8cf23 100644
--- a/src/cff/cffgload.h
+++ b/src/cff/cffgload.h
@@ -4,7 +4,7 @@
*
* OpenType Glyph Loader (specification).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/cff/cffload.c b/src/cff/cffload.c
index 979fd45..af79082 100644
--- a/src/cff/cffload.c
+++ b/src/cff/cffload.c
@@ -4,7 +4,7 @@
*
* OpenType and CFF data/program tables loader (body).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -1202,21 +1202,17 @@
{
CFF_AxisCoords* axis = ®ion->axisList[j];
- FT_Int start, peak, end;
+ FT_Int16 start14, peak14, end14;
- if ( FT_READ_SHORT( start ) ||
- FT_READ_SHORT( peak ) ||
- FT_READ_SHORT( end ) )
+ if ( FT_READ_SHORT( start14 ) ||
+ FT_READ_SHORT( peak14 ) ||
+ FT_READ_SHORT( end14 ) )
goto Exit;
- /* immediately tag invalid ranges with special peak = 0 */
- if ( ( start < 0 && end > 0 ) || start > peak || peak > end )
- peak = 0;
-
- axis->startCoord = FT_fdot14ToFixed( start );
- axis->peakCoord = FT_fdot14ToFixed( peak );
- axis->endCoord = FT_fdot14ToFixed( end );
+ axis->startCoord = FT_fdot14ToFixed( start14 );
+ axis->peakCoord = FT_fdot14ToFixed( peak14 );
+ axis->endCoord = FT_fdot14ToFixed( end14 );
}
}
@@ -1383,10 +1379,10 @@
/* opcode in both CFF and CFF2 DICTs. See `cff_parse_num' for */
/* decode of this, which rounds to an integer. */
*subFont->blend_top++ = 255;
- *subFont->blend_top++ = (FT_Byte)( (FT_UInt32)sum >> 24 );
- *subFont->blend_top++ = (FT_Byte)( (FT_UInt32)sum >> 16 );
- *subFont->blend_top++ = (FT_Byte)( (FT_UInt32)sum >> 8 );
- *subFont->blend_top++ = (FT_Byte)( (FT_UInt32)sum );
+ *subFont->blend_top++ = (FT_Byte)( sum >> 24 );
+ *subFont->blend_top++ = (FT_Byte)( sum >> 16 );
+ *subFont->blend_top++ = (FT_Byte)( sum >> 8 );
+ *subFont->blend_top++ = (FT_Byte)sum;
}
/* leave only numBlends results on parser stack */
@@ -1499,31 +1495,44 @@
for ( j = 0; j < lenNDV; j++ )
{
CFF_AxisCoords* axis = &varRegion->axisList[j];
+ FT_Fixed axisScalar;
- /* compute the scalar contribution of this axis */
- /* with peak of 0 used for invalid axes */
- if ( axis->peakCoord == NDV[j] ||
- axis->peakCoord == 0 )
- continue;
+ /* compute the scalar contribution of this axis; */
+ /* ignore invalid ranges */
+ if ( axis->startCoord > axis->peakCoord ||
+ axis->peakCoord > axis->endCoord )
+ axisScalar = FT_FIXED_ONE;
+
+ else if ( axis->startCoord < 0 &&
+ axis->endCoord > 0 &&
+ axis->peakCoord != 0 )
+ axisScalar = FT_FIXED_ONE;
+
+ /* peak of 0 means ignore this axis */
+ else if ( axis->peakCoord == 0 )
+ axisScalar = FT_FIXED_ONE;
/* ignore this region if coords are out of range */
- else if ( NDV[j] <= axis->startCoord ||
- NDV[j] >= axis->endCoord )
+ else if ( NDV[j] < axis->startCoord ||
+ NDV[j] > axis->endCoord )
+ axisScalar = 0;
+
+ /* calculate a proportional factor */
+ else
{
- blend->BV[master] = 0;
- break;
+ if ( NDV[j] == axis->peakCoord )
+ axisScalar = FT_FIXED_ONE;
+ else if ( NDV[j] < axis->peakCoord )
+ axisScalar = FT_DivFix( NDV[j] - axis->startCoord,
+ axis->peakCoord - axis->startCoord );
+ else
+ axisScalar = FT_DivFix( axis->endCoord - NDV[j],
+ axis->endCoord - axis->peakCoord );
}
- /* adjust proportionally */
- else if ( NDV[j] < axis->peakCoord )
- blend->BV[master] = FT_MulDiv( blend->BV[master],
- NDV[j] - axis->startCoord,
- axis->peakCoord - axis->startCoord );
- else /* NDV[j] > axis->peakCoord ) */
- blend->BV[master] = FT_MulDiv( blend->BV[master],
- axis->endCoord - NDV[j],
- axis->endCoord - axis->peakCoord );
+ /* take product of all the axis scalars */
+ blend->BV[master] = FT_MulFix( blend->BV[master], axisScalar );
}
FT_TRACE4(( ", %f ",
diff --git a/src/cff/cffload.h b/src/cff/cffload.h
index 0220924..b5286b0 100644
--- a/src/cff/cffload.h
+++ b/src/cff/cffload.h
@@ -4,7 +4,7 @@
*
* OpenType & CFF data/program tables loader (specification).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/cff/cffobjs.c b/src/cff/cffobjs.c
index 7c67137..6d08620 100644
--- a/src/cff/cffobjs.c
+++ b/src/cff/cffobjs.c
@@ -4,7 +4,7 @@
*
* OpenType objects manager (body).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -42,8 +42,6 @@
#include <freetype/internal/psaux.h>
#include <freetype/internal/services/svcfftl.h>
-#define CFF_fixedToInt( x ) \
- ( (FT_Short)( ( (x) + 0x8000U ) >> 16 ) )
/**************************************************************************
*
@@ -126,20 +124,19 @@
count = priv->num_blue_values = cpriv->num_blue_values;
for ( n = 0; n < count; n++ )
- priv->blue_values[n] = CFF_fixedToInt( cpriv->blue_values[n] );
+ priv->blue_values[n] = (FT_Short)cpriv->blue_values[n];
count = priv->num_other_blues = cpriv->num_other_blues;
for ( n = 0; n < count; n++ )
- priv->other_blues[n] = CFF_fixedToInt( cpriv->other_blues[n] );
+ priv->other_blues[n] = (FT_Short)cpriv->other_blues[n];
count = priv->num_family_blues = cpriv->num_family_blues;
for ( n = 0; n < count; n++ )
- priv->family_blues[n] = CFF_fixedToInt( cpriv->family_blues[n] );
+ priv->family_blues[n] = (FT_Short)cpriv->family_blues[n];
count = priv->num_family_other_blues = cpriv->num_family_other_blues;
for ( n = 0; n < count; n++ )
- priv->family_other_blues[n] =
- CFF_fixedToInt( cpriv->family_other_blues[n] );
+ priv->family_other_blues[n] = (FT_Short)cpriv->family_other_blues[n];
priv->blue_scale = cpriv->blue_scale;
priv->blue_shift = (FT_Int)cpriv->blue_shift;
@@ -424,23 +421,32 @@
static void
remove_subset_prefix( FT_String* name )
{
- FT_UInt32 i = 0, idx = 0;
+ FT_Int32 idx = 0;
+ FT_Int32 length = (FT_Int32)ft_strlen( name ) + 1;
+ FT_Bool continue_search = 1;
- /* six ASCII uppercase letters followed by a plus sign */
- while ( 'A' <= name[i] && name[i++] <= 'Z' &&
- 'A' <= name[i] && name[i++] <= 'Z' &&
- 'A' <= name[i] && name[i++] <= 'Z' &&
- 'A' <= name[i] && name[i++] <= 'Z' &&
- 'A' <= name[i] && name[i++] <= 'Z' &&
- 'A' <= name[i] && name[i++] <= 'Z' &&
- name[i++] == '+' )
+ while ( continue_search )
{
- idx = i;
- }
+ if ( length >= 7 && name[6] == '+' )
+ {
+ for ( idx = 0; idx < 6; idx++ )
+ {
+ /* ASCII uppercase letters */
+ if ( !( 'A' <= name[idx] && name[idx] <= 'Z' ) )
+ continue_search = 0;
+ }
- if ( idx )
- FT_MEM_MOVE( name, name + idx, ft_strlen( name + idx ) + 1 );
+ if ( continue_search )
+ {
+ for ( idx = 7; idx < length; idx++ )
+ name[idx - 7] = name[idx];
+ length -= 7;
+ }
+ }
+ else
+ continue_search = 0;
+ }
}
@@ -450,20 +456,42 @@
remove_style( FT_String* family_name,
const FT_String* style_name )
{
- FT_String* f = family_name + ft_strlen( family_name );
- const FT_String* s = style_name + ft_strlen( style_name );
+ FT_Int32 family_name_length, style_name_length;
- /* compare strings moving backwards */
- while ( s > style_name )
- if ( f == family_name || *--s != *--f )
- return;
+ family_name_length = (FT_Int32)ft_strlen( family_name );
+ style_name_length = (FT_Int32)ft_strlen( style_name );
- /* terminate and remove special characters */
- do
- *f = '\0';
- while ( f-- > family_name &&
- ( *f == '-' || *f == ' ' || *f == '_' || *f == '+' ) );
+ if ( family_name_length > style_name_length )
+ {
+ FT_Int idx;
+
+
+ for ( idx = 1; idx <= style_name_length; idx++ )
+ {
+ if ( family_name[family_name_length - idx] !=
+ style_name[style_name_length - idx] )
+ break;
+ }
+
+ if ( idx > style_name_length )
+ {
+ /* family_name ends with style_name; remove it */
+ idx = family_name_length - style_name_length - 1;
+
+ /* also remove special characters */
+ /* between real family name and style */
+ while ( idx > 0 &&
+ ( family_name[idx] == '-' ||
+ family_name[idx] == ' ' ||
+ family_name[idx] == '_' ||
+ family_name[idx] == '+' ) )
+ idx--;
+
+ if ( idx > 0 )
+ family_name[idx + 1] = '\0';
+ }
+ }
}
@@ -694,7 +722,8 @@
FT_UInt instance_index = (FT_UInt)face_index >> 16;
- if ( FT_HAS_MULTIPLE_MASTERS( cffface ) )
+ if ( FT_HAS_MULTIPLE_MASTERS( cffface ) &&
+ instance_index > 0 )
{
error = FT_Set_Named_Instance( cffface, instance_index );
if ( error )
diff --git a/src/cff/cffobjs.h b/src/cff/cffobjs.h
index 91ad83b..8f05f61 100644
--- a/src/cff/cffobjs.h
+++ b/src/cff/cffobjs.h
@@ -4,7 +4,7 @@
*
* OpenType objects manager (specification).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/cff/cffparse.c b/src/cff/cffparse.c
index 92a69c3..3b07670 100644
--- a/src/cff/cffparse.c
+++ b/src/cff/cffparse.c
@@ -4,7 +4,7 @@
*
* CFF token stream parser (body)
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -501,10 +501,10 @@
return cff_parse_real( *d, parser->limit, scaling, NULL );
else if ( **d == 255 )
{
- FT_Fixed val = (FT_Int32)( ( ( (FT_UInt32)*( d[0] + 1 ) << 24 ) |
- ( (FT_UInt32)*( d[0] + 2 ) << 16 ) |
- ( (FT_UInt32)*( d[0] + 3 ) << 8 ) |
- (FT_UInt32)*( d[0] + 4 ) ) );
+ FT_Fixed val = ( ( ( (FT_UInt32)*( d[0] + 1 ) << 24 ) |
+ ( (FT_UInt32)*( d[0] + 2 ) << 16 ) |
+ ( (FT_UInt32)*( d[0] + 3 ) << 8 ) |
+ (FT_UInt32)*( d[0] + 4 ) ) );
if ( scaling )
{
@@ -1031,14 +1031,10 @@
CFF_FIELD( code, name, id, cff_kind_string )
#define CFF_FIELD_BOOL( code, name, id ) \
CFF_FIELD( code, name, id, cff_kind_bool )
-#define CFF_FIELD_DELTA( code, name, max, id ) \
- CFF_FIELD_DELTA_KIND( code, name, max, id, cff_kind_delta )
-#define CFF_FIELD_DELTA_FIXED( code, name, max, id ) \
- CFF_FIELD_DELTA_KIND( code, name, max, id, cff_kind_delta_fixed )
#undef CFF_FIELD
-#undef CFF_FIELD_DELTA_KIND
+#undef CFF_FIELD_DELTA
#ifndef FT_DEBUG_LEVEL_TRACE
@@ -1068,18 +1064,18 @@
code | CFFCODE, \
FT_FIELD_OFFSET( name ), \
FT_FIELD_SIZE( name ), \
- NULL, 0, 0 \
+ 0, 0, 0 \
},
-#define CFF_FIELD_DELTA_KIND( code, name, max, id, kind ) \
- { \
- kind, \
- code | CFFCODE, \
- FT_FIELD_OFFSET( name ), \
- FT_FIELD_SIZE_DELTA( name ), \
- NULL, \
- max, \
- FT_FIELD_OFFSET( num_ ## name ) \
+#define CFF_FIELD_DELTA( code, name, max, id ) \
+ { \
+ cff_kind_delta, \
+ code | CFFCODE, \
+ FT_FIELD_OFFSET( name ), \
+ FT_FIELD_SIZE_DELTA( name ), \
+ 0, \
+ max, \
+ FT_FIELD_OFFSET( num_ ## name ) \
},
static const CFF_Field_Handler cff_field_handlers[] =
@@ -1087,7 +1083,7 @@
#include "cfftoken.h"
- { 0, 0, 0, 0, NULL, 0, 0 }
+ { 0, 0, 0, 0, 0, 0, 0 }
};
@@ -1121,20 +1117,20 @@
code | CFFCODE, \
FT_FIELD_OFFSET( name ), \
FT_FIELD_SIZE( name ), \
- NULL, 0, 0, \
+ 0, 0, 0, \
id \
},
-#define CFF_FIELD_DELTA_KIND( code, name, max, id, kind ) \
- { \
- kind, \
- code | CFFCODE, \
- FT_FIELD_OFFSET( name ), \
- FT_FIELD_SIZE_DELTA( name ), \
- NULL, \
- max, \
- FT_FIELD_OFFSET( num_ ## name ), \
- id \
+#define CFF_FIELD_DELTA( code, name, max, id ) \
+ { \
+ cff_kind_delta, \
+ code | CFFCODE, \
+ FT_FIELD_OFFSET( name ), \
+ FT_FIELD_SIZE_DELTA( name ), \
+ 0, \
+ max, \
+ FT_FIELD_OFFSET( num_ ## name ), \
+ id \
},
static const CFF_Field_Handler cff_field_handlers[] =
@@ -1142,7 +1138,7 @@
#include "cfftoken.h"
- { 0, 0, 0, 0, NULL, 0, 0, NULL }
+ { 0, 0, 0, 0, 0, 0, 0, 0 }
};
@@ -1360,8 +1356,7 @@
/* check that we have enough arguments -- except for */
/* delta encoded arrays, which can be empty */
- if ( field->kind != cff_kind_delta &&
- field->kind != cff_kind_delta_fixed && num_args < 1 )
+ if ( field->kind != cff_kind_delta && num_args < 1 )
goto Stack_Underflow;
switch ( field->kind )
@@ -1476,38 +1471,6 @@
}
break;
- case cff_kind_delta_fixed:
- {
- FT_Byte* qcount = (FT_Byte*)parser->object +
- field->count_offset;
-
- FT_Byte** data = parser->stack;
-
-
- if ( num_args > field->array_max )
- num_args = field->array_max;
-
- FT_TRACE4(( " [" ));
-
- /* store count */
- *qcount = (FT_Byte)num_args;
-
- val = 0;
- while ( num_args > 0 )
- {
- val = ADD_LONG( val, cff_parse_fixed( parser, data++ ) );
- *(FT_Long*)q = val;
-
- FT_TRACE4(( " %f\n", (double)val / 65536 ));
-
- q += field->size;
- num_args--;
- }
-
- FT_TRACE4(( "]\n" ));
- }
- break;
-
default: /* callback or blend */
error = field->reader( parser );
if ( error )
diff --git a/src/cff/cffparse.h b/src/cff/cffparse.h
index ca6b18a..418caac 100644
--- a/src/cff/cffparse.h
+++ b/src/cff/cffparse.h
@@ -4,7 +4,7 @@
*
* CFF token stream parser (specification)
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -107,7 +107,6 @@
cff_kind_string,
cff_kind_bool,
cff_kind_delta,
- cff_kind_delta_fixed,
cff_kind_callback,
cff_kind_blend,
diff --git a/src/cff/cfftoken.h b/src/cff/cfftoken.h
index da45faa..b61cb0e 100644
--- a/src/cff/cfftoken.h
+++ b/src/cff/cfftoken.h
@@ -4,7 +4,7 @@
*
* CFF token definitions (specification only).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -80,26 +80,26 @@
#undef CFFCODE
#define CFFCODE CFF_CODE_PRIVATE
- CFF_FIELD_DELTA_FIXED( 6, blue_values, 14, "BlueValues" )
- CFF_FIELD_DELTA_FIXED( 7, other_blues, 10, "OtherBlues" )
- CFF_FIELD_DELTA_FIXED( 8, family_blues, 14, "FamilyBlues" )
- CFF_FIELD_DELTA_FIXED( 9, family_other_blues, 10, "FamilyOtherBlues" )
- CFF_FIELD_FIXED_1000 ( 0x109, blue_scale, "BlueScale" )
- CFF_FIELD_NUM ( 0x10A, blue_shift, "BlueShift" )
- CFF_FIELD_NUM ( 0x10B, blue_fuzz, "BlueFuzz" )
- CFF_FIELD_NUM ( 10, standard_width, "StdHW" )
- CFF_FIELD_NUM ( 11, standard_height, "StdVW" )
- CFF_FIELD_DELTA ( 0x10C, snap_widths, 13, "StemSnapH" )
- CFF_FIELD_DELTA ( 0x10D, snap_heights, 13, "StemSnapV" )
- CFF_FIELD_BOOL ( 0x10E, force_bold, "ForceBold" )
- CFF_FIELD_FIXED ( 0x10F, force_bold_threshold, "ForceBoldThreshold" )
- CFF_FIELD_NUM ( 0x110, lenIV, "lenIV" )
- CFF_FIELD_NUM ( 0x111, language_group, "LanguageGroup" )
- CFF_FIELD_FIXED ( 0x112, expansion_factor, "ExpansionFactor" )
- CFF_FIELD_NUM ( 0x113, initial_random_seed, "initialRandomSeed" )
- CFF_FIELD_NUM ( 19, local_subrs_offset, "Subrs" )
- CFF_FIELD_NUM ( 20, default_width, "defaultWidthX" )
- CFF_FIELD_NUM ( 21, nominal_width, "nominalWidthX" )
+ CFF_FIELD_DELTA ( 6, blue_values, 14, "BlueValues" )
+ CFF_FIELD_DELTA ( 7, other_blues, 10, "OtherBlues" )
+ CFF_FIELD_DELTA ( 8, family_blues, 14, "FamilyBlues" )
+ CFF_FIELD_DELTA ( 9, family_other_blues, 10, "FamilyOtherBlues" )
+ CFF_FIELD_FIXED_1000( 0x109, blue_scale, "BlueScale" )
+ CFF_FIELD_NUM ( 0x10A, blue_shift, "BlueShift" )
+ CFF_FIELD_NUM ( 0x10B, blue_fuzz, "BlueFuzz" )
+ CFF_FIELD_NUM ( 10, standard_width, "StdHW" )
+ CFF_FIELD_NUM ( 11, standard_height, "StdVW" )
+ CFF_FIELD_DELTA ( 0x10C, snap_widths, 13, "StemSnapH" )
+ CFF_FIELD_DELTA ( 0x10D, snap_heights, 13, "StemSnapV" )
+ CFF_FIELD_BOOL ( 0x10E, force_bold, "ForceBold" )
+ CFF_FIELD_FIXED ( 0x10F, force_bold_threshold, "ForceBoldThreshold" )
+ CFF_FIELD_NUM ( 0x110, lenIV, "lenIV" )
+ CFF_FIELD_NUM ( 0x111, language_group, "LanguageGroup" )
+ CFF_FIELD_FIXED ( 0x112, expansion_factor, "ExpansionFactor" )
+ CFF_FIELD_NUM ( 0x113, initial_random_seed, "initialRandomSeed" )
+ CFF_FIELD_NUM ( 19, local_subrs_offset, "Subrs" )
+ CFF_FIELD_NUM ( 20, default_width, "defaultWidthX" )
+ CFF_FIELD_NUM ( 21, nominal_width, "nominalWidthX" )
#undef FT_STRUCTURE
@@ -129,22 +129,22 @@
#undef CFFCODE
#define CFFCODE CFF2_CODE_PRIVATE
- CFF_FIELD_DELTA_FIXED( 6, blue_values, 14, "BlueValues" )
- CFF_FIELD_DELTA_FIXED( 7, other_blues, 10, "OtherBlues" )
- CFF_FIELD_DELTA_FIXED( 8, family_blues, 14, "FamilyBlues" )
- CFF_FIELD_DELTA_FIXED( 9, family_other_blues, 10, "FamilyOtherBlues" )
- CFF_FIELD_FIXED_1000 ( 0x109, blue_scale, "BlueScale" )
- CFF_FIELD_NUM ( 0x10A, blue_shift, "BlueShift" )
- CFF_FIELD_NUM ( 0x10B, blue_fuzz, "BlueFuzz" )
- CFF_FIELD_NUM ( 10, standard_width, "StdHW" )
- CFF_FIELD_NUM ( 11, standard_height, "StdVW" )
- CFF_FIELD_DELTA ( 0x10C, snap_widths, 13, "StemSnapH" )
- CFF_FIELD_DELTA ( 0x10D, snap_heights, 13, "StemSnapV" )
- CFF_FIELD_NUM ( 0x111, language_group, "LanguageGroup" )
- CFF_FIELD_FIXED ( 0x112, expansion_factor, "ExpansionFactor" )
- CFF_FIELD_CALLBACK ( 22, vsindex, "vsindex" )
- CFF_FIELD_BLEND ( 23, "blend" )
- CFF_FIELD_NUM ( 19, local_subrs_offset, "Subrs" )
+ CFF_FIELD_DELTA ( 6, blue_values, 14, "BlueValues" )
+ CFF_FIELD_DELTA ( 7, other_blues, 10, "OtherBlues" )
+ CFF_FIELD_DELTA ( 8, family_blues, 14, "FamilyBlues" )
+ CFF_FIELD_DELTA ( 9, family_other_blues, 10, "FamilyOtherBlues" )
+ CFF_FIELD_FIXED_1000( 0x109, blue_scale, "BlueScale" )
+ CFF_FIELD_NUM ( 0x10A, blue_shift, "BlueShift" )
+ CFF_FIELD_NUM ( 0x10B, blue_fuzz, "BlueFuzz" )
+ CFF_FIELD_NUM ( 10, standard_width, "StdHW" )
+ CFF_FIELD_NUM ( 11, standard_height, "StdVW" )
+ CFF_FIELD_DELTA ( 0x10C, snap_widths, 13, "StemSnapH" )
+ CFF_FIELD_DELTA ( 0x10D, snap_heights, 13, "StemSnapV" )
+ CFF_FIELD_NUM ( 0x111, language_group, "LanguageGroup" )
+ CFF_FIELD_FIXED ( 0x112, expansion_factor, "ExpansionFactor" )
+ CFF_FIELD_CALLBACK ( 22, vsindex, "vsindex" )
+ CFF_FIELD_BLEND ( 23, "blend" )
+ CFF_FIELD_NUM ( 19, local_subrs_offset, "Subrs" )
/* END */
diff --git a/src/cff/module.mk b/src/cff/module.mk
index 2c89cc6..b881d04 100644
--- a/src/cff/module.mk
+++ b/src/cff/module.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 1996-2024 by
+# Copyright (C) 1996-2023 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/src/cff/rules.mk b/src/cff/rules.mk
index 8d4d645..629424a 100644
--- a/src/cff/rules.mk
+++ b/src/cff/rules.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 1996-2024 by
+# Copyright (C) 1996-2023 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/src/cid/ciderrs.h b/src/cid/ciderrs.h
index c439a8c..40a1097 100644
--- a/src/cid/ciderrs.h
+++ b/src/cid/ciderrs.h
@@ -4,7 +4,7 @@
*
* CID error codes (specification only).
*
- * Copyright (C) 2001-2024 by
+ * Copyright (C) 2001-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/cid/cidgload.c b/src/cid/cidgload.c
index 7b57132..eaca765 100644
--- a/src/cid/cidgload.c
+++ b/src/cid/cidgload.c
@@ -4,7 +4,7 @@
*
* CID-keyed Type1 Glyph Loader (body).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/cid/cidgload.h b/src/cid/cidgload.h
index 9fdc9db..edd6229 100644
--- a/src/cid/cidgload.h
+++ b/src/cid/cidgload.h
@@ -4,7 +4,7 @@
*
* OpenType Glyph Loader (specification).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/cid/cidload.c b/src/cid/cidload.c
index 722f5a3..a7da8ea 100644
--- a/src/cid/cidload.c
+++ b/src/cid/cidload.c
@@ -4,7 +4,7 @@
*
* CID-keyed Type1 font loader (body).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -388,7 +388,7 @@
T1_FIELD_CALLBACK( "ExpansionFactor", parse_expansion_factor, 0 )
T1_FIELD_CALLBACK( "FontName", parse_font_name, 0 )
- T1_FIELD_ZERO
+ { 0, T1_FIELD_LOCATION_CID_INFO, T1_FIELD_TYPE_NONE, 0, 0, 0, 0, 0, 0 }
};
@@ -469,23 +469,36 @@
T1_Field keyword = (T1_Field)cid_field_records;
- while ( keyword->len )
+ for (;;)
{
- FT_Byte* name = (FT_Byte*)keyword->ident;
+ FT_Byte* name;
- if ( keyword->len == len &&
- ft_memcmp( cur, name, len ) == 0 )
- {
- /* we found it - run the parsing callback */
- parser->root.error = cid_load_keyword( face,
- loader,
- keyword );
- if ( parser->root.error )
- return parser->root.error;
+ name = (FT_Byte*)keyword->ident;
+ if ( !name )
break;
- }
+ if ( cur[0] == name[0] &&
+ len == ft_strlen( (const char*)name ) )
+ {
+ FT_UInt n;
+
+
+ for ( n = 1; n < len; n++ )
+ if ( cur[n] != name[n] )
+ break;
+
+ if ( n >= len )
+ {
+ /* we found it - run the parsing callback */
+ parser->root.error = cid_load_keyword( face,
+ loader,
+ keyword );
+ if ( parser->root.error )
+ return parser->root.error;
+ break;
+ }
+ }
keyword++;
}
}
diff --git a/src/cid/cidload.h b/src/cid/cidload.h
index 7f030b3..d12d296 100644
--- a/src/cid/cidload.h
+++ b/src/cid/cidload.h
@@ -4,7 +4,7 @@
*
* CID-keyed Type1 font loader (specification).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/cid/cidobjs.c b/src/cid/cidobjs.c
index 8d337c4..f698a41 100644
--- a/src/cid/cidobjs.c
+++ b/src/cid/cidobjs.c
@@ -4,7 +4,7 @@
*
* CID objects manager (body).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/cid/cidobjs.h b/src/cid/cidobjs.h
index d371cbe..83c0c61 100644
--- a/src/cid/cidobjs.h
+++ b/src/cid/cidobjs.h
@@ -4,7 +4,7 @@
*
* CID objects manager (specification).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/cid/cidparse.c b/src/cid/cidparse.c
index 73a3ade..171a886 100644
--- a/src/cid/cidparse.c
+++ b/src/cid/cidparse.c
@@ -4,7 +4,7 @@
*
* CID-keyed Type1 parser (body).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -90,15 +90,10 @@
if ( error )
goto Exit;
- if ( !stream->read ) {
- /* just parse memory-based streams */
- offset = stream->size;
- }
- else
+ Again:
+ /* now, read the rest of the file until we find */
+ /* `StartData' or `/sfnts' */
{
- /* Find the last `StartData` or `/sfnts`. The parser requires */
- /* contiguous memory; attempt to pin as little as necessary. */
-
/*
* The algorithm is as follows (omitting the case with less than 256
* bytes to fill for simplicity).
@@ -124,8 +119,7 @@
FT_Byte* p = buffer;
- offset = 0;
- while ( 1 )
+ for ( offset = FT_STREAM_POS(); ; offset += 256 )
{
FT_ULong stream_len;
@@ -133,7 +127,7 @@
stream_len = stream->size - FT_STREAM_POS();
read_len = FT_MIN( read_len, stream_len );
- if ( read_len && FT_STREAM_READ( p, read_len ) )
+ if ( FT_STREAM_READ( p, read_len ) )
goto Exit;
/* ensure that we do not compare with data beyond the buffer */
@@ -147,23 +141,20 @@
ft_strncmp( (char*)p, STARTDATA, STARTDATA_LEN ) == 0 )
{
/* save offset of binary data after `StartData' */
- offset = FT_STREAM_POS() - read_len - read_offset
- + (FT_ULong)( p - buffer ) + STARTDATA_LEN + 1;
+ offset += (FT_ULong)( p - buffer ) + STARTDATA_LEN + 1;
+ goto Found;
}
else if ( p[1] == 's' &&
ft_strncmp( (char*)p, SFNTS, SFNTS_LEN ) == 0 )
{
- offset = FT_STREAM_POS() - read_len - read_offset
- + (FT_ULong)( p - buffer ) + SFNTS_LEN + 1;
+ offset += (FT_ULong)( p - buffer ) + SFNTS_LEN + 1;
+ goto Found;
}
}
- if ( read_offset + read_len <= STARTDATA_LEN )
+ if ( read_offset + read_len < STARTDATA_LEN )
{
- if ( offset )
- goto Found;
-
- FT_TRACE2(( "cid_parser_new: no `StartData` keyword found\n" ));
+ FT_TRACE2(( "cid_parser_new: no `StartData' keyword found\n" ));
error = FT_THROW( Invalid_File_Format );
goto Exit;
}
@@ -180,9 +171,9 @@
}
Found:
- /* We have found an efficient range to look for the binary data or */
- /* `/sfnts' token. Now rewind and extract the frame corresponding to */
- /* this PostScript section. */
+ /* We have found the start of the binary data or the `/sfnts' token. */
+ /* Now rewind and extract the frame corresponding to this PostScript */
+ /* section. */
ps_len = offset - base_offset;
if ( FT_STREAM_SEEK( base_offset ) ||
@@ -196,8 +187,8 @@
parser->root.limit = parser->root.cursor + ps_len;
parser->num_dict = FT_UINT_MAX;
- /* Find the first real `StartData' or `/sfnts' -- the last one */
- /* could be in a comment or string. We also get the arguments */
+ /* Finally, we check whether `StartData' or `/sfnts' was real -- */
+ /* it could be in a comment or string. We also get the arguments */
/* of `StartData' to find out whether the data is represented in */
/* binary or hex format. */
@@ -225,7 +216,6 @@
{
T1_TokenRec type_token;
FT_Long binary_length;
- FT_ULong found_offset;
parser->root.cursor = arg1;
@@ -244,24 +234,6 @@
parser->binary_length = (FT_ULong)binary_length;
}
- /* set the real values for the parser, if different */
- found_offset = (FT_ULong)( cur - parser->postscript )
- + STARTDATA_LEN + 1;
- if ( found_offset != offset )
- {
- FT_FRAME_RELEASE( parser->postscript );
-
- ps_len = found_offset - base_offset;
- if ( FT_STREAM_SEEK( base_offset ) ||
- FT_FRAME_EXTRACT( ps_len, parser->postscript ) )
- goto Exit;
-
- parser->data_offset = found_offset;
- parser->postscript_len = ps_len;
- parser->root.base = parser->postscript;
- parser->root.cursor = parser->postscript;
- parser->root.limit = parser->root.cursor + ps_len;
- }
goto Exit;
}
else if ( cur[1] == 's' &&
@@ -279,8 +251,11 @@
cur = parser->root.cursor;
}
- FT_TRACE2(( "cid_parser_new: no `StartData` token found\n" ));
- error = FT_THROW( Invalid_File_Format );
+ /* we haven't found the correct `StartData'; go back and continue */
+ /* searching */
+ FT_FRAME_RELEASE( parser->postscript );
+ if ( !FT_STREAM_SEEK( offset ) )
+ goto Again;
Exit:
return error;
diff --git a/src/cid/cidparse.h b/src/cid/cidparse.h
index 0f5badd..2fd4e7a 100644
--- a/src/cid/cidparse.h
+++ b/src/cid/cidparse.h
@@ -4,7 +4,7 @@
*
* CID-keyed Type1 parser (specification).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/cid/cidriver.c b/src/cid/cidriver.c
index 4be8a5c..99e7b11 100644
--- a/src/cid/cidriver.c
+++ b/src/cid/cidriver.c
@@ -4,7 +4,7 @@
*
* CID driver interface (body).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/cid/cidriver.h b/src/cid/cidriver.h
index 7ddce43..a624938 100644
--- a/src/cid/cidriver.h
+++ b/src/cid/cidriver.h
@@ -4,7 +4,7 @@
*
* High-level CID driver interface (specification).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/cid/cidtoken.h b/src/cid/cidtoken.h
index 160897d..925951a 100644
--- a/src/cid/cidtoken.h
+++ b/src/cid/cidtoken.h
@@ -4,7 +4,7 @@
*
* CID token definitions (specification only).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/cid/module.mk b/src/cid/module.mk
index c65a69f..563cb34 100644
--- a/src/cid/module.mk
+++ b/src/cid/module.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 1996-2024 by
+# Copyright (C) 1996-2023 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/src/cid/rules.mk b/src/cid/rules.mk
index 85ac737..c526ad3 100644
--- a/src/cid/rules.mk
+++ b/src/cid/rules.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 1996-2024 by
+# Copyright (C) 1996-2023 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/src/cid/type1cid.c b/src/cid/type1cid.c
index 890a3ac..905c896 100644
--- a/src/cid/type1cid.c
+++ b/src/cid/type1cid.c
@@ -4,7 +4,7 @@
*
* FreeType OpenType driver component (body only).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/dlg/dlgwrap.c b/src/dlg/dlgwrap.c
index e6053cd..e9dc341 100644
--- a/src/dlg/dlgwrap.c
+++ b/src/dlg/dlgwrap.c
@@ -4,7 +4,7 @@
*
* Wrapper file for the 'dlg' library (body only)
*
- * Copyright (C) 2020-2024 by
+ * Copyright (C) 2020-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/dlg/rules.mk b/src/dlg/rules.mk
index 1495363..7f506fd 100644
--- a/src/dlg/rules.mk
+++ b/src/dlg/rules.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 2020-2024 by
+# Copyright (C) 2020-2023 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/src/gxvalid/README b/src/gxvalid/README
index efd792c..0e3db32 100644
--- a/src/gxvalid/README
+++ b/src/gxvalid/README
@@ -518,7 +518,7 @@
------------------------------------------------------------------------
-Copyright (C) 2004-2024 by
+Copyright (C) 2004-2023 by
suzuki toshiya, Masatake YAMATO, Red hat K.K.,
David Turner, Robert Wilhelm, and Werner Lemberg.
diff --git a/src/gxvalid/gxvalid.c b/src/gxvalid/gxvalid.c
index 6694c34..e0359f4 100644
--- a/src/gxvalid/gxvalid.c
+++ b/src/gxvalid/gxvalid.c
@@ -4,7 +4,7 @@
*
* FreeType validator for TrueTypeGX/AAT tables (body only).
*
- * Copyright (C) 2005-2024 by
+ * Copyright (C) 2005-2023 by
* suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
diff --git a/src/gxvalid/gxvalid.h b/src/gxvalid/gxvalid.h
index 4ddb625..a83408b 100644
--- a/src/gxvalid/gxvalid.h
+++ b/src/gxvalid/gxvalid.h
@@ -4,7 +4,7 @@
*
* TrueTypeGX/AAT table validation (specification only).
*
- * Copyright (C) 2005-2024 by
+ * Copyright (C) 2005-2023 by
* suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
diff --git a/src/gxvalid/gxvbsln.c b/src/gxvalid/gxvbsln.c
index e3a922a..030a64e 100644
--- a/src/gxvalid/gxvbsln.c
+++ b/src/gxvalid/gxvbsln.c
@@ -4,7 +4,7 @@
*
* TrueTypeGX/AAT bsln table validation (body).
*
- * Copyright (C) 2004-2024 by
+ * Copyright (C) 2004-2023 by
* suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
diff --git a/src/gxvalid/gxvcommn.c b/src/gxvalid/gxvcommn.c
index 5f8fa11..7f90874 100644
--- a/src/gxvalid/gxvcommn.c
+++ b/src/gxvalid/gxvcommn.c
@@ -4,7 +4,7 @@
*
* TrueTypeGX/AAT common tables validation (body).
*
- * Copyright (C) 2004-2024 by
+ * Copyright (C) 2004-2023 by
* suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
diff --git a/src/gxvalid/gxvcommn.h b/src/gxvalid/gxvcommn.h
index 4dbac1d..f88d23a 100644
--- a/src/gxvalid/gxvcommn.h
+++ b/src/gxvalid/gxvcommn.h
@@ -4,7 +4,7 @@
*
* TrueTypeGX/AAT common tables validation (specification).
*
- * Copyright (C) 2004-2024 by
+ * Copyright (C) 2004-2023 by
* suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
@@ -516,6 +516,9 @@
FT_INVALID_TOO_SHORT; \
FT_END_STMNT
+#define GXV_USHORT_TO_SHORT( _us ) \
+ ( ( 0x8000U < ( _us ) ) ? ( ( _us ) - 0x8000U ) : ( _us ) )
+
#define GXV_STATETABLE_HEADER_SIZE ( 2 + 2 + 2 + 2 )
#define GXV_STATEHEADER_SIZE GXV_STATETABLE_HEADER_SIZE
diff --git a/src/gxvalid/gxverror.h b/src/gxvalid/gxverror.h
index 750f22f..09311ed 100644
--- a/src/gxvalid/gxverror.h
+++ b/src/gxvalid/gxverror.h
@@ -4,7 +4,7 @@
*
* TrueTypeGX/AAT validation module error codes (specification only).
*
- * Copyright (C) 2004-2024 by
+ * Copyright (C) 2004-2023 by
* suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
diff --git a/src/gxvalid/gxvfeat.c b/src/gxvalid/gxvfeat.c
index 57b3892..6cf1821 100644
--- a/src/gxvalid/gxvfeat.c
+++ b/src/gxvalid/gxvfeat.c
@@ -4,7 +4,7 @@
*
* TrueTypeGX/AAT feat table validation (body).
*
- * Copyright (C) 2004-2024 by
+ * Copyright (C) 2004-2023 by
* suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
diff --git a/src/gxvalid/gxvfeat.h b/src/gxvalid/gxvfeat.h
index dd8f1bf..b33c1bc 100644
--- a/src/gxvalid/gxvfeat.h
+++ b/src/gxvalid/gxvfeat.h
@@ -4,7 +4,7 @@
*
* TrueTypeGX/AAT feat table validation (specification).
*
- * Copyright (C) 2004-2024 by
+ * Copyright (C) 2004-2023 by
* suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
diff --git a/src/gxvalid/gxvfgen.c b/src/gxvalid/gxvfgen.c
index 27a4ed9..cf98bb3 100644
--- a/src/gxvalid/gxvfgen.c
+++ b/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-2024 by
+ * Copyright (C) 2004-2023 by
* Masatake YAMATO and Redhat K.K.
*
* This file may only be used,
diff --git a/src/gxvalid/gxvjust.c b/src/gxvalid/gxvjust.c
index 1cf9e84..5cca94d 100644
--- a/src/gxvalid/gxvjust.c
+++ b/src/gxvalid/gxvjust.c
@@ -4,7 +4,7 @@
*
* TrueTypeGX/AAT just table validation (body).
*
- * Copyright (C) 2005-2024 by
+ * Copyright (C) 2005-2023 by
* suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
diff --git a/src/gxvalid/gxvkern.c b/src/gxvalid/gxvkern.c
index cf8c51f..21fc245 100644
--- a/src/gxvalid/gxvkern.c
+++ b/src/gxvalid/gxvkern.c
@@ -4,7 +4,7 @@
*
* TrueTypeGX/AAT kern table validation (body).
*
- * Copyright (C) 2004-2024 by
+ * Copyright (C) 2004-2023 by
* suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
diff --git a/src/gxvalid/gxvlcar.c b/src/gxvalid/gxvlcar.c
index 0b310f4..5f3bf89 100644
--- a/src/gxvalid/gxvlcar.c
+++ b/src/gxvalid/gxvlcar.c
@@ -4,7 +4,7 @@
*
* TrueTypeGX/AAT lcar table validation (body).
*
- * Copyright (C) 2004-2024 by
+ * Copyright (C) 2004-2023 by
* suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
diff --git a/src/gxvalid/gxvmod.c b/src/gxvalid/gxvmod.c
index ce1e441..0b4115b 100644
--- a/src/gxvalid/gxvmod.c
+++ b/src/gxvalid/gxvmod.c
@@ -4,7 +4,7 @@
*
* FreeType's TrueTypeGX/AAT validation module implementation (body).
*
- * Copyright (C) 2004-2024 by
+ * Copyright (C) 2004-2023 by
* suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
diff --git a/src/gxvalid/gxvmod.h b/src/gxvalid/gxvmod.h
index 6def5c5..db3d1d9 100644
--- a/src/gxvalid/gxvmod.h
+++ b/src/gxvalid/gxvmod.h
@@ -5,7 +5,7 @@
* FreeType's TrueTypeGX/AAT validation module implementation
* (specification).
*
- * Copyright (C) 2004-2024 by
+ * Copyright (C) 2004-2023 by
* suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
diff --git a/src/gxvalid/gxvmort.c b/src/gxvalid/gxvmort.c
index 5ad9d81..7032d63 100644
--- a/src/gxvalid/gxvmort.c
+++ b/src/gxvalid/gxvmort.c
@@ -4,7 +4,7 @@
*
* TrueTypeGX/AAT mort table validation (body).
*
- * Copyright (C) 2005-2024 by
+ * Copyright (C) 2005-2023 by
* suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
diff --git a/src/gxvalid/gxvmort.h b/src/gxvalid/gxvmort.h
index a3970e7..5c819bd 100644
--- a/src/gxvalid/gxvmort.h
+++ b/src/gxvalid/gxvmort.h
@@ -4,7 +4,7 @@
*
* TrueTypeGX/AAT common definition for mort table (specification).
*
- * Copyright (C) 2004-2024 by
+ * Copyright (C) 2004-2023 by
* suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
diff --git a/src/gxvalid/gxvmort0.c b/src/gxvalid/gxvmort0.c
index 1a05a6d..24e70a0 100644
--- a/src/gxvalid/gxvmort0.c
+++ b/src/gxvalid/gxvmort0.c
@@ -5,7 +5,7 @@
* TrueTypeGX/AAT mort table validation
* body for type0 (Indic Script Rearrangement) subtable.
*
- * Copyright (C) 2005-2024 by
+ * Copyright (C) 2005-2023 by
* suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
diff --git a/src/gxvalid/gxvmort1.c b/src/gxvalid/gxvmort1.c
index f99a8a4..ea5591f 100644
--- a/src/gxvalid/gxvmort1.c
+++ b/src/gxvalid/gxvmort1.c
@@ -5,7 +5,7 @@
* TrueTypeGX/AAT mort table validation
* body for type1 (Contextual Substitution) subtable.
*
- * Copyright (C) 2005-2024 by
+ * Copyright (C) 2005-2023 by
* suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
diff --git a/src/gxvalid/gxvmort2.c b/src/gxvalid/gxvmort2.c
index 18c9be6..50644f0 100644
--- a/src/gxvalid/gxvmort2.c
+++ b/src/gxvalid/gxvmort2.c
@@ -5,7 +5,7 @@
* TrueTypeGX/AAT mort table validation
* body for type2 (Ligature Substitution) subtable.
*
- * Copyright (C) 2005-2024 by
+ * Copyright (C) 2005-2023 by
* suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
diff --git a/src/gxvalid/gxvmort4.c b/src/gxvalid/gxvmort4.c
index bc190fa..0641b11 100644
--- a/src/gxvalid/gxvmort4.c
+++ b/src/gxvalid/gxvmort4.c
@@ -5,7 +5,7 @@
* TrueTypeGX/AAT mort table validation
* body for type4 (Non-Contextual Glyph Substitution) subtable.
*
- * Copyright (C) 2005-2024 by
+ * Copyright (C) 2005-2023 by
* suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
diff --git a/src/gxvalid/gxvmort5.c b/src/gxvalid/gxvmort5.c
index 8211a29..9225bb0 100644
--- a/src/gxvalid/gxvmort5.c
+++ b/src/gxvalid/gxvmort5.c
@@ -5,7 +5,7 @@
* TrueTypeGX/AAT mort table validation
* body for type5 (Contextual Glyph Insertion) subtable.
*
- * Copyright (C) 2005-2024 by
+ * Copyright (C) 2005-2023 by
* suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
diff --git a/src/gxvalid/gxvmorx.c b/src/gxvalid/gxvmorx.c
index 4e7a0d4..931bf00 100644
--- a/src/gxvalid/gxvmorx.c
+++ b/src/gxvalid/gxvmorx.c
@@ -4,7 +4,7 @@
*
* TrueTypeGX/AAT morx table validation (body).
*
- * Copyright (C) 2005-2024 by
+ * Copyright (C) 2005-2023 by
* suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
diff --git a/src/gxvalid/gxvmorx.h b/src/gxvalid/gxvmorx.h
index 7e20b5f..2757255 100644
--- a/src/gxvalid/gxvmorx.h
+++ b/src/gxvalid/gxvmorx.h
@@ -4,7 +4,7 @@
*
* TrueTypeGX/AAT common definition for morx table (specification).
*
- * Copyright (C) 2005-2024 by
+ * Copyright (C) 2005-2023 by
* suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
diff --git a/src/gxvalid/gxvmorx0.c b/src/gxvalid/gxvmorx0.c
index bff850b..73523f3 100644
--- a/src/gxvalid/gxvmorx0.c
+++ b/src/gxvalid/gxvmorx0.c
@@ -5,7 +5,7 @@
* TrueTypeGX/AAT morx table validation
* body for type0 (Indic Script Rearrangement) subtable.
*
- * Copyright (C) 2005-2024 by
+ * Copyright (C) 2005-2023 by
* suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
diff --git a/src/gxvalid/gxvmorx1.c b/src/gxvalid/gxvmorx1.c
index d8ded3b..71a2018 100644
--- a/src/gxvalid/gxvmorx1.c
+++ b/src/gxvalid/gxvmorx1.c
@@ -5,7 +5,7 @@
* TrueTypeGX/AAT morx table validation
* body for type1 (Contextual Substitution) subtable.
*
- * Copyright (C) 2005-2024 by
+ * Copyright (C) 2005-2023 by
* suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
diff --git a/src/gxvalid/gxvmorx2.c b/src/gxvalid/gxvmorx2.c
index faa09e9..858c811 100644
--- a/src/gxvalid/gxvmorx2.c
+++ b/src/gxvalid/gxvmorx2.c
@@ -5,7 +5,7 @@
* TrueTypeGX/AAT morx table validation
* body for type2 (Ligature Substitution) subtable.
*
- * Copyright (C) 2005-2024 by
+ * Copyright (C) 2005-2023 by
* suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
diff --git a/src/gxvalid/gxvmorx4.c b/src/gxvalid/gxvmorx4.c
index 40468b8..c9ad199 100644
--- a/src/gxvalid/gxvmorx4.c
+++ b/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-2024 by
+ * Copyright (C) 2005-2023 by
* suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
diff --git a/src/gxvalid/gxvmorx5.c b/src/gxvalid/gxvmorx5.c
index a3dbdd4..95fa4e2 100644
--- a/src/gxvalid/gxvmorx5.c
+++ b/src/gxvalid/gxvmorx5.c
@@ -5,7 +5,7 @@
* TrueTypeGX/AAT morx table validation
* body for type5 (Contextual Glyph Insertion) subtable.
*
- * Copyright (C) 2005-2024 by
+ * Copyright (C) 2005-2023 by
* suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
diff --git a/src/gxvalid/gxvopbd.c b/src/gxvalid/gxvopbd.c
index 98b5bb8..5e9a966 100644
--- a/src/gxvalid/gxvopbd.c
+++ b/src/gxvalid/gxvopbd.c
@@ -4,7 +4,7 @@
*
* TrueTypeGX/AAT opbd table validation (body).
*
- * Copyright (C) 2004-2024 by
+ * Copyright (C) 2004-2023 by
* suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
diff --git a/src/gxvalid/gxvprop.c b/src/gxvalid/gxvprop.c
index e485fa6..63a052a 100644
--- a/src/gxvalid/gxvprop.c
+++ b/src/gxvalid/gxvprop.c
@@ -4,7 +4,7 @@
*
* TrueTypeGX/AAT prop table validation (body).
*
- * Copyright (C) 2004-2024 by
+ * Copyright (C) 2004-2023 by
* suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
diff --git a/src/gxvalid/gxvtrak.c b/src/gxvalid/gxvtrak.c
index a402823..f3fb51c 100644
--- a/src/gxvalid/gxvtrak.c
+++ b/src/gxvalid/gxvtrak.c
@@ -4,7 +4,7 @@
*
* TrueTypeGX/AAT trak table validation (body).
*
- * Copyright (C) 2004-2024 by
+ * Copyright (C) 2004-2023 by
* suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
diff --git a/src/gxvalid/module.mk b/src/gxvalid/module.mk
index 1d1df00..4949134 100644
--- a/src/gxvalid/module.mk
+++ b/src/gxvalid/module.mk
@@ -2,7 +2,7 @@
# FreeType 2 gxvalid module definition
#
-# Copyright (C) 2004-2024 by
+# Copyright (C) 2004-2023 by
# suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
diff --git a/src/gxvalid/rules.mk b/src/gxvalid/rules.mk
index 0d88010..95ae633 100644
--- a/src/gxvalid/rules.mk
+++ b/src/gxvalid/rules.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 2004-2024 by
+# Copyright (C) 2004-2023 by
# suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
diff --git a/src/gzip/README.freetype b/src/gzip/README.freetype
index 2930430..76298b0 100644
--- a/src/gzip/README.freetype
+++ b/src/gzip/README.freetype
@@ -1,7 +1,7 @@
Name: zlib
Short Name: zlib
URL: http://zlib.net/
-Version: 1.3
+Version: 1.2.13
License: see `zlib.h`
Description:
@@ -19,4 +19,5 @@
- Take the unmodified source code files from the zlib distribution that are
included by `ftgzip.c`.
- Copy `zconf.h` to `ftzconf.h` (which stays unmodified otherwise).
+ - Run zlib's `zlib2ansi` script on all `.c` files.
- Apply the diff file(s) in the `patches` folder.
diff --git a/src/gzip/adler32.c b/src/gzip/adler32.c
index 260185b..aa032e1 100644
--- a/src/gzip/adler32.c
+++ b/src/gzip/adler32.c
@@ -7,6 +7,10 @@
#include "zutil.h"
+#ifndef Z_FREETYPE
+local uLong adler32_combine_ OF((uLong adler1, uLong adler2, z_off64_t len2));
+#endif
+
#define BASE 65521U /* largest prime smaller than 65536 */
#define NMAX 5552
/* NMAX is the largest n such that 255n(n+1)/2 + (n+1)(BASE-1) <= 2^32-1 */
@@ -58,7 +62,11 @@
#endif
/* ========================================================================= */
-uLong ZEXPORT adler32_z(uLong adler, const Bytef *buf, z_size_t len) {
+uLong ZEXPORT adler32_z(
+ uLong adler,
+ const Bytef *buf,
+ z_size_t len)
+{
unsigned long sum2;
unsigned n;
@@ -125,14 +133,22 @@
}
/* ========================================================================= */
-uLong ZEXPORT adler32(uLong adler, const Bytef *buf, uInt len) {
+uLong ZEXPORT adler32(
+ uLong adler,
+ const Bytef *buf,
+ uInt len)
+{
return adler32_z(adler, buf, len);
}
#ifndef Z_FREETYPE
/* ========================================================================= */
-local uLong adler32_combine_(uLong adler1, uLong adler2, z_off64_t len2) {
+local uLong adler32_combine_(
+ uLong adler1,
+ uLong adler2,
+ z_off64_t len2)
+{
unsigned long sum1;
unsigned long sum2;
unsigned rem;
@@ -157,11 +173,19 @@
}
/* ========================================================================= */
-uLong ZEXPORT adler32_combine(uLong adler1, uLong adler2, z_off_t len2) {
+uLong ZEXPORT adler32_combine(
+ uLong adler1,
+ uLong adler2,
+ z_off_t len2)
+{
return adler32_combine_(adler1, adler2, len2);
}
-uLong ZEXPORT adler32_combine64(uLong adler1, uLong adler2, z_off64_t len2) {
+uLong ZEXPORT adler32_combine64(
+ uLong adler1,
+ uLong adler2,
+ z_off64_t len2)
+{
return adler32_combine_(adler1, adler2, len2);
}
diff --git a/src/gzip/crc32.c b/src/gzip/crc32.c
index 27487dc..6cd1b09 100644
--- a/src/gzip/crc32.c
+++ b/src/gzip/crc32.c
@@ -103,6 +103,21 @@
# define ARMCRC32
#endif
+#ifndef Z_FREETYPE
+/* Local functions. */
+local z_crc_t multmodp OF((z_crc_t a, z_crc_t b));
+local z_crc_t x2nmodp OF((z_off64_t n, unsigned k));
+#endif /* Z_FREETYPE */
+
+#if defined(W) && (!defined(ARMCRC32) || defined(DYNAMIC_CRC_TABLE))
+ local z_word_t byte_swap OF((z_word_t word));
+#endif
+
+#if defined(W) && !defined(ARMCRC32)
+ local z_crc_t crc_word OF((z_word_t data));
+ local z_word_t crc_word_big OF((z_word_t data));
+#endif
+
#if defined(W) && (!defined(ARMCRC32) || defined(DYNAMIC_CRC_TABLE))
/*
Swap the bytes in a z_word_t to convert between little and big endian. Any
@@ -110,7 +125,9 @@
instruction, if one is available. This assumes that word_t is either 32 bits
or 64 bits.
*/
-local z_word_t byte_swap(z_word_t word) {
+local z_word_t byte_swap(
+ z_word_t word)
+{
# if W == 8
return
(word & 0xff00000000000000) >> 56 |
@@ -131,81 +148,24 @@
}
#endif
-#ifdef DYNAMIC_CRC_TABLE
-/* =========================================================================
- * Table of powers of x for combining CRC-32s, filled in by make_crc_table()
- * below.
- */
- local z_crc_t FAR x2n_table[32];
-#else
-/* =========================================================================
- * Tables for byte-wise and braided CRC-32 calculations, and a table of powers
- * of x for combining CRC-32s, all made by make_crc_table().
- */
-# include "crc32.h"
-#endif
-
/* CRC polynomial. */
#define POLY 0xedb88320 /* p(x) reflected, with x^32 implied */
-#ifndef Z_FREETYPE
-
-/*
- Return a(x) multiplied by b(x) modulo p(x), where p(x) is the CRC polynomial,
- reflected. For speed, this requires that a not be zero.
- */
-local z_crc_t multmodp(z_crc_t a, z_crc_t b) {
- z_crc_t m, p;
-
- m = (z_crc_t)1 << 31;
- p = 0;
- for (;;) {
- if (a & m) {
- p ^= b;
- if ((a & (m - 1)) == 0)
- break;
- }
- m >>= 1;
- b = b & 1 ? (b >> 1) ^ POLY : b >> 1;
- }
- return p;
-}
-
-/*
- Return x^(n * 2^k) modulo p(x). Requires that x2n_table[] has been
- initialized.
- */
-local z_crc_t x2nmodp(z_off64_t n, unsigned k) {
- z_crc_t p;
-
- p = (z_crc_t)1 << 31; /* x^0 == 1 */
- while (n) {
- if (n & 1)
- p = multmodp(x2n_table[k & 31], p);
- n >>= 1;
- k++;
- }
- return p;
-}
-
-#endif /* !Z_FREETYPE */
-
#ifdef DYNAMIC_CRC_TABLE
-/* =========================================================================
- * Build the tables for byte-wise and braided CRC-32 calculations, and a table
- * of powers of x for combining CRC-32s.
- */
+
local z_crc_t FAR crc_table[256];
+local z_crc_t FAR x2n_table[32];
+local void make_crc_table OF((void));
#ifdef W
local z_word_t FAR crc_big_table[256];
local z_crc_t FAR crc_braid_table[W][256];
local z_word_t FAR crc_braid_big_table[W][256];
- local void braid(z_crc_t [][256], z_word_t [][256], int, int);
+ local void braid OF((z_crc_t [][256], z_word_t [][256], int, int));
#endif
#ifdef MAKECRCH
- local void write_table(FILE *, const z_crc_t FAR *, int);
- local void write_table32hi(FILE *, const z_word_t FAR *, int);
- local void write_table64(FILE *, const z_word_t FAR *, int);
+ local void write_table OF((FILE *, const z_crc_t FAR *, int));
+ local void write_table32hi OF((FILE *, const z_word_t FAR *, int));
+ local void write_table64 OF((FILE *, const z_word_t FAR *, int));
#endif /* MAKECRCH */
/*
@@ -218,6 +178,7 @@
/* Definition of once functionality. */
typedef struct once_s once_t;
+local void once OF((once_t *, void (*)(void)));
/* Check for the availability of atomics. */
#if defined(__STDC__) && __STDC_VERSION__ >= 201112L && \
@@ -237,7 +198,10 @@
invoke once() at the same time. The state must be a once_t initialized with
ONCE_INIT.
*/
-local void once(once_t *state, void (*init)(void)) {
+local void once(state, init)
+ once_t *state;
+ void (*init)(void);
+{
if (!atomic_load(&state->done)) {
if (atomic_flag_test_and_set(&state->begun))
while (!atomic_load(&state->done))
@@ -260,7 +224,10 @@
/* Test and set. Alas, not atomic, but tries to minimize the period of
vulnerability. */
-local int test_and_set(int volatile *flag) {
+local int test_and_set OF((int volatile *));
+local int test_and_set(
+ int volatile *flag)
+{
int was;
was = *flag;
@@ -269,7 +236,10 @@
}
/* Run the provided init() function once. This is not thread-safe. */
-local void once(once_t *state, void (*init)(void)) {
+local void once(state, init)
+ once_t *state;
+ void (*init)(void);
+{
if (!state->done) {
if (test_and_set(&state->begun))
while (!state->done)
@@ -311,7 +281,8 @@
combinations of CRC register values and incoming bytes.
*/
-local void make_crc_table(void) {
+local void make_crc_table()
+{
unsigned i, j, n;
z_crc_t p;
@@ -478,7 +449,11 @@
Write the 32-bit values in table[0..k-1] to out, five per line in
hexadecimal separated by commas.
*/
-local void write_table(FILE *out, const z_crc_t FAR *table, int k) {
+local void write_table(
+ FILE *out,
+ const z_crc_t FAR *table,
+ int k)
+{
int n;
for (n = 0; n < k; n++)
@@ -491,7 +466,11 @@
Write the high 32-bits of each value in table[0..k-1] to out, five per line
in hexadecimal separated by commas.
*/
-local void write_table32hi(FILE *out, const z_word_t FAR *table, int k) {
+local void write_table32hi(
+ FILE *out,
+ const z_word_t FAR *table,
+ int k)
+{
int n;
for (n = 0; n < k; n++)
@@ -507,7 +486,11 @@
bits. If not, then the type cast and format string can be adjusted
accordingly.
*/
-local void write_table64(FILE *out, const z_word_t FAR *table, int k) {
+local void write_table64(
+ FILE *out,
+ const z_word_t FAR *table,
+ int k)
+{
int n;
for (n = 0; n < k; n++)
@@ -517,7 +500,8 @@
}
/* Actually do the deed. */
-int main(void) {
+int main()
+{
make_crc_table();
return 0;
}
@@ -529,7 +513,12 @@
Generate the little and big-endian braid tables for the given n and z_word_t
size w. Each array must have room for w blocks of 256 elements.
*/
-local void braid(z_crc_t ltl[][256], z_word_t big[][256], int n, int w) {
+local void braid(ltl, big, n, w)
+ z_crc_t ltl[][256];
+ z_word_t big[][256];
+ int n;
+ int w;
+{
int k;
z_crc_t i, p, q;
for (k = 0; k < w; k++) {
@@ -544,22 +533,78 @@
}
#endif
+#else /* !DYNAMIC_CRC_TABLE */
+/* ========================================================================
+ * Tables for byte-wise and braided CRC-32 calculations, and a table of powers
+ * of x for combining CRC-32s, all made by make_crc_table().
+ */
+#include "crc32.h"
#endif /* DYNAMIC_CRC_TABLE */
+/* ========================================================================
+ * Routines used for CRC calculation. Some are also required for the table
+ * generation above.
+ */
+
#ifndef Z_FREETYPE
+/*
+ Return a(x) multiplied by b(x) modulo p(x), where p(x) is the CRC polynomial,
+ reflected. For speed, this requires that a not be zero.
+ */
+local z_crc_t multmodp(
+ z_crc_t a,
+ z_crc_t b)
+{
+ z_crc_t m, p;
+
+ m = (z_crc_t)1 << 31;
+ p = 0;
+ for (;;) {
+ if (a & m) {
+ p ^= b;
+ if ((a & (m - 1)) == 0)
+ break;
+ }
+ m >>= 1;
+ b = b & 1 ? (b >> 1) ^ POLY : b >> 1;
+ }
+ return p;
+}
+
+/*
+ Return x^(n * 2^k) modulo p(x). Requires that x2n_table[] has been
+ initialized.
+ */
+local z_crc_t x2nmodp(
+ z_off64_t n,
+ unsigned k)
+{
+ z_crc_t p;
+
+ p = (z_crc_t)1 << 31; /* x^0 == 1 */
+ while (n) {
+ if (n & 1)
+ p = multmodp(x2n_table[k & 31], p);
+ n >>= 1;
+ k++;
+ }
+ return p;
+}
+
/* =========================================================================
* This function can be used by asm versions of crc32(), and to force the
* generation of the CRC tables in a threaded application.
*/
-const z_crc_t FAR * ZEXPORT get_crc_table(void) {
+const z_crc_t FAR * ZEXPORT get_crc_table()
+{
#ifdef DYNAMIC_CRC_TABLE
once(&made, make_crc_table);
#endif /* DYNAMIC_CRC_TABLE */
return (const z_crc_t FAR *)crc_table;
}
-#endif /* !Z_FREETYPE */
+#endif /* Z_FREETYPE */
/* =========================================================================
* Use ARM machine instructions if available. This will compute the CRC about
@@ -580,8 +625,11 @@
#define Z_BATCH_ZEROS 0xa10d3d0c /* computed from Z_BATCH = 3990 */
#define Z_BATCH_MIN 800 /* fewest words in a final batch */
-unsigned long ZEXPORT crc32_z(unsigned long crc, const unsigned char FAR *buf,
- z_size_t len) {
+unsigned long ZEXPORT crc32_z(
+ unsigned long crc,
+ const unsigned char FAR *buf,
+ z_size_t len)
+{
z_crc_t val;
z_word_t crc1, crc2;
const z_word_t *word;
@@ -681,14 +729,18 @@
least-significant byte of the word as the first byte of data, without any pre
or post conditioning. This is used to combine the CRCs of each braid.
*/
-local z_crc_t crc_word(z_word_t data) {
+local z_crc_t crc_word(
+ z_word_t data)
+{
int k;
for (k = 0; k < W; k++)
data = (data >> 8) ^ crc_table[data & 0xff];
return (z_crc_t)data;
}
-local z_word_t crc_word_big(z_word_t data) {
+local z_word_t crc_word_big(
+ z_word_t data)
+{
int k;
for (k = 0; k < W; k++)
data = (data << 8) ^
@@ -699,8 +751,11 @@
#endif
/* ========================================================================= */
-unsigned long ZEXPORT crc32_z(unsigned long crc, const unsigned char FAR *buf,
- z_size_t len) {
+unsigned long ZEXPORT crc32_z(
+ unsigned long crc,
+ const unsigned char FAR *buf,
+ z_size_t len)
+{
/* Return initial CRC, if requested. */
if (buf == Z_NULL) return 0;
@@ -732,8 +787,8 @@
words = (z_word_t const *)buf;
/* Do endian check at execution time instead of compile time, since ARM
- processors can change the endianness at execution time. If the
- compiler knows what the endianness will be, it can optimize out the
+ processors can change the endianess at execution time. If the
+ compiler knows what the endianess will be, it can optimize out the
check and the unused branch. */
endian = 1;
if (*(unsigned char *)&endian) {
@@ -1020,15 +1075,22 @@
#endif
/* ========================================================================= */
-unsigned long ZEXPORT crc32(unsigned long crc, const unsigned char FAR *buf,
- uInt len) {
+unsigned long ZEXPORT crc32(
+ unsigned long crc,
+ const unsigned char FAR *buf,
+ uInt len)
+{
return crc32_z(crc, buf, len);
}
#ifndef Z_FREETYPE
/* ========================================================================= */
-uLong ZEXPORT crc32_combine64(uLong crc1, uLong crc2, z_off64_t len2) {
+uLong ZEXPORT crc32_combine64(
+ uLong crc1,
+ uLong crc2,
+ z_off64_t len2)
+{
#ifdef DYNAMIC_CRC_TABLE
once(&made, make_crc_table);
#endif /* DYNAMIC_CRC_TABLE */
@@ -1036,12 +1098,18 @@
}
/* ========================================================================= */
-uLong ZEXPORT crc32_combine(uLong crc1, uLong crc2, z_off_t len2) {
+uLong ZEXPORT crc32_combine(
+ uLong crc1,
+ uLong crc2,
+ z_off_t len2)
+{
return crc32_combine64(crc1, crc2, (z_off64_t)len2);
}
/* ========================================================================= */
-uLong ZEXPORT crc32_combine_gen64(z_off64_t len2) {
+uLong ZEXPORT crc32_combine_gen64(
+ z_off64_t len2)
+{
#ifdef DYNAMIC_CRC_TABLE
once(&made, make_crc_table);
#endif /* DYNAMIC_CRC_TABLE */
@@ -1049,13 +1117,19 @@
}
/* ========================================================================= */
-uLong ZEXPORT crc32_combine_gen(z_off_t len2) {
+uLong ZEXPORT crc32_combine_gen(
+ z_off_t len2)
+{
return crc32_combine_gen64((z_off64_t)len2);
}
/* ========================================================================= */
-uLong ZEXPORT crc32_combine_op(uLong crc1, uLong crc2, uLong op) {
+uLong ZEXPORT crc32_combine_op(
+ uLong crc1,
+ uLong crc2,
+ uLong op)
+{
return multmodp(op, crc1) ^ (crc2 & 0xffffffff);
}
-#endif /* !Z_FREETYPE */
+#endif /* Z_FREETYPE */
diff --git a/src/gzip/ftgzip.c b/src/gzip/ftgzip.c
index f77377e..ca6a2aa 100644
--- a/src/gzip/ftgzip.c
+++ b/src/gzip/ftgzip.c
@@ -8,7 +8,7 @@
* parse compressed PCF fonts, as found with many X11 server
* distributions.
*
- * Copyright (C) 2002-2024 by
+ * Copyright (C) 2002-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/gzip/ftzconf.h b/src/gzip/ftzconf.h
index fb76ffe..bf977d3 100644
--- a/src/gzip/ftzconf.h
+++ b/src/gzip/ftzconf.h
@@ -241,11 +241,7 @@
#endif
#ifdef Z_SOLO
-# ifdef _WIN64
- typedef unsigned long long z_size_t;
-# else
- typedef unsigned long z_size_t;
-# endif
+ typedef unsigned long z_size_t;
#else
# define z_longlong long long
# if defined(NO_SIZE_T)
@@ -524,7 +520,7 @@
#if !defined(_WIN32) && defined(Z_LARGE64)
# define z_off64_t off64_t
#else
-# if defined(_WIN32) && !defined(__GNUC__)
+# if defined(_WIN32) && !defined(__GNUC__) && !defined(Z_SOLO)
# define z_off64_t __int64
# else
# define z_off64_t z_off_t
diff --git a/src/gzip/gzguts.h b/src/gzip/gzguts.h
index f9a250b..4f09a52 100644
--- a/src/gzip/gzguts.h
+++ b/src/gzip/gzguts.h
@@ -7,8 +7,9 @@
# ifndef _LARGEFILE_SOURCE
# define _LARGEFILE_SOURCE 1
# endif
-# undef _FILE_OFFSET_BITS
-# undef _TIME_BITS
+# ifdef _FILE_OFFSET_BITS
+# undef _FILE_OFFSET_BITS
+# endif
#endif
#ifdef HAVE_HIDDEN
@@ -118,8 +119,8 @@
/* gz* functions always use library allocation functions */
#ifndef STDC
- extern voidp malloc(uInt size);
- extern void free(voidpf ptr);
+ extern voidp malloc OF((uInt size));
+ extern void free OF((voidpf ptr));
#endif
/* get errno and strerror definition */
@@ -137,10 +138,10 @@
/* provide prototypes for these when building zlib without LFS */
#if !defined(_LARGEFILE64_SOURCE) || _LFS64_LARGEFILE-0 == 0
- ZEXTERN gzFile ZEXPORT gzopen64(const char *, const char *);
- ZEXTERN z_off64_t ZEXPORT gzseek64(gzFile, z_off64_t, int);
- ZEXTERN z_off64_t ZEXPORT gztell64(gzFile);
- ZEXTERN z_off64_t ZEXPORT gzoffset64(gzFile);
+ ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *));
+ ZEXTERN z_off64_t ZEXPORT gzseek64 OF((gzFile, z_off64_t, int));
+ ZEXTERN z_off64_t ZEXPORT gztell64 OF((gzFile));
+ ZEXTERN z_off64_t ZEXPORT gzoffset64 OF((gzFile));
#endif
/* default memLevel */
@@ -202,9 +203,9 @@
typedef gz_state FAR *gz_statep;
/* shared functions */
-void ZLIB_INTERNAL gz_error(gz_statep, int, const char *);
+void ZLIB_INTERNAL gz_error OF((gz_statep, int, const char *));
#if defined UNDER_CE
-char ZLIB_INTERNAL *gz_strwinerror(DWORD error);
+char ZLIB_INTERNAL *gz_strwinerror OF((DWORD error));
#endif
/* GT_OFF(x), where x is an unsigned value, is true if x > maximum z_off64_t
@@ -213,6 +214,6 @@
#ifdef INT_MAX
# define GT_OFF(x) (sizeof(int) == sizeof(z_off64_t) && (x) > INT_MAX)
#else
-unsigned ZLIB_INTERNAL gz_intmax(void);
+unsigned ZLIB_INTERNAL gz_intmax OF((void));
# define GT_OFF(x) (sizeof(int) == sizeof(z_off64_t) && (x) > gz_intmax())
#endif
diff --git a/src/gzip/inffast.c b/src/gzip/inffast.c
index 9354676..809737b 100644
--- a/src/gzip/inffast.c
+++ b/src/gzip/inffast.c
@@ -47,7 +47,10 @@
requires strm->avail_out >= 258 for each loop to avoid checking for
output space.
*/
-void ZLIB_INTERNAL inflate_fast(z_streamp strm, unsigned start) {
+void ZLIB_INTERNAL inflate_fast(
+ z_streamp strm,
+ unsigned start)
+{
struct inflate_state FAR *state;
z_const unsigned char FAR *in; /* local strm->next_in */
z_const unsigned char FAR *last; /* have enough input while in < last */
diff --git a/src/gzip/inffast.h b/src/gzip/inffast.h
index a38c5be..684ae87 100644
--- a/src/gzip/inffast.h
+++ b/src/gzip/inffast.h
@@ -8,4 +8,4 @@
subject to change. Applications should only use zlib.h.
*/
-static void ZLIB_INTERNAL inflate_fast(z_streamp strm, unsigned start);
+static void ZLIB_INTERNAL inflate_fast OF((z_streamp strm, unsigned start));
diff --git a/src/gzip/inflate.c b/src/gzip/inflate.c
index f7ed5d1..5117e2e 100644
--- a/src/gzip/inflate.c
+++ b/src/gzip/inflate.c
@@ -91,7 +91,22 @@
# endif
#endif
-local int inflateStateCheck(z_streamp strm) {
+/* function prototypes */
+local int inflateStateCheck OF((z_streamp strm));
+local void fixedtables OF((struct inflate_state FAR *state));
+local int updatewindow OF((z_streamp strm, const unsigned char FAR *end,
+ unsigned copy));
+#ifdef BUILDFIXED
+ void makefixed OF((void));
+#endif
+#ifndef Z_FREETYPE
+local unsigned syncsearch OF((unsigned FAR *have, const unsigned char FAR *buf,
+ unsigned len));
+#endif
+
+local int inflateStateCheck(
+ z_streamp strm)
+{
struct inflate_state FAR *state;
if (strm == Z_NULL ||
strm->zalloc == (alloc_func)0 || strm->zfree == (free_func)0)
@@ -103,7 +118,9 @@
return 0;
}
-int ZEXPORT inflateResetKeep(z_streamp strm) {
+int ZEXPORT inflateResetKeep(
+ z_streamp strm)
+{
struct inflate_state FAR *state;
if (inflateStateCheck(strm)) return Z_STREAM_ERROR;
@@ -127,7 +144,9 @@
return Z_OK;
}
-int ZEXPORT inflateReset(z_streamp strm) {
+int ZEXPORT inflateReset(
+ z_streamp strm)
+{
struct inflate_state FAR *state;
if (inflateStateCheck(strm)) return Z_STREAM_ERROR;
@@ -138,7 +157,10 @@
return inflateResetKeep(strm);
}
-int ZEXPORT inflateReset2(z_streamp strm, int windowBits) {
+int ZEXPORT inflateReset2(
+ z_streamp strm,
+ int windowBits)
+{
int wrap;
struct inflate_state FAR *state;
@@ -175,8 +197,12 @@
return inflateReset(strm);
}
-int ZEXPORT inflateInit2_(z_streamp strm, int windowBits,
- const char *version, int stream_size) {
+int ZEXPORT inflateInit2_(
+ z_streamp strm,
+ int windowBits,
+ const char *version,
+ int stream_size)
+{
int ret;
struct inflate_state FAR *state;
@@ -217,17 +243,22 @@
#ifndef Z_FREETYPE
-int ZEXPORT inflateInit_(z_streamp strm, const char *version,
- int stream_size) {
+int ZEXPORT inflateInit_(
+ z_streamp strm,
+ const char *version,
+ int stream_size)
+{
return inflateInit2_(strm, DEF_WBITS, version, stream_size);
}
-int ZEXPORT inflatePrime(z_streamp strm, int bits, int value) {
+int ZEXPORT inflatePrime(
+ z_streamp strm,
+ int bits,
+ int value)
+{
struct inflate_state FAR *state;
if (inflateStateCheck(strm)) return Z_STREAM_ERROR;
- if (bits == 0)
- return Z_OK;
state = (struct inflate_state FAR *)strm->state;
if (bits < 0) {
state->hold = 0;
@@ -253,7 +284,9 @@
used for threaded applications, since the rewriting of the tables and virgin
may not be thread-safe.
*/
-local void fixedtables(struct inflate_state FAR *state) {
+local void fixedtables(
+ struct inflate_state FAR *state)
+{
#ifdef BUILDFIXED
static int virgin = 1;
static code *lenfix, *distfix;
@@ -315,7 +348,7 @@
a.out > inffixed.h
*/
-void makefixed(void)
+void makefixed()
{
unsigned low, size;
struct inflate_state state;
@@ -369,7 +402,11 @@
output will fall in the output data, making match copies simpler and faster.
The advantage may be dependent on the size of the processor's data caches.
*/
-local int updatewindow(z_streamp strm, const Bytef *end, unsigned copy) {
+local int updatewindow(
+ z_streamp strm,
+ const Bytef *end,
+ unsigned copy)
+{
struct inflate_state FAR *state;
unsigned dist;
@@ -591,7 +628,10 @@
will return Z_BUF_ERROR if it has not reached the end of the stream.
*/
-int ZEXPORT inflate(z_streamp strm, int flush) {
+int ZEXPORT inflate(
+ z_streamp strm,
+ int flush)
+{
struct inflate_state FAR *state;
z_const unsigned char FAR *next; /* next input */
unsigned char FAR *put; /* next output */
@@ -1267,7 +1307,9 @@
return ret;
}
-int ZEXPORT inflateEnd(z_streamp strm) {
+int ZEXPORT inflateEnd(
+ z_streamp strm)
+{
struct inflate_state FAR *state;
if (inflateStateCheck(strm))
return Z_STREAM_ERROR;
@@ -1281,8 +1323,11 @@
#ifndef Z_FREETYPE
-int ZEXPORT inflateGetDictionary(z_streamp strm, Bytef *dictionary,
- uInt *dictLength) {
+int ZEXPORT inflateGetDictionary(
+ z_streamp strm,
+ Bytef *dictionary,
+ uInt *dictLength)
+{
struct inflate_state FAR *state;
/* check state */
@@ -1301,8 +1346,11 @@
return Z_OK;
}
-int ZEXPORT inflateSetDictionary(z_streamp strm, const Bytef *dictionary,
- uInt dictLength) {
+int ZEXPORT inflateSetDictionary(
+ z_streamp strm,
+ const Bytef *dictionary,
+ uInt dictLength)
+{
struct inflate_state FAR *state;
unsigned long dictid;
int ret;
@@ -1333,7 +1381,10 @@
return Z_OK;
}
-int ZEXPORT inflateGetHeader(z_streamp strm, gz_headerp head) {
+int ZEXPORT inflateGetHeader(
+ z_streamp strm,
+ gz_headerp head)
+{
struct inflate_state FAR *state;
/* check state */
@@ -1358,8 +1409,11 @@
called again with more data and the *have state. *have is initialized to
zero for the first call.
*/
-local unsigned syncsearch(unsigned FAR *have, const unsigned char FAR *buf,
- unsigned len) {
+local unsigned syncsearch(
+ unsigned FAR *have,
+ const unsigned char FAR *buf,
+ unsigned len)
+{
unsigned got;
unsigned next;
@@ -1378,7 +1432,9 @@
return next;
}
-int ZEXPORT inflateSync(z_streamp strm) {
+int ZEXPORT inflateSync(
+ z_streamp strm)
+{
unsigned len; /* number of bytes to look at or looked at */
int flags; /* temporary to save header status */
unsigned long in, out; /* temporary to save total_in and total_out */
@@ -1434,7 +1490,9 @@
block. When decompressing, PPP checks that at the end of input packet,
inflate is waiting for these length bytes.
*/
-int ZEXPORT inflateSyncPoint(z_streamp strm) {
+int ZEXPORT inflateSyncPoint(
+ z_streamp strm)
+{
struct inflate_state FAR *state;
if (inflateStateCheck(strm)) return Z_STREAM_ERROR;
@@ -1442,7 +1500,10 @@
return state->mode == STORED && state->bits == 0;
}
-int ZEXPORT inflateCopy(z_streamp dest, z_streamp source) {
+int ZEXPORT inflateCopy(
+ z_streamp dest,
+ z_streamp source)
+{
struct inflate_state FAR *state;
struct inflate_state FAR *copy;
unsigned char FAR *window;
@@ -1486,7 +1547,10 @@
return Z_OK;
}
-int ZEXPORT inflateUndermine(z_streamp strm, int subvert) {
+int ZEXPORT inflateUndermine(
+ z_streamp strm,
+ int subvert)
+{
struct inflate_state FAR *state;
if (inflateStateCheck(strm)) return Z_STREAM_ERROR;
@@ -1501,7 +1565,10 @@
#endif
}
-int ZEXPORT inflateValidate(z_streamp strm, int check) {
+int ZEXPORT inflateValidate(
+ z_streamp strm,
+ int check)
+{
struct inflate_state FAR *state;
if (inflateStateCheck(strm)) return Z_STREAM_ERROR;
@@ -1513,7 +1580,9 @@
return Z_OK;
}
-long ZEXPORT inflateMark(z_streamp strm) {
+long ZEXPORT inflateMark(
+ z_streamp strm)
+{
struct inflate_state FAR *state;
if (inflateStateCheck(strm))
@@ -1524,7 +1593,9 @@
(state->mode == MATCH ? state->was - state->length : 0));
}
-unsigned long ZEXPORT inflateCodesUsed(z_streamp strm) {
+unsigned long ZEXPORT inflateCodesUsed(
+ z_streamp strm)
+{
struct inflate_state FAR *state;
if (inflateStateCheck(strm)) return (unsigned long)-1;
state = (struct inflate_state FAR *)strm->state;
diff --git a/src/gzip/inflate.h b/src/gzip/inflate.h
index 8a0e437..c6f5a52 100644
--- a/src/gzip/inflate.h
+++ b/src/gzip/inflate.h
@@ -128,4 +128,4 @@
unsigned was; /* initial length of match */
};
-#endif /* !INFLATE_H */
+#endif /* INFLATE_H */
diff --git a/src/gzip/inftrees.c b/src/gzip/inftrees.c
index 1fd6555..dd4965e 100644
--- a/src/gzip/inftrees.c
+++ b/src/gzip/inftrees.c
@@ -1,5 +1,5 @@
/* inftrees.c -- generate Huffman trees for efficient decoding
- * Copyright (C) 1995-2023 Mark Adler
+ * Copyright (C) 1995-2022 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
@@ -9,7 +9,7 @@
#define MAXBITS 15
static const char inflate_copyright[] =
- " inflate 1.3 Copyright 1995-2023 Mark Adler ";
+ " inflate 1.2.13 Copyright 1995-2022 Mark Adler ";
/*
If you use the zlib library in a product, an acknowledgment is welcome
in the documentation of your product. If for some reason you cannot
@@ -29,9 +29,14 @@
table index bits. It will differ if the request is greater than the
longest code or if it is less than the shortest code.
*/
-int ZLIB_INTERNAL inflate_table(codetype type, unsigned short FAR *lens,
- unsigned codes, code FAR * FAR *table,
- unsigned FAR *bits, unsigned short FAR *work) {
+int ZLIB_INTERNAL inflate_table(
+ codetype type,
+ unsigned short FAR *lens,
+ unsigned codes,
+ code FAR * FAR *table,
+ unsigned FAR *bits,
+ unsigned short FAR *work)
+{
unsigned len; /* a code's length in bits */
unsigned sym; /* index of code symbols */
unsigned min, max; /* minimum and maximum code lengths */
@@ -57,7 +62,7 @@
35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0};
static const unsigned short lext[31] = { /* Length codes 257..285 extra */
16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,
- 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 198, 203};
+ 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 194, 65};
static const unsigned short dbase[32] = { /* Distance codes 0..29 base */
1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,
257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,
diff --git a/src/gzip/inftrees.h b/src/gzip/inftrees.h
index 47f726c..a2207ef 100644
--- a/src/gzip/inftrees.h
+++ b/src/gzip/inftrees.h
@@ -60,8 +60,8 @@
DISTS
} codetype;
-static int ZLIB_INTERNAL inflate_table(codetype type, unsigned short FAR *lens,
- unsigned codes, code FAR * FAR *table,
- unsigned FAR *bits, unsigned short FAR *work);
+static int ZLIB_INTERNAL inflate_table OF((codetype type, unsigned short FAR *lens,
+ unsigned codes, code FAR * FAR *table,
+ unsigned FAR *bits, unsigned short FAR *work));
-#endif /* !INFTREES_H */
+#endif /* INFTREES_H_ */
diff --git a/src/gzip/patches/freetype-zlib.diff b/src/gzip/patches/freetype-zlib.diff
index 9486bd0..6ac76df 100644
--- a/src/gzip/patches/freetype-zlib.diff
+++ b/src/gzip/patches/freetype-zlib.diff
@@ -30,84 +30,88 @@
(inflate_table): Declare as static.
diff --git b/src/gzip/adler32.c a/src/gzip/adler32.c
-index 04b81d29b..260185b67 100644
+index be5e8a247..aa032e1dd 100644
--- b/src/gzip/adler32.c
+++ a/src/gzip/adler32.c
-@@ -129,6 +129,8 @@ uLong ZEXPORT adler32(uLong adler, const Bytef *buf, uInt len) {
+@@ -7,7 +7,9 @@
+
+ #include "zutil.h"
+
++#ifndef Z_FREETYPE
+ local uLong adler32_combine_ OF((uLong adler1, uLong adler2, z_off64_t len2));
++#endif
+
+ #define BASE 65521U /* largest prime smaller than 65536 */
+ #define NMAX 5552
+@@ -139,6 +141,8 @@ uLong ZEXPORT adler32(
return adler32_z(adler, buf, len);
}
+#ifndef Z_FREETYPE
+
/* ========================================================================= */
- local uLong adler32_combine_(uLong adler1, uLong adler2, z_off64_t len2) {
- unsigned long sum1;
-@@ -162,3 +164,5 @@ uLong ZEXPORT adler32_combine(uLong adler1, uLong adler2, z_off_t len2) {
- uLong ZEXPORT adler32_combine64(uLong adler1, uLong adler2, z_off64_t len2) {
+ local uLong adler32_combine_(
+ uLong adler1,
+@@ -184,3 +188,5 @@ uLong ZEXPORT adler32_combine64(
+ {
return adler32_combine_(adler1, adler2, len2);
}
+
+#endif /* !Z_FREETYPE */
diff --git b/src/gzip/crc32.c a/src/gzip/crc32.c
-index 6c38f5c04..27487dcc2 100644
+index 3a52aa89d..6cd1b09d5 100644
--- b/src/gzip/crc32.c
+++ a/src/gzip/crc32.c
-@@ -148,6 +148,8 @@ local z_word_t byte_swap(z_word_t word) {
- /* CRC polynomial. */
- #define POLY 0xedb88320 /* p(x) reflected, with x^32 implied */
+@@ -103,9 +103,11 @@
+ # define ARMCRC32
+ #endif
+
++#ifndef Z_FREETYPE
+ /* Local functions. */
+ local z_crc_t multmodp OF((z_crc_t a, z_crc_t b));
+ local z_crc_t x2nmodp OF((z_off64_t n, unsigned k));
++#endif /* Z_FREETYPE */
+
+ #if defined(W) && (!defined(ARMCRC32) || defined(DYNAMIC_CRC_TABLE))
+ local z_word_t byte_swap OF((z_word_t word));
+@@ -544,6 +546,8 @@ local void braid(ltl, big, n, w)
+ * generation above.
+ */
+#ifndef Z_FREETYPE
+
/*
Return a(x) multiplied by b(x) modulo p(x), where p(x) is the CRC polynomial,
reflected. For speed, this requires that a not be zero.
-@@ -186,6 +188,8 @@ local z_crc_t x2nmodp(z_off64_t n, unsigned k) {
- return p;
- }
-
-+#endif /* !Z_FREETYPE */
-+
- #ifdef DYNAMIC_CRC_TABLE
- /* =========================================================================
- * Build the tables for byte-wise and braided CRC-32 calculations, and a table
-@@ -542,6 +546,8 @@ local void braid(z_crc_t ltl[][256], z_word_t big[][256], int n, int w) {
-
- #endif /* DYNAMIC_CRC_TABLE */
-
-+#ifndef Z_FREETYPE
-+
- /* =========================================================================
- * This function can be used by asm versions of crc32(), and to force the
- * generation of the CRC tables in a threaded application.
-@@ -553,6 +559,8 @@ const z_crc_t FAR * ZEXPORT get_crc_table(void) {
+@@ -600,6 +604,8 @@ const z_crc_t FAR * ZEXPORT get_crc_table()
return (const z_crc_t FAR *)crc_table;
}
-+#endif /* !Z_FREETYPE */
++#endif /* Z_FREETYPE */
+
/* =========================================================================
* Use ARM machine instructions if available. This will compute the CRC about
* ten times faster than the braided calculation. This code does not check for
-@@ -1017,6 +1025,8 @@ unsigned long ZEXPORT crc32(unsigned long crc, const unsigned char FAR *buf,
+@@ -1077,6 +1083,8 @@ unsigned long ZEXPORT crc32(
return crc32_z(crc, buf, len);
}
+#ifndef Z_FREETYPE
+
/* ========================================================================= */
- uLong ZEXPORT crc32_combine64(uLong crc1, uLong crc2, z_off64_t len2) {
- #ifdef DYNAMIC_CRC_TABLE
-@@ -1047,3 +1057,5 @@ uLong ZEXPORT crc32_combine_gen(z_off_t len2) {
- uLong ZEXPORT crc32_combine_op(uLong crc1, uLong crc2, uLong op) {
+ uLong ZEXPORT crc32_combine64(
+ uLong crc1,
+@@ -1123,3 +1131,5 @@ uLong ZEXPORT crc32_combine_op(
+ {
return multmodp(op, crc1) ^ (crc2 & 0xffffffff);
}
+
-+#endif /* !Z_FREETYPE */
++#endif /* Z_FREETYPE */
diff --git b/src/gzip/gzguts.h a/src/gzip/gzguts.h
-index f9375047e..f9a250b85 100644
+index 57faf3716..4f09a52a7 100644
--- b/src/gzip/gzguts.h
+++ a/src/gzip/gzguts.h
-@@ -162,7 +162,7 @@
+@@ -163,7 +163,7 @@
/* values for gz_state how */
#define LOOK 0 /* look for a gzip header */
@@ -117,29 +121,40 @@
/* internal gzip file state data structure */
diff --git b/src/gzip/inffast.h a/src/gzip/inffast.h
-index 49c6d156c..a38c5be45 100644
+index e5c1aa4ca..684ae878c 100644
--- b/src/gzip/inffast.h
+++ a/src/gzip/inffast.h
@@ -8,4 +8,4 @@
subject to change. Applications should only use zlib.h.
*/
--void ZLIB_INTERNAL inflate_fast(z_streamp strm, unsigned start);
-+static void ZLIB_INTERNAL inflate_fast(z_streamp strm, unsigned start);
+-void ZLIB_INTERNAL inflate_fast OF((z_streamp strm, unsigned start));
++static void ZLIB_INTERNAL inflate_fast OF((z_streamp strm, unsigned start));
diff --git b/src/gzip/inflate.c a/src/gzip/inflate.c
-index b0757a9b2..f7ed5d181 100644
+index c9e566b03..5117e2e26 100644
--- b/src/gzip/inflate.c
+++ a/src/gzip/inflate.c
-@@ -215,6 +215,8 @@ int ZEXPORT inflateInit2_(z_streamp strm, int windowBits,
+@@ -99,8 +99,10 @@ local int updatewindow OF((z_streamp strm, const unsigned char FAR *end,
+ #ifdef BUILDFIXED
+ void makefixed OF((void));
+ #endif
++#ifndef Z_FREETYPE
+ local unsigned syncsearch OF((unsigned FAR *have, const unsigned char FAR *buf,
+ unsigned len));
++#endif
+
+ local int inflateStateCheck(
+ z_streamp strm)
+@@ -239,6 +241,8 @@ int ZEXPORT inflateInit2_(
return ret;
}
+#ifndef Z_FREETYPE
+
- int ZEXPORT inflateInit_(z_streamp strm, const char *version,
- int stream_size) {
- return inflateInit2_(strm, DEF_WBITS, version, stream_size);
-@@ -239,6 +241,8 @@ int ZEXPORT inflatePrime(z_streamp strm, int bits, int value) {
+ int ZEXPORT inflateInit_(
+ z_streamp strm,
+ const char *version,
+@@ -268,6 +272,8 @@ int ZEXPORT inflatePrime(
return Z_OK;
}
@@ -148,23 +163,23 @@
/*
Return state with length and distance decoding tables and index sizes set to
fixed code decoding. Normally this returns fixed tables from inffixed.h.
-@@ -1275,6 +1279,8 @@ int ZEXPORT inflateEnd(z_streamp strm) {
+@@ -1315,6 +1321,8 @@ int ZEXPORT inflateEnd(
return Z_OK;
}
+#ifndef Z_FREETYPE
+
- int ZEXPORT inflateGetDictionary(z_streamp strm, Bytef *dictionary,
- uInt *dictLength) {
- struct inflate_state FAR *state;
-@@ -1524,3 +1530,5 @@ unsigned long ZEXPORT inflateCodesUsed(z_streamp strm) {
+ int ZEXPORT inflateGetDictionary(
+ z_streamp strm,
+ Bytef *dictionary,
+@@ -1593,3 +1601,5 @@ unsigned long ZEXPORT inflateCodesUsed(
state = (struct inflate_state FAR *)strm->state;
return (unsigned long)(state->next - state->codes);
}
+
+#endif /* !Z_FREETYPE */
diff --git b/src/gzip/inflate.h a/src/gzip/inflate.h
-index f127b6b1f..8a0e437ae 100644
+index f127b6b1f..c6f5a52e1 100644
--- b/src/gzip/inflate.h
+++ a/src/gzip/inflate.h
@@ -3,6 +3,9 @@
@@ -182,9 +197,9 @@
unsigned was; /* initial length of match */
};
+
-+#endif /* !INFLATE_H */
++#endif /* INFLATE_H */
diff --git b/src/gzip/inftrees.c a/src/gzip/inftrees.c
-index 8a208c2da..1fd655593 100644
+index d8405a24c..dd4965e9a 100644
--- b/src/gzip/inftrees.c
+++ a/src/gzip/inftrees.c
@@ -8,7 +8,7 @@
@@ -193,11 +208,11 @@
-const char inflate_copyright[] =
+static const char inflate_copyright[] =
- " inflate 1.3 Copyright 1995-2023 Mark Adler ";
+ " inflate 1.2.13 Copyright 1995-2022 Mark Adler ";
/*
If you use the zlib library in a product, an acknowledgment is welcome
diff --git b/src/gzip/inftrees.h a/src/gzip/inftrees.h
-index a10712d8c..47f726c36 100644
+index f53665311..a2207efb1 100644
--- b/src/gzip/inftrees.h
+++ a/src/gzip/inftrees.h
@@ -3,6 +3,9 @@
@@ -214,14 +229,14 @@
DISTS
} codetype;
--int ZLIB_INTERNAL inflate_table(codetype type, unsigned short FAR *lens,
-+static int ZLIB_INTERNAL inflate_table(codetype type, unsigned short FAR *lens,
- unsigned codes, code FAR * FAR *table,
- unsigned FAR *bits, unsigned short FAR *work);
+-int ZLIB_INTERNAL inflate_table OF((codetype type, unsigned short FAR *lens,
++static int ZLIB_INTERNAL inflate_table OF((codetype type, unsigned short FAR *lens,
+ unsigned codes, code FAR * FAR *table,
+ unsigned FAR *bits, unsigned short FAR *work));
+
-+#endif /* !INFTREES_H */
++#endif /* INFTREES_H_ */
diff --git b/src/gzip/zlib.h a/src/gzip/zlib.h
-index 6b7244f99..5c7a884c9 100644
+index 953cb5012..3f2f76e3c 100644
--- b/src/gzip/zlib.h
+++ a/src/gzip/zlib.h
@@ -31,7 +31,7 @@
@@ -242,60 +257,60 @@
#define zlib_version zlibVersion()
/* for compatibility with versions < 1.0.2 */
-@@ -373,6 +375,7 @@ ZEXTERN int ZEXPORT deflateEnd(z_streamp strm);
+@@ -373,6 +375,7 @@ ZEXTERN int ZEXPORT deflateEnd OF((z_streamp strm));
deallocated).
*/
+#endif /* !Z_FREETYPE */
/*
- ZEXTERN int ZEXPORT inflateInit(z_streamp strm);
-@@ -535,6 +538,8 @@ ZEXTERN int ZEXPORT inflateEnd(z_streamp strm);
+ ZEXTERN int ZEXPORT inflateInit OF((z_streamp strm));
+@@ -534,6 +537,8 @@ ZEXTERN int ZEXPORT inflateEnd OF((z_streamp strm));
The following functions are needed only in some special applications.
*/
+#ifndef Z_FREETYPE
+
/*
- ZEXTERN int ZEXPORT deflateInit2(z_streamp strm,
- int level,
-@@ -958,6 +963,8 @@ ZEXTERN int ZEXPORT inflateCopy(z_streamp dest,
+ ZEXTERN int ZEXPORT deflateInit2 OF((z_streamp strm,
+ int level,
+@@ -956,6 +961,8 @@ ZEXTERN int ZEXPORT inflateCopy OF((z_streamp dest,
destination.
*/
+#endif /* !Z_FREETYPE */
+
- ZEXTERN int ZEXPORT inflateReset(z_streamp strm);
+ ZEXTERN int ZEXPORT inflateReset OF((z_streamp strm));
/*
This function is equivalent to inflateEnd followed by inflateInit,
-@@ -983,6 +990,8 @@ ZEXTERN int ZEXPORT inflateReset2(z_streamp strm,
+@@ -980,6 +987,8 @@ ZEXTERN int ZEXPORT inflateReset2 OF((z_streamp strm,
the windowBits parameter is invalid.
*/
+#ifndef Z_FREETYPE
+
- ZEXTERN int ZEXPORT inflatePrime(z_streamp strm,
- int bits,
- int value);
-@@ -1072,6 +1081,8 @@ ZEXTERN int ZEXPORT inflateGetHeader(z_streamp strm,
+ ZEXTERN int ZEXPORT inflatePrime OF((z_streamp strm,
+ int bits,
+ int value));
+@@ -1069,6 +1078,8 @@ ZEXTERN int ZEXPORT inflateGetHeader OF((z_streamp strm,
stream state was inconsistent.
*/
+#endif /* !Z_FREETYPE */
+
/*
- ZEXTERN int ZEXPORT inflateBackInit(z_streamp strm, int windowBits,
- unsigned char FAR *window);
-@@ -1098,6 +1109,8 @@ typedef unsigned (*in_func)(void FAR *,
- z_const unsigned char FAR * FAR *);
- typedef int (*out_func)(void FAR *, unsigned char FAR *, unsigned);
+ ZEXTERN int ZEXPORT inflateBackInit OF((z_streamp strm, int windowBits,
+ unsigned char FAR *window));
+@@ -1095,6 +1106,8 @@ typedef unsigned (*in_func) OF((void FAR *,
+ z_const unsigned char FAR * FAR *));
+ typedef int (*out_func) OF((void FAR *, unsigned char FAR *, unsigned));
+#ifndef Z_FREETYPE
+
- ZEXTERN int ZEXPORT inflateBack(z_streamp strm,
- in_func in, void FAR *in_desc,
- out_func out, void FAR *out_desc);
-@@ -1217,6 +1230,8 @@ ZEXTERN uLong ZEXPORT zlibCompileFlags(void);
+ ZEXTERN int ZEXPORT inflateBack OF((z_streamp strm,
+ in_func in, void FAR *in_desc,
+ out_func out, void FAR *out_desc));
+@@ -1214,6 +1227,8 @@ ZEXTERN uLong ZEXPORT zlibCompileFlags OF((void));
27-31: 0 (reserved)
*/
@@ -304,23 +319,24 @@
#ifndef Z_SOLO
/* utility functions */
-@@ -1768,6 +1783,8 @@ ZEXTERN uLong ZEXPORT crc32_combine_gen(z_off_t len2);
+@@ -1765,6 +1780,8 @@ ZEXTERN uLong ZEXPORT crc32_combine_gen OF((z_off_t len2));
crc32_combine_op().
*/
+#ifndef Z_FREETYPE
+
- ZEXTERN uLong ZEXPORT crc32_combine_op(uLong crc1, uLong crc2, uLong op);
+ ZEXTERN uLong ZEXPORT crc32_combine_op OF((uLong crc1, uLong crc2, uLong op));
/*
Give the same result as crc32_combine(), using op in place of len2. op is
-@@ -1825,6 +1842,17 @@ ZEXTERN int ZEXPORT inflateBackInit_(z_streamp strm, int windowBits,
+@@ -1822,6 +1839,19 @@ ZEXTERN int ZEXPORT inflateBackInit_ OF((z_streamp strm, int windowBits,
ZLIB_VERSION, (int)sizeof(z_stream))
#endif
+#else /* Z_FREETYPE */
+
-+ZEXTERN int ZEXPORT inflateInit2_(z_streamp strm, int windowBits,
-+ const char *version, int stream_size);
++
++ZEXTERN int ZEXPORT inflateInit2_ OF((z_streamp strm, int windowBits,
++ const char *version, int stream_size));
+
+# define inflateInit2(strm, windowBits) \
+ inflateInit2_((strm), (windowBits), ZLIB_VERSION, \
@@ -328,37 +344,38 @@
+
+#endif /* Z_FREETYPE */
+
++
#ifndef Z_SOLO
/* gzgetc() macro and its supporting function and exposed data structure. Note
-@@ -1904,20 +1932,25 @@ ZEXTERN int ZEXPORT gzgetc_(gzFile file); /* backward compatibility */
+@@ -1901,20 +1931,25 @@ ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file)); /* backward compatibility */
#else /* Z_SOLO */
+#ifndef Z_FREETYPE
- ZEXTERN uLong ZEXPORT adler32_combine(uLong, uLong, z_off_t);
- ZEXTERN uLong ZEXPORT crc32_combine(uLong, uLong, z_off_t);
- ZEXTERN uLong ZEXPORT crc32_combine_gen(z_off_t);
+ ZEXTERN uLong ZEXPORT adler32_combine OF((uLong, uLong, z_off_t));
+ ZEXTERN uLong ZEXPORT crc32_combine OF((uLong, uLong, z_off_t));
+ ZEXTERN uLong ZEXPORT crc32_combine_gen OF((z_off_t));
+#endif
#endif /* !Z_SOLO */
/* undocumented functions */
+#ifndef Z_FREETYPE
- ZEXTERN const char * ZEXPORT zError(int);
- ZEXTERN int ZEXPORT inflateSyncPoint(z_streamp);
- ZEXTERN const z_crc_t FAR * ZEXPORT get_crc_table(void);
- ZEXTERN int ZEXPORT inflateUndermine(z_streamp, int);
- ZEXTERN int ZEXPORT inflateValidate(z_streamp, int);
- ZEXTERN unsigned long ZEXPORT inflateCodesUsed(z_streamp);
+ ZEXTERN const char * ZEXPORT zError OF((int));
+ ZEXTERN int ZEXPORT inflateSyncPoint OF((z_streamp));
+ ZEXTERN const z_crc_t FAR * ZEXPORT get_crc_table OF((void));
+ ZEXTERN int ZEXPORT inflateUndermine OF((z_streamp, int));
+ ZEXTERN int ZEXPORT inflateValidate OF((z_streamp, int));
+ ZEXTERN unsigned long ZEXPORT inflateCodesUsed OF((z_streamp));
+#endif /* !Z_FREETYPE */
- ZEXTERN int ZEXPORT inflateResetKeep(z_streamp);
+ ZEXTERN int ZEXPORT inflateResetKeep OF((z_streamp));
+#ifndef Z_FREETYPE
- ZEXTERN int ZEXPORT deflateResetKeep(z_streamp);
+ ZEXTERN int ZEXPORT deflateResetKeep OF((z_streamp));
#if defined(_WIN32) && !defined(Z_SOLO)
- ZEXTERN gzFile ZEXPORT gzopen_w(const wchar_t *path,
-@@ -1930,6 +1963,7 @@ ZEXTERN int ZEXPORTVA gzvprintf(gzFile file,
- va_list va);
+ ZEXTERN gzFile ZEXPORT gzopen_w OF((const wchar_t *path,
+@@ -1927,6 +1962,7 @@ ZEXTERN int ZEXPORTVA gzvprintf Z_ARG((gzFile file,
+ va_list va));
# endif
#endif
+#endif /* !Z_FREETYPE */
@@ -366,7 +383,7 @@
#ifdef __cplusplus
}
diff --git b/src/gzip/zutil.c a/src/gzip/zutil.c
-index b1c5d2d3c..f76def425 100644
+index ef174ca64..542706ca0 100644
--- b/src/gzip/zutil.c
+++ a/src/gzip/zutil.c
@@ -10,6 +10,8 @@
@@ -378,7 +395,7 @@
z_const char * const z_errmsg[10] = {
(z_const char *)"need dictionary", /* Z_NEED_DICT 2 */
(z_const char *)"stream end", /* Z_STREAM_END 1 */
-@@ -132,6 +134,8 @@ const char * ZEXPORT zError(int err) {
+@@ -138,6 +140,8 @@ const char * ZEXPORT zError(
return ERR_MSG(err);
}
@@ -387,15 +404,16 @@
#if defined(_WIN32_WCE) && _WIN32_WCE < 0x800
/* The older Microsoft C Run-Time Library for Windows CE doesn't have
* errno. We define it as a global variable to simplify porting.
-@@ -149,6 +153,7 @@ void ZLIB_INTERNAL zmemcpy(Bytef* dest, const Bytef* source, uInt len) {
+@@ -159,6 +163,8 @@ void ZLIB_INTERNAL zmemcpy(
} while (--len != 0);
}
+#ifndef Z_FREETYPE
- int ZLIB_INTERNAL zmemcmp(const Bytef* s1, const Bytef* s2, uInt len) {
- uInt j;
-
-@@ -164,6 +169,7 @@ void ZLIB_INTERNAL zmemzero(Bytef* dest, uInt len) {
++
+ int ZLIB_INTERNAL zmemcmp(
+ const Bytef* s1,
+ const Bytef* s2,
+@@ -181,6 +187,7 @@ void ZLIB_INTERNAL zmemzero(
*dest++ = 0; /* ??? to be unrolled */
} while (--len != 0);
}
@@ -404,7 +422,7 @@
#ifndef Z_SOLO
diff --git b/src/gzip/zutil.h a/src/gzip/zutil.h
-index 902a304cc..a2c046a1f 100644
+index 0bc7f4ecd..055ba8b62 100644
--- b/src/gzip/zutil.h
+++ a/src/gzip/zutil.h
@@ -53,8 +53,10 @@ typedef unsigned long ulg;
@@ -414,7 +432,7 @@
+#ifndef Z_FREETYPE
extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
/* (size given to avoid silly warnings with Visual C++) */
-+#endif
++#endif /* !Z_FREETYPE */
#define ERR_MSG(err) z_errmsg[Z_NEED_DICT-(err)]
@@ -428,7 +446,7 @@
#if !defined(_WIN32) && \
(!defined(_LARGEFILE64_SOURCE) || _LFS64_LARGEFILE-0 == 0)
@@ -196,6 +200,8 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
- ZEXTERN uLong ZEXPORT crc32_combine_gen64(z_off_t);
+ ZEXTERN uLong ZEXPORT crc32_combine_gen64 OF((z_off_t));
#endif
+#endif /* !Z_FREETYPE */
@@ -448,4 +466,4 @@
+# define zmemzero(dest, len) ft_memset(dest, 0, len)
# endif
#else
- void ZLIB_INTERNAL zmemcpy(Bytef* dest, const Bytef* source, uInt len);
+ void ZLIB_INTERNAL zmemcpy OF((Bytef* dest, const Bytef* source, uInt len));
diff --git a/src/gzip/rules.mk b/src/gzip/rules.mk
index 6b6c990..c76eacb 100644
--- a/src/gzip/rules.mk
+++ b/src/gzip/rules.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 2002-2024 by
+# Copyright (C) 2002-2023 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/src/gzip/zlib.h b/src/gzip/zlib.h
index 5c7a884..3f2f76e 100644
--- a/src/gzip/zlib.h
+++ b/src/gzip/zlib.h
@@ -1,7 +1,7 @@
/* zlib.h -- interface of the 'zlib' general purpose compression library
- version 1.3, August 18th, 2023
+ version 1.2.13, October 13th, 2022
- Copyright (C) 1995-2023 Jean-loup Gailly and Mark Adler
+ Copyright (C) 1995-2022 Jean-loup Gailly and Mark Adler
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -37,11 +37,11 @@
extern "C" {
#endif
-#define ZLIB_VERSION "1.3"
-#define ZLIB_VERNUM 0x1300
+#define ZLIB_VERSION "1.2.13"
+#define ZLIB_VERNUM 0x12d0
#define ZLIB_VER_MAJOR 1
-#define ZLIB_VER_MINOR 3
-#define ZLIB_VER_REVISION 0
+#define ZLIB_VER_MINOR 2
+#define ZLIB_VER_REVISION 13
#define ZLIB_VER_SUBREVISION 0
/*
@@ -78,8 +78,8 @@
even in the case of corrupted input.
*/
-typedef voidpf (*alloc_func)(voidpf opaque, uInt items, uInt size);
-typedef void (*free_func)(voidpf opaque, voidpf address);
+typedef voidpf (*alloc_func) OF((voidpf opaque, uInt items, uInt size));
+typedef void (*free_func) OF((voidpf opaque, voidpf address));
struct internal_state;
@@ -219,7 +219,7 @@
/* basic functions */
-ZEXTERN const char * ZEXPORT zlibVersion(void);
+ZEXTERN const char * ZEXPORT zlibVersion OF((void));
/* The application can compare zlibVersion and ZLIB_VERSION for consistency.
If the first character differs, the library code actually used is not
compatible with the zlib.h header file used by the application. This check
@@ -227,12 +227,12 @@
*/
/*
-ZEXTERN int ZEXPORT deflateInit(z_streamp strm, int level);
+ZEXTERN int ZEXPORT deflateInit OF((z_streamp strm, int level));
Initializes the internal stream state for compression. The fields
zalloc, zfree and opaque must be initialized before by the caller. If
zalloc and zfree are set to Z_NULL, deflateInit updates them to use default
- allocation functions. total_in, total_out, adler, and msg are initialized.
+ allocation functions.
The compression level must be Z_DEFAULT_COMPRESSION, or between 0 and 9:
1 gives best speed, 9 gives best compression, 0 gives no compression at all
@@ -249,7 +249,7 @@
*/
-ZEXTERN int ZEXPORT deflate(z_streamp strm, int flush);
+ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush));
/*
deflate compresses as much data as possible, and stops when the input
buffer becomes empty or the output buffer becomes full. It may introduce
@@ -322,8 +322,8 @@
with the same value of the flush parameter and more output space (updated
avail_out), until the flush is complete (deflate returns with non-zero
avail_out). In the case of a Z_FULL_FLUSH or Z_SYNC_FLUSH, make sure that
- avail_out is greater than six when the flush marker begins, in order to avoid
- repeated flush markers upon calling deflate() again when avail_out == 0.
+ avail_out is greater than six to avoid repeated flush markers due to
+ avail_out == 0 on return.
If the parameter flush is set to Z_FINISH, pending input is processed,
pending output is flushed and deflate returns with Z_STREAM_END if there was
@@ -362,7 +362,7 @@
*/
-ZEXTERN int ZEXPORT deflateEnd(z_streamp strm);
+ZEXTERN int ZEXPORT deflateEnd OF((z_streamp strm));
/*
All dynamically allocated data structures for this stream are freed.
This function discards any unprocessed input and does not flush any pending
@@ -378,7 +378,7 @@
#endif /* !Z_FREETYPE */
/*
-ZEXTERN int ZEXPORT inflateInit(z_streamp strm);
+ZEXTERN int ZEXPORT inflateInit OF((z_streamp strm));
Initializes the internal stream state for decompression. The fields
next_in, avail_in, zalloc, zfree and opaque must be initialized before by
@@ -386,8 +386,7 @@
read or consumed. The allocation of a sliding window will be deferred to
the first call of inflate (if the decompression does not complete on the
first call). If zalloc and zfree are set to Z_NULL, inflateInit updates
- them to use default allocation functions. total_in, total_out, adler, and
- msg are initialized.
+ them to use default allocation functions.
inflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough
memory, Z_VERSION_ERROR if the zlib library version is incompatible with the
@@ -401,7 +400,7 @@
*/
-ZEXTERN int ZEXPORT inflate(z_streamp strm, int flush);
+ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush));
/*
inflate decompresses as much data as possible, and stops when the input
buffer becomes empty or the output buffer becomes full. It may introduce
@@ -521,7 +520,7 @@
*/
-ZEXTERN int ZEXPORT inflateEnd(z_streamp strm);
+ZEXTERN int ZEXPORT inflateEnd OF((z_streamp strm));
/*
All dynamically allocated data structures for this stream are freed.
This function discards any unprocessed input and does not flush any pending
@@ -541,12 +540,12 @@
#ifndef Z_FREETYPE
/*
-ZEXTERN int ZEXPORT deflateInit2(z_streamp strm,
- int level,
- int method,
- int windowBits,
- int memLevel,
- int strategy);
+ZEXTERN int ZEXPORT deflateInit2 OF((z_streamp strm,
+ int level,
+ int method,
+ int windowBits,
+ int memLevel,
+ int strategy));
This is another version of deflateInit with more compression options. The
fields zalloc, zfree and opaque must be initialized before by the caller.
@@ -613,9 +612,9 @@
compression: this will be done by deflate().
*/
-ZEXTERN int ZEXPORT deflateSetDictionary(z_streamp strm,
- const Bytef *dictionary,
- uInt dictLength);
+ZEXTERN int ZEXPORT deflateSetDictionary OF((z_streamp strm,
+ const Bytef *dictionary,
+ uInt dictLength));
/*
Initializes the compression dictionary from the given byte sequence
without producing any compressed output. When using the zlib format, this
@@ -657,9 +656,9 @@
not perform any compression: this will be done by deflate().
*/
-ZEXTERN int ZEXPORT deflateGetDictionary(z_streamp strm,
- Bytef *dictionary,
- uInt *dictLength);
+ZEXTERN int ZEXPORT deflateGetDictionary OF((z_streamp strm,
+ Bytef *dictionary,
+ uInt *dictLength));
/*
Returns the sliding dictionary being maintained by deflate. dictLength is
set to the number of bytes in the dictionary, and that many bytes are copied
@@ -679,8 +678,8 @@
stream state is inconsistent.
*/
-ZEXTERN int ZEXPORT deflateCopy(z_streamp dest,
- z_streamp source);
+ZEXTERN int ZEXPORT deflateCopy OF((z_streamp dest,
+ z_streamp source));
/*
Sets the destination stream as a complete copy of the source stream.
@@ -697,20 +696,20 @@
destination.
*/
-ZEXTERN int ZEXPORT deflateReset(z_streamp strm);
+ZEXTERN int ZEXPORT deflateReset OF((z_streamp strm));
/*
This function is equivalent to deflateEnd followed by deflateInit, but
does not free and reallocate the internal compression state. The stream
will leave the compression level and any other attributes that may have been
- set unchanged. total_in, total_out, adler, and msg are initialized.
+ set unchanged.
deflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source
stream state was inconsistent (such as zalloc or state being Z_NULL).
*/
-ZEXTERN int ZEXPORT deflateParams(z_streamp strm,
- int level,
- int strategy);
+ZEXTERN int ZEXPORT deflateParams OF((z_streamp strm,
+ int level,
+ int strategy));
/*
Dynamically update the compression level and compression strategy. The
interpretation of level and strategy is as in deflateInit2(). This can be
@@ -735,7 +734,7 @@
Then no more input data should be provided before the deflateParams() call.
If this is done, the old level and strategy will be applied to the data
compressed before deflateParams(), and the new level and strategy will be
- applied to the data compressed after deflateParams().
+ applied to the the data compressed after deflateParams().
deflateParams returns Z_OK on success, Z_STREAM_ERROR if the source stream
state was inconsistent or if a parameter was invalid, or Z_BUF_ERROR if
@@ -746,11 +745,11 @@
retried with more output space.
*/
-ZEXTERN int ZEXPORT deflateTune(z_streamp strm,
- int good_length,
- int max_lazy,
- int nice_length,
- int max_chain);
+ZEXTERN int ZEXPORT deflateTune OF((z_streamp strm,
+ int good_length,
+ int max_lazy,
+ int nice_length,
+ int max_chain));
/*
Fine tune deflate's internal compression parameters. This should only be
used by someone who understands the algorithm used by zlib's deflate for
@@ -763,8 +762,8 @@
returns Z_OK on success, or Z_STREAM_ERROR for an invalid deflate stream.
*/
-ZEXTERN uLong ZEXPORT deflateBound(z_streamp strm,
- uLong sourceLen);
+ZEXTERN uLong ZEXPORT deflateBound OF((z_streamp strm,
+ uLong sourceLen));
/*
deflateBound() returns an upper bound on the compressed size after
deflation of sourceLen bytes. It must be called after deflateInit() or
@@ -778,9 +777,9 @@
than Z_FINISH or Z_NO_FLUSH are used.
*/
-ZEXTERN int ZEXPORT deflatePending(z_streamp strm,
- unsigned *pending,
- int *bits);
+ZEXTERN int ZEXPORT deflatePending OF((z_streamp strm,
+ unsigned *pending,
+ int *bits));
/*
deflatePending() returns the number of bytes and bits of output that have
been generated, but not yet provided in the available output. The bytes not
@@ -793,9 +792,9 @@
stream state was inconsistent.
*/
-ZEXTERN int ZEXPORT deflatePrime(z_streamp strm,
- int bits,
- int value);
+ZEXTERN int ZEXPORT deflatePrime OF((z_streamp strm,
+ int bits,
+ int value));
/*
deflatePrime() inserts bits in the deflate output stream. The intent
is that this function is used to start off the deflate output with the bits
@@ -810,8 +809,8 @@
source stream state was inconsistent.
*/
-ZEXTERN int ZEXPORT deflateSetHeader(z_streamp strm,
- gz_headerp head);
+ZEXTERN int ZEXPORT deflateSetHeader OF((z_streamp strm,
+ gz_headerp head));
/*
deflateSetHeader() provides gzip header information for when a gzip
stream is requested by deflateInit2(). deflateSetHeader() may be called
@@ -827,17 +826,16 @@
gzip file" and give up.
If deflateSetHeader is not used, the default gzip header has text false,
- the time set to zero, and os set to the current operating system, with no
- extra, name, or comment fields. The gzip header is returned to the default
- state by deflateReset().
+ the time set to zero, and os set to 255, with no extra, name, or comment
+ fields. The gzip header is returned to the default state by deflateReset().
deflateSetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source
stream state was inconsistent.
*/
/*
-ZEXTERN int ZEXPORT inflateInit2(z_streamp strm,
- int windowBits);
+ZEXTERN int ZEXPORT inflateInit2 OF((z_streamp strm,
+ int windowBits));
This is another version of inflateInit with an extra parameter. The
fields next_in, avail_in, zalloc, zfree and opaque must be initialized
@@ -890,9 +888,9 @@
deferred until inflate() is called.
*/
-ZEXTERN int ZEXPORT inflateSetDictionary(z_streamp strm,
- const Bytef *dictionary,
- uInt dictLength);
+ZEXTERN int ZEXPORT inflateSetDictionary OF((z_streamp strm,
+ const Bytef *dictionary,
+ uInt dictLength));
/*
Initializes the decompression dictionary from the given uncompressed byte
sequence. This function must be called immediately after a call of inflate,
@@ -913,9 +911,9 @@
inflate().
*/
-ZEXTERN int ZEXPORT inflateGetDictionary(z_streamp strm,
- Bytef *dictionary,
- uInt *dictLength);
+ZEXTERN int ZEXPORT inflateGetDictionary OF((z_streamp strm,
+ Bytef *dictionary,
+ uInt *dictLength));
/*
Returns the sliding dictionary being maintained by inflate. dictLength is
set to the number of bytes in the dictionary, and that many bytes are copied
@@ -928,7 +926,7 @@
stream state is inconsistent.
*/
-ZEXTERN int ZEXPORT inflateSync(z_streamp strm);
+ZEXTERN int ZEXPORT inflateSync OF((z_streamp strm));
/*
Skips invalid compressed data until a possible full flush point (see above
for the description of deflate with Z_FULL_FLUSH) can be found, or until all
@@ -947,8 +945,8 @@
input each time, until success or end of the input data.
*/
-ZEXTERN int ZEXPORT inflateCopy(z_streamp dest,
- z_streamp source);
+ZEXTERN int ZEXPORT inflateCopy OF((z_streamp dest,
+ z_streamp source));
/*
Sets the destination stream as a complete copy of the source stream.
@@ -965,19 +963,18 @@
#endif /* !Z_FREETYPE */
-ZEXTERN int ZEXPORT inflateReset(z_streamp strm);
+ZEXTERN int ZEXPORT inflateReset OF((z_streamp strm));
/*
This function is equivalent to inflateEnd followed by inflateInit,
but does not free and reallocate the internal decompression state. The
stream will keep attributes that may have been set by inflateInit2.
- total_in, total_out, adler, and msg are initialized.
inflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source
stream state was inconsistent (such as zalloc or state being Z_NULL).
*/
-ZEXTERN int ZEXPORT inflateReset2(z_streamp strm,
- int windowBits);
+ZEXTERN int ZEXPORT inflateReset2 OF((z_streamp strm,
+ int windowBits));
/*
This function is the same as inflateReset, but it also permits changing
the wrap and window size requests. The windowBits parameter is interpreted
@@ -992,9 +989,9 @@
#ifndef Z_FREETYPE
-ZEXTERN int ZEXPORT inflatePrime(z_streamp strm,
- int bits,
- int value);
+ZEXTERN int ZEXPORT inflatePrime OF((z_streamp strm,
+ int bits,
+ int value));
/*
This function inserts bits in the inflate input stream. The intent is
that this function is used to start inflating at a bit position in the
@@ -1013,7 +1010,7 @@
stream state was inconsistent.
*/
-ZEXTERN long ZEXPORT inflateMark(z_streamp strm);
+ZEXTERN long ZEXPORT inflateMark OF((z_streamp strm));
/*
This function returns two values, one in the lower 16 bits of the return
value, and the other in the remaining upper bits, obtained by shifting the
@@ -1041,8 +1038,8 @@
source stream state was inconsistent.
*/
-ZEXTERN int ZEXPORT inflateGetHeader(z_streamp strm,
- gz_headerp head);
+ZEXTERN int ZEXPORT inflateGetHeader OF((z_streamp strm,
+ gz_headerp head));
/*
inflateGetHeader() requests that gzip header information be stored in the
provided gz_header structure. inflateGetHeader() may be called after
@@ -1084,8 +1081,8 @@
#endif /* !Z_FREETYPE */
/*
-ZEXTERN int ZEXPORT inflateBackInit(z_streamp strm, int windowBits,
- unsigned char FAR *window);
+ZEXTERN int ZEXPORT inflateBackInit OF((z_streamp strm, int windowBits,
+ unsigned char FAR *window));
Initialize the internal stream state for decompression using inflateBack()
calls. The fields zalloc, zfree and opaque in strm must be initialized
@@ -1105,15 +1102,15 @@
the version of the header file.
*/
-typedef unsigned (*in_func)(void FAR *,
- z_const unsigned char FAR * FAR *);
-typedef int (*out_func)(void FAR *, unsigned char FAR *, unsigned);
+typedef unsigned (*in_func) OF((void FAR *,
+ z_const unsigned char FAR * FAR *));
+typedef int (*out_func) OF((void FAR *, unsigned char FAR *, unsigned));
#ifndef Z_FREETYPE
-ZEXTERN int ZEXPORT inflateBack(z_streamp strm,
- in_func in, void FAR *in_desc,
- out_func out, void FAR *out_desc);
+ZEXTERN int ZEXPORT inflateBack OF((z_streamp strm,
+ in_func in, void FAR *in_desc,
+ out_func out, void FAR *out_desc));
/*
inflateBack() does a raw inflate with a single call using a call-back
interface for input and output. This is potentially more efficient than
@@ -1181,7 +1178,7 @@
cannot return Z_OK.
*/
-ZEXTERN int ZEXPORT inflateBackEnd(z_streamp strm);
+ZEXTERN int ZEXPORT inflateBackEnd OF((z_streamp strm));
/*
All memory allocated by inflateBackInit() is freed.
@@ -1189,7 +1186,7 @@
state was inconsistent.
*/
-ZEXTERN uLong ZEXPORT zlibCompileFlags(void);
+ZEXTERN uLong ZEXPORT zlibCompileFlags OF((void));
/* Return flags indicating compile-time options.
Type sizes, two bits each, 00 = 16 bits, 01 = 32, 10 = 64, 11 = other:
@@ -1244,8 +1241,8 @@
you need special options.
*/
-ZEXTERN int ZEXPORT compress(Bytef *dest, uLongf *destLen,
- const Bytef *source, uLong sourceLen);
+ZEXTERN int ZEXPORT compress OF((Bytef *dest, uLongf *destLen,
+ const Bytef *source, uLong sourceLen));
/*
Compresses the source buffer into the destination buffer. sourceLen is
the byte length of the source buffer. Upon entry, destLen is the total size
@@ -1259,9 +1256,9 @@
buffer.
*/
-ZEXTERN int ZEXPORT compress2(Bytef *dest, uLongf *destLen,
- const Bytef *source, uLong sourceLen,
- int level);
+ZEXTERN int ZEXPORT compress2 OF((Bytef *dest, uLongf *destLen,
+ const Bytef *source, uLong sourceLen,
+ int level));
/*
Compresses the source buffer into the destination buffer. The level
parameter has the same meaning as in deflateInit. sourceLen is the byte
@@ -1275,15 +1272,15 @@
Z_STREAM_ERROR if the level parameter is invalid.
*/
-ZEXTERN uLong ZEXPORT compressBound(uLong sourceLen);
+ZEXTERN uLong ZEXPORT compressBound OF((uLong sourceLen));
/*
compressBound() returns an upper bound on the compressed size after
compress() or compress2() on sourceLen bytes. It would be used before a
compress() or compress2() call to allocate the destination buffer.
*/
-ZEXTERN int ZEXPORT uncompress(Bytef *dest, uLongf *destLen,
- const Bytef *source, uLong sourceLen);
+ZEXTERN int ZEXPORT uncompress OF((Bytef *dest, uLongf *destLen,
+ const Bytef *source, uLong sourceLen));
/*
Decompresses the source buffer into the destination buffer. sourceLen is
the byte length of the source buffer. Upon entry, destLen is the total size
@@ -1300,8 +1297,8 @@
buffer with the uncompressed data up to that point.
*/
-ZEXTERN int ZEXPORT uncompress2(Bytef *dest, uLongf *destLen,
- const Bytef *source, uLong *sourceLen);
+ZEXTERN int ZEXPORT uncompress2 OF((Bytef *dest, uLongf *destLen,
+ const Bytef *source, uLong *sourceLen));
/*
Same as uncompress, except that sourceLen is a pointer, where the
length of the source is *sourceLen. On return, *sourceLen is the number of
@@ -1320,7 +1317,7 @@
typedef struct gzFile_s *gzFile; /* semi-opaque gzip file descriptor */
/*
-ZEXTERN gzFile ZEXPORT gzopen(const char *path, const char *mode);
+ZEXTERN gzFile ZEXPORT gzopen OF((const char *path, const char *mode));
Open the gzip (.gz) file at path for reading and decompressing, or
compressing and writing. The mode parameter is as in fopen ("rb" or "wb")
@@ -1357,7 +1354,7 @@
file could not be opened.
*/
-ZEXTERN gzFile ZEXPORT gzdopen(int fd, const char *mode);
+ZEXTERN gzFile ZEXPORT gzdopen OF((int fd, const char *mode));
/*
Associate a gzFile with the file descriptor fd. File descriptors are
obtained from calls like open, dup, creat, pipe or fileno (if the file has
@@ -1380,7 +1377,7 @@
will not detect if fd is invalid (unless fd is -1).
*/
-ZEXTERN int ZEXPORT gzbuffer(gzFile file, unsigned size);
+ZEXTERN int ZEXPORT gzbuffer OF((gzFile file, unsigned size));
/*
Set the internal buffer size used by this library's functions for file to
size. The default buffer size is 8192 bytes. This function must be called
@@ -1396,7 +1393,7 @@
too late.
*/
-ZEXTERN int ZEXPORT gzsetparams(gzFile file, int level, int strategy);
+ZEXTERN int ZEXPORT gzsetparams OF((gzFile file, int level, int strategy));
/*
Dynamically update the compression level and strategy for file. See the
description of deflateInit2 for the meaning of these parameters. Previously
@@ -1407,7 +1404,7 @@
or Z_MEM_ERROR if there is a memory allocation error.
*/
-ZEXTERN int ZEXPORT gzread(gzFile file, voidp buf, unsigned len);
+ZEXTERN int ZEXPORT gzread OF((gzFile file, voidp buf, unsigned len));
/*
Read and decompress up to len uncompressed bytes from file into buf. If
the input file is not in gzip format, gzread copies the given number of
@@ -1437,8 +1434,8 @@
Z_STREAM_ERROR.
*/
-ZEXTERN z_size_t ZEXPORT gzfread(voidp buf, z_size_t size, z_size_t nitems,
- gzFile file);
+ZEXTERN z_size_t ZEXPORT gzfread OF((voidp buf, z_size_t size, z_size_t nitems,
+ gzFile file));
/*
Read and decompress up to nitems items of size size from file into buf,
otherwise operating as gzread() does. This duplicates the interface of
@@ -1463,14 +1460,14 @@
file, resetting and retrying on end-of-file, when size is not 1.
*/
-ZEXTERN int ZEXPORT gzwrite(gzFile file, voidpc buf, unsigned len);
+ZEXTERN int ZEXPORT gzwrite OF((gzFile file, voidpc buf, unsigned len));
/*
Compress and write the len uncompressed bytes at buf to file. gzwrite
returns the number of uncompressed bytes written or 0 in case of error.
*/
-ZEXTERN z_size_t ZEXPORT gzfwrite(voidpc buf, z_size_t size,
- z_size_t nitems, gzFile file);
+ZEXTERN z_size_t ZEXPORT gzfwrite OF((voidpc buf, z_size_t size,
+ z_size_t nitems, gzFile file));
/*
Compress and write nitems items of size size from buf to file, duplicating
the interface of stdio's fwrite(), with size_t request and return types. If
@@ -1483,7 +1480,7 @@
is returned, and the error state is set to Z_STREAM_ERROR.
*/
-ZEXTERN int ZEXPORTVA gzprintf(gzFile file, const char *format, ...);
+ZEXTERN int ZEXPORTVA gzprintf Z_ARG((gzFile file, const char *format, ...));
/*
Convert, format, compress, and write the arguments (...) to file under
control of the string format, as in fprintf. gzprintf returns the number of
@@ -1498,7 +1495,7 @@
This can be determined using zlibCompileFlags().
*/
-ZEXTERN int ZEXPORT gzputs(gzFile file, const char *s);
+ZEXTERN int ZEXPORT gzputs OF((gzFile file, const char *s));
/*
Compress and write the given null-terminated string s to file, excluding
the terminating null character.
@@ -1506,7 +1503,7 @@
gzputs returns the number of characters written, or -1 in case of error.
*/
-ZEXTERN char * ZEXPORT gzgets(gzFile file, char *buf, int len);
+ZEXTERN char * ZEXPORT gzgets OF((gzFile file, char *buf, int len));
/*
Read and decompress bytes from file into buf, until len-1 characters are
read, or until a newline character is read and transferred to buf, or an
@@ -1520,13 +1517,13 @@
buf are indeterminate.
*/
-ZEXTERN int ZEXPORT gzputc(gzFile file, int c);
+ZEXTERN int ZEXPORT gzputc OF((gzFile file, int c));
/*
Compress and write c, converted to an unsigned char, into file. gzputc
returns the value that was written, or -1 in case of error.
*/
-ZEXTERN int ZEXPORT gzgetc(gzFile file);
+ZEXTERN int ZEXPORT gzgetc OF((gzFile file));
/*
Read and decompress one byte from file. gzgetc returns this byte or -1
in case of end of file or error. This is implemented as a macro for speed.
@@ -1535,7 +1532,7 @@
points to has been clobbered or not.
*/
-ZEXTERN int ZEXPORT gzungetc(int c, gzFile file);
+ZEXTERN int ZEXPORT gzungetc OF((int c, gzFile file));
/*
Push c back onto the stream for file to be read as the first character on
the next read. At least one character of push-back is always allowed.
@@ -1547,7 +1544,7 @@
gzseek() or gzrewind().
*/
-ZEXTERN int ZEXPORT gzflush(gzFile file, int flush);
+ZEXTERN int ZEXPORT gzflush OF((gzFile file, int flush));
/*
Flush all pending output to file. The parameter flush is as in the
deflate() function. The return value is the zlib error number (see function
@@ -1563,8 +1560,8 @@
*/
/*
-ZEXTERN z_off_t ZEXPORT gzseek(gzFile file,
- z_off_t offset, int whence);
+ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile file,
+ z_off_t offset, int whence));
Set the starting position to offset relative to whence for the next gzread
or gzwrite on file. The offset represents a number of bytes in the
@@ -1582,7 +1579,7 @@
would be before the current position.
*/
-ZEXTERN int ZEXPORT gzrewind(gzFile file);
+ZEXTERN int ZEXPORT gzrewind OF((gzFile file));
/*
Rewind file. This function is supported only for reading.
@@ -1590,7 +1587,7 @@
*/
/*
-ZEXTERN z_off_t ZEXPORT gztell(gzFile file);
+ZEXTERN z_off_t ZEXPORT gztell OF((gzFile file));
Return the starting position for the next gzread or gzwrite on file.
This position represents a number of bytes in the uncompressed data stream,
@@ -1601,7 +1598,7 @@
*/
/*
-ZEXTERN z_off_t ZEXPORT gzoffset(gzFile file);
+ZEXTERN z_off_t ZEXPORT gzoffset OF((gzFile file));
Return the current compressed (actual) read or write offset of file. This
offset includes the count of bytes that precede the gzip stream, for example
@@ -1610,7 +1607,7 @@
be used for a progress indicator. On error, gzoffset() returns -1.
*/
-ZEXTERN int ZEXPORT gzeof(gzFile file);
+ZEXTERN int ZEXPORT gzeof OF((gzFile file));
/*
Return true (1) if the end-of-file indicator for file has been set while
reading, false (0) otherwise. Note that the end-of-file indicator is set
@@ -1625,7 +1622,7 @@
has grown since the previous end of file was detected.
*/
-ZEXTERN int ZEXPORT gzdirect(gzFile file);
+ZEXTERN int ZEXPORT gzdirect OF((gzFile file));
/*
Return true (1) if file is being copied directly while reading, or false
(0) if file is a gzip stream being decompressed.
@@ -1646,7 +1643,7 @@
gzip file reading and decompression, which may not be desired.)
*/
-ZEXTERN int ZEXPORT gzclose(gzFile file);
+ZEXTERN int ZEXPORT gzclose OF((gzFile file));
/*
Flush all pending output for file, if necessary, close file and
deallocate the (de)compression state. Note that once file is closed, you
@@ -1659,8 +1656,8 @@
last read ended in the middle of a gzip stream, or Z_OK on success.
*/
-ZEXTERN int ZEXPORT gzclose_r(gzFile file);
-ZEXTERN int ZEXPORT gzclose_w(gzFile file);
+ZEXTERN int ZEXPORT gzclose_r OF((gzFile file));
+ZEXTERN int ZEXPORT gzclose_w OF((gzFile file));
/*
Same as gzclose(), but gzclose_r() is only for use when reading, and
gzclose_w() is only for use when writing or appending. The advantage to
@@ -1671,7 +1668,7 @@
zlib library.
*/
-ZEXTERN const char * ZEXPORT gzerror(gzFile file, int *errnum);
+ZEXTERN const char * ZEXPORT gzerror OF((gzFile file, int *errnum));
/*
Return the error message for the last error which occurred on file.
errnum is set to zlib error number. If an error occurred in the file system
@@ -1687,7 +1684,7 @@
functions above that do not distinguish those cases in their return values.
*/
-ZEXTERN void ZEXPORT gzclearerr(gzFile file);
+ZEXTERN void ZEXPORT gzclearerr OF((gzFile file));
/*
Clear the error and end-of-file flags for file. This is analogous to the
clearerr() function in stdio. This is useful for continuing to read a gzip
@@ -1704,7 +1701,7 @@
library.
*/
-ZEXTERN uLong ZEXPORT adler32(uLong adler, const Bytef *buf, uInt len);
+ZEXTERN uLong ZEXPORT adler32 OF((uLong adler, const Bytef *buf, uInt len));
/*
Update a running Adler-32 checksum with the bytes buf[0..len-1] and
return the updated checksum. An Adler-32 value is in the range of a 32-bit
@@ -1724,15 +1721,15 @@
if (adler != original_adler) error();
*/
-ZEXTERN uLong ZEXPORT adler32_z(uLong adler, const Bytef *buf,
- z_size_t len);
+ZEXTERN uLong ZEXPORT adler32_z OF((uLong adler, const Bytef *buf,
+ z_size_t len));
/*
Same as adler32(), but with a size_t length.
*/
/*
-ZEXTERN uLong ZEXPORT adler32_combine(uLong adler1, uLong adler2,
- z_off_t len2);
+ZEXTERN uLong ZEXPORT adler32_combine OF((uLong adler1, uLong adler2,
+ z_off_t len2));
Combine two Adler-32 checksums into one. For two sequences of bytes, seq1
and seq2 with lengths len1 and len2, Adler-32 checksums were calculated for
@@ -1742,7 +1739,7 @@
negative, the result has no meaning or utility.
*/
-ZEXTERN uLong ZEXPORT crc32(uLong crc, const Bytef *buf, uInt len);
+ZEXTERN uLong ZEXPORT crc32 OF((uLong crc, const Bytef *buf, uInt len));
/*
Update a running CRC-32 with the bytes buf[0..len-1] and return the
updated CRC-32. A CRC-32 value is in the range of a 32-bit unsigned integer.
@@ -1760,14 +1757,14 @@
if (crc != original_crc) error();
*/
-ZEXTERN uLong ZEXPORT crc32_z(uLong crc, const Bytef *buf,
- z_size_t len);
+ZEXTERN uLong ZEXPORT crc32_z OF((uLong crc, const Bytef *buf,
+ z_size_t len));
/*
Same as crc32(), but with a size_t length.
*/
/*
-ZEXTERN uLong ZEXPORT crc32_combine(uLong crc1, uLong crc2, z_off_t len2);
+ZEXTERN uLong ZEXPORT crc32_combine OF((uLong crc1, uLong crc2, z_off_t len2));
Combine two CRC-32 check values into one. For two sequences of bytes,
seq1 and seq2 with lengths len1 and len2, CRC-32 check values were
@@ -1777,7 +1774,7 @@
*/
/*
-ZEXTERN uLong ZEXPORT crc32_combine_gen(z_off_t len2);
+ZEXTERN uLong ZEXPORT crc32_combine_gen OF((z_off_t len2));
Return the operator corresponding to length len2, to be used with
crc32_combine_op().
@@ -1785,7 +1782,7 @@
#ifndef Z_FREETYPE
-ZEXTERN uLong ZEXPORT crc32_combine_op(uLong crc1, uLong crc2, uLong op);
+ZEXTERN uLong ZEXPORT crc32_combine_op OF((uLong crc1, uLong crc2, uLong op));
/*
Give the same result as crc32_combine(), using op in place of len2. op is
is generated from len2 by crc32_combine_gen(). This will be faster than
@@ -1798,20 +1795,20 @@
/* deflateInit and inflateInit are macros to allow checking the zlib version
* and the compiler's view of z_stream:
*/
-ZEXTERN int ZEXPORT deflateInit_(z_streamp strm, int level,
- const char *version, int stream_size);
-ZEXTERN int ZEXPORT inflateInit_(z_streamp strm,
- const char *version, int stream_size);
-ZEXTERN int ZEXPORT deflateInit2_(z_streamp strm, int level, int method,
- int windowBits, int memLevel,
- int strategy, const char *version,
- int stream_size);
-ZEXTERN int ZEXPORT inflateInit2_(z_streamp strm, int windowBits,
- const char *version, int stream_size);
-ZEXTERN int ZEXPORT inflateBackInit_(z_streamp strm, int windowBits,
- unsigned char FAR *window,
- const char *version,
- int stream_size);
+ZEXTERN int ZEXPORT deflateInit_ OF((z_streamp strm, int level,
+ const char *version, int stream_size));
+ZEXTERN int ZEXPORT inflateInit_ OF((z_streamp strm,
+ const char *version, int stream_size));
+ZEXTERN int ZEXPORT deflateInit2_ OF((z_streamp strm, int level, int method,
+ int windowBits, int memLevel,
+ int strategy, const char *version,
+ int stream_size));
+ZEXTERN int ZEXPORT inflateInit2_ OF((z_streamp strm, int windowBits,
+ const char *version, int stream_size));
+ZEXTERN int ZEXPORT inflateBackInit_ OF((z_streamp strm, int windowBits,
+ unsigned char FAR *window,
+ const char *version,
+ int stream_size));
#ifdef Z_PREFIX_SET
# define z_deflateInit(strm, level) \
deflateInit_((strm), (level), ZLIB_VERSION, (int)sizeof(z_stream))
@@ -1844,8 +1841,9 @@
#else /* Z_FREETYPE */
-ZEXTERN int ZEXPORT inflateInit2_(z_streamp strm, int windowBits,
- const char *version, int stream_size);
+
+ZEXTERN int ZEXPORT inflateInit2_ OF((z_streamp strm, int windowBits,
+ const char *version, int stream_size));
# define inflateInit2(strm, windowBits) \
inflateInit2_((strm), (windowBits), ZLIB_VERSION, \
@@ -1853,6 +1851,7 @@
#endif /* Z_FREETYPE */
+
#ifndef Z_SOLO
/* gzgetc() macro and its supporting function and exposed data structure. Note
@@ -1867,7 +1866,7 @@
unsigned char *next;
z_off64_t pos;
};
-ZEXTERN int ZEXPORT gzgetc_(gzFile file); /* backward compatibility */
+ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file)); /* backward compatibility */
#ifdef Z_PREFIX_SET
# undef z_gzgetc
# define z_gzgetc(g) \
@@ -1884,13 +1883,13 @@
* without large file support, _LFS64_LARGEFILE must also be true
*/
#ifdef Z_LARGE64
- ZEXTERN gzFile ZEXPORT gzopen64(const char *, const char *);
- ZEXTERN z_off64_t ZEXPORT gzseek64(gzFile, z_off64_t, int);
- ZEXTERN z_off64_t ZEXPORT gztell64(gzFile);
- ZEXTERN z_off64_t ZEXPORT gzoffset64(gzFile);
- ZEXTERN uLong ZEXPORT adler32_combine64(uLong, uLong, z_off64_t);
- ZEXTERN uLong ZEXPORT crc32_combine64(uLong, uLong, z_off64_t);
- ZEXTERN uLong ZEXPORT crc32_combine_gen64(z_off64_t);
+ ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *));
+ ZEXTERN z_off64_t ZEXPORT gzseek64 OF((gzFile, z_off64_t, int));
+ ZEXTERN z_off64_t ZEXPORT gztell64 OF((gzFile));
+ ZEXTERN z_off64_t ZEXPORT gzoffset64 OF((gzFile));
+ ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off64_t));
+ ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off64_t));
+ ZEXTERN uLong ZEXPORT crc32_combine_gen64 OF((z_off64_t));
#endif
#if !defined(ZLIB_INTERNAL) && defined(Z_WANT64)
@@ -1912,55 +1911,55 @@
# define crc32_combine_gen crc32_combine_gen64
# endif
# ifndef Z_LARGE64
- ZEXTERN gzFile ZEXPORT gzopen64(const char *, const char *);
- ZEXTERN z_off_t ZEXPORT gzseek64(gzFile, z_off_t, int);
- ZEXTERN z_off_t ZEXPORT gztell64(gzFile);
- ZEXTERN z_off_t ZEXPORT gzoffset64(gzFile);
- ZEXTERN uLong ZEXPORT adler32_combine64(uLong, uLong, z_off_t);
- ZEXTERN uLong ZEXPORT crc32_combine64(uLong, uLong, z_off_t);
- ZEXTERN uLong ZEXPORT crc32_combine_gen64(z_off_t);
+ ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *));
+ ZEXTERN z_off_t ZEXPORT gzseek64 OF((gzFile, z_off_t, int));
+ ZEXTERN z_off_t ZEXPORT gztell64 OF((gzFile));
+ ZEXTERN z_off_t ZEXPORT gzoffset64 OF((gzFile));
+ ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off_t));
+ ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off_t));
+ ZEXTERN uLong ZEXPORT crc32_combine_gen64 OF((z_off_t));
# endif
#else
- ZEXTERN gzFile ZEXPORT gzopen(const char *, const char *);
- ZEXTERN z_off_t ZEXPORT gzseek(gzFile, z_off_t, int);
- ZEXTERN z_off_t ZEXPORT gztell(gzFile);
- ZEXTERN z_off_t ZEXPORT gzoffset(gzFile);
- ZEXTERN uLong ZEXPORT adler32_combine(uLong, uLong, z_off_t);
- ZEXTERN uLong ZEXPORT crc32_combine(uLong, uLong, z_off_t);
- ZEXTERN uLong ZEXPORT crc32_combine_gen(z_off_t);
+ ZEXTERN gzFile ZEXPORT gzopen OF((const char *, const char *));
+ ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile, z_off_t, int));
+ ZEXTERN z_off_t ZEXPORT gztell OF((gzFile));
+ ZEXTERN z_off_t ZEXPORT gzoffset OF((gzFile));
+ ZEXTERN uLong ZEXPORT adler32_combine OF((uLong, uLong, z_off_t));
+ ZEXTERN uLong ZEXPORT crc32_combine OF((uLong, uLong, z_off_t));
+ ZEXTERN uLong ZEXPORT crc32_combine_gen OF((z_off_t));
#endif
#else /* Z_SOLO */
#ifndef Z_FREETYPE
- ZEXTERN uLong ZEXPORT adler32_combine(uLong, uLong, z_off_t);
- ZEXTERN uLong ZEXPORT crc32_combine(uLong, uLong, z_off_t);
- ZEXTERN uLong ZEXPORT crc32_combine_gen(z_off_t);
+ ZEXTERN uLong ZEXPORT adler32_combine OF((uLong, uLong, z_off_t));
+ ZEXTERN uLong ZEXPORT crc32_combine OF((uLong, uLong, z_off_t));
+ ZEXTERN uLong ZEXPORT crc32_combine_gen OF((z_off_t));
#endif
#endif /* !Z_SOLO */
/* undocumented functions */
#ifndef Z_FREETYPE
-ZEXTERN const char * ZEXPORT zError(int);
-ZEXTERN int ZEXPORT inflateSyncPoint(z_streamp);
-ZEXTERN const z_crc_t FAR * ZEXPORT get_crc_table(void);
-ZEXTERN int ZEXPORT inflateUndermine(z_streamp, int);
-ZEXTERN int ZEXPORT inflateValidate(z_streamp, int);
-ZEXTERN unsigned long ZEXPORT inflateCodesUsed(z_streamp);
+ZEXTERN const char * ZEXPORT zError OF((int));
+ZEXTERN int ZEXPORT inflateSyncPoint OF((z_streamp));
+ZEXTERN const z_crc_t FAR * ZEXPORT get_crc_table OF((void));
+ZEXTERN int ZEXPORT inflateUndermine OF((z_streamp, int));
+ZEXTERN int ZEXPORT inflateValidate OF((z_streamp, int));
+ZEXTERN unsigned long ZEXPORT inflateCodesUsed OF((z_streamp));
#endif /* !Z_FREETYPE */
-ZEXTERN int ZEXPORT inflateResetKeep(z_streamp);
+ZEXTERN int ZEXPORT inflateResetKeep OF((z_streamp));
#ifndef Z_FREETYPE
-ZEXTERN int ZEXPORT deflateResetKeep(z_streamp);
+ZEXTERN int ZEXPORT deflateResetKeep OF((z_streamp));
#if defined(_WIN32) && !defined(Z_SOLO)
-ZEXTERN gzFile ZEXPORT gzopen_w(const wchar_t *path,
- const char *mode);
+ZEXTERN gzFile ZEXPORT gzopen_w OF((const wchar_t *path,
+ const char *mode));
#endif
#if defined(STDC) || defined(Z_HAVE_STDARG_H)
# ifndef Z_SOLO
-ZEXTERN int ZEXPORTVA gzvprintf(gzFile file,
- const char *format,
- va_list va);
+ZEXTERN int ZEXPORTVA gzvprintf Z_ARG((gzFile file,
+ const char *format,
+ va_list va));
# endif
#endif
#endif /* !Z_FREETYPE */
diff --git a/src/gzip/zutil.c b/src/gzip/zutil.c
index f76def4..542706c 100644
--- a/src/gzip/zutil.c
+++ b/src/gzip/zutil.c
@@ -26,11 +26,13 @@
};
-const char * ZEXPORT zlibVersion(void) {
+const char * ZEXPORT zlibVersion()
+{
return ZLIB_VERSION;
}
-uLong ZEXPORT zlibCompileFlags(void) {
+uLong ZEXPORT zlibCompileFlags()
+{
uLong flags;
flags = 0;
@@ -121,7 +123,9 @@
# endif
int ZLIB_INTERNAL z_verbose = verbose;
-void ZLIB_INTERNAL z_error(char *m) {
+void ZLIB_INTERNAL z_error(
+ char *m)
+{
fprintf(stderr, "%s\n", m);
exit(1);
}
@@ -130,7 +134,9 @@
/* exported to allow conversion of error code to string for compress() and
* uncompress()
*/
-const char * ZEXPORT zError(int err) {
+const char * ZEXPORT zError(
+ int err)
+{
return ERR_MSG(err);
}
@@ -146,7 +152,11 @@
#ifndef HAVE_MEMCPY
-void ZLIB_INTERNAL zmemcpy(Bytef* dest, const Bytef* source, uInt len) {
+void ZLIB_INTERNAL zmemcpy(
+ Bytef* dest,
+ const Bytef* source,
+ uInt len)
+{
if (len == 0) return;
do {
*dest++ = *source++; /* ??? to be unrolled */
@@ -154,7 +164,12 @@
}
#ifndef Z_FREETYPE
-int ZLIB_INTERNAL zmemcmp(const Bytef* s1, const Bytef* s2, uInt len) {
+
+int ZLIB_INTERNAL zmemcmp(
+ const Bytef* s1,
+ const Bytef* s2,
+ uInt len)
+{
uInt j;
for (j = 0; j < len; j++) {
@@ -163,7 +178,10 @@
return 0;
}
-void ZLIB_INTERNAL zmemzero(Bytef* dest, uInt len) {
+void ZLIB_INTERNAL zmemzero(
+ Bytef* dest,
+ uInt len)
+{
if (len == 0) return;
do {
*dest++ = 0; /* ??? to be unrolled */
@@ -205,7 +223,8 @@
* a protected system like OS/2. Use Microsoft C instead.
*/
-voidpf ZLIB_INTERNAL zcalloc(voidpf opaque, unsigned items, unsigned size) {
+voidpf ZLIB_INTERNAL zcalloc(voidpf opaque, unsigned items, unsigned size)
+{
voidpf buf;
ulg bsize = (ulg)items*size;
@@ -230,7 +249,8 @@
return buf;
}
-void ZLIB_INTERNAL zcfree(voidpf opaque, voidpf ptr) {
+void ZLIB_INTERNAL zcfree(voidpf opaque, voidpf ptr)
+{
int n;
(void)opaque;
@@ -266,12 +286,14 @@
# define _hfree hfree
#endif
-voidpf ZLIB_INTERNAL zcalloc(voidpf opaque, uInt items, uInt size) {
+voidpf ZLIB_INTERNAL zcalloc(voidpf opaque, uInt items, uInt size)
+{
(void)opaque;
return _halloc((long)items, size);
}
-void ZLIB_INTERNAL zcfree(voidpf opaque, voidpf ptr) {
+void ZLIB_INTERNAL zcfree(voidpf opaque, voidpf ptr)
+{
(void)opaque;
_hfree(ptr);
}
@@ -284,18 +306,25 @@
#ifndef MY_ZCALLOC /* Any system without a special alloc function */
#ifndef STDC
-extern voidp malloc(uInt size);
-extern voidp calloc(uInt items, uInt size);
-extern void free(voidpf ptr);
+extern voidp malloc OF((uInt size));
+extern voidp calloc OF((uInt items, uInt size));
+extern void free OF((voidpf ptr));
#endif
-voidpf ZLIB_INTERNAL zcalloc(voidpf opaque, unsigned items, unsigned size) {
+voidpf ZLIB_INTERNAL zcalloc(
+ voidpf opaque,
+ unsigned items,
+ unsigned size)
+{
(void)opaque;
return sizeof(uInt) > 2 ? (voidpf)malloc(items * size) :
(voidpf)calloc(items, size);
}
-void ZLIB_INTERNAL zcfree(voidpf opaque, voidpf ptr) {
+void ZLIB_INTERNAL zcfree(
+ voidpf opaque,
+ voidpf ptr)
+{
(void)opaque;
free(ptr);
}
diff --git a/src/gzip/zutil.h b/src/gzip/zutil.h
index a2c046a..055ba8b 100644
--- a/src/gzip/zutil.h
+++ b/src/gzip/zutil.h
@@ -56,7 +56,7 @@
#ifndef Z_FREETYPE
extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
/* (size given to avoid silly warnings with Visual C++) */
-#endif
+#endif /* !Z_FREETYPE */
#define ERR_MSG(err) z_errmsg[Z_NEED_DICT-(err)]
@@ -195,9 +195,9 @@
/* provide prototypes for these when building zlib without LFS */
#if !defined(_WIN32) && \
(!defined(_LARGEFILE64_SOURCE) || _LFS64_LARGEFILE-0 == 0)
- ZEXTERN uLong ZEXPORT adler32_combine64(uLong, uLong, z_off_t);
- ZEXTERN uLong ZEXPORT crc32_combine64(uLong, uLong, z_off_t);
- ZEXTERN uLong ZEXPORT crc32_combine_gen64(z_off_t);
+ ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off_t));
+ ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off_t));
+ ZEXTERN uLong ZEXPORT crc32_combine_gen64 OF((z_off_t));
#endif
#endif /* !Z_FREETYPE */
@@ -238,16 +238,16 @@
# define zmemzero(dest, len) ft_memset(dest, 0, len)
# endif
#else
- void ZLIB_INTERNAL zmemcpy(Bytef* dest, const Bytef* source, uInt len);
- int ZLIB_INTERNAL zmemcmp(const Bytef* s1, const Bytef* s2, uInt len);
- void ZLIB_INTERNAL zmemzero(Bytef* dest, uInt len);
+ void ZLIB_INTERNAL zmemcpy OF((Bytef* dest, const Bytef* source, uInt len));
+ int ZLIB_INTERNAL zmemcmp OF((const Bytef* s1, const Bytef* s2, uInt len));
+ void ZLIB_INTERNAL zmemzero OF((Bytef* dest, uInt len));
#endif
/* Diagnostic functions */
#ifdef ZLIB_DEBUG
# include <stdio.h>
extern int ZLIB_INTERNAL z_verbose;
- extern void ZLIB_INTERNAL z_error(char *m);
+ extern void ZLIB_INTERNAL z_error OF((char *m));
# define Assert(cond,msg) {if(!(cond)) z_error(msg);}
# define Trace(x) {if (z_verbose>=0) fprintf x ;}
# define Tracev(x) {if (z_verbose>0) fprintf x ;}
@@ -264,9 +264,9 @@
#endif
#ifndef Z_SOLO
- voidpf ZLIB_INTERNAL zcalloc(voidpf opaque, unsigned items,
- unsigned size);
- void ZLIB_INTERNAL zcfree(voidpf opaque, voidpf ptr);
+ voidpf ZLIB_INTERNAL zcalloc OF((voidpf opaque, unsigned items,
+ unsigned size));
+ void ZLIB_INTERNAL zcfree OF((voidpf opaque, voidpf ptr));
#endif
#define ZALLOC(strm, items, size) \
diff --git a/src/lzw/ftlzw.c b/src/lzw/ftlzw.c
index e1acf22..8838379 100644
--- a/src/lzw/ftlzw.c
+++ b/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-2024 by
+ * Copyright (C) 2004-2023 by
* Albert Chin-A-Young.
*
* based on code in `src/gzip/ftgzip.c'
diff --git a/src/lzw/ftzopen.c b/src/lzw/ftzopen.c
index e423324..e680c4d 100644
--- a/src/lzw/ftzopen.c
+++ b/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-2024 by
+ * Copyright (C) 2005-2023 by
* David Turner.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/lzw/ftzopen.h b/src/lzw/ftzopen.h
index 6915218..6c75636 100644
--- a/src/lzw/ftzopen.h
+++ b/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-2024 by
+ * Copyright (C) 2005-2023 by
* David Turner.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/lzw/rules.mk b/src/lzw/rules.mk
index d051fda..b750216 100644
--- a/src/lzw/rules.mk
+++ b/src/lzw/rules.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 2004-2024 by
+# Copyright (C) 2004-2023 by
# Albert Chin-A-Young.
#
# based on `src/lzw/rules.mk'
diff --git a/src/otvalid/module.mk b/src/otvalid/module.mk
index b3ca83c..9013842 100644
--- a/src/otvalid/module.mk
+++ b/src/otvalid/module.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 2004-2024 by
+# Copyright (C) 2004-2023 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/src/otvalid/otvalid.c b/src/otvalid/otvalid.c
index c96967c..3b1e23a 100644
--- a/src/otvalid/otvalid.c
+++ b/src/otvalid/otvalid.c
@@ -4,7 +4,7 @@
*
* FreeType validator for OpenType tables (body only).
*
- * Copyright (C) 2004-2024 by
+ * Copyright (C) 2004-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/otvalid/otvalid.h b/src/otvalid/otvalid.h
index 0f46a7a..7edadb7 100644
--- a/src/otvalid/otvalid.h
+++ b/src/otvalid/otvalid.h
@@ -4,7 +4,7 @@
*
* OpenType table validation (specification only).
*
- * Copyright (C) 2004-2024 by
+ * Copyright (C) 2004-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/otvalid/otvbase.c b/src/otvalid/otvbase.c
index 6101262..f449795 100644
--- a/src/otvalid/otvbase.c
+++ b/src/otvalid/otvbase.c
@@ -4,7 +4,7 @@
*
* OpenType BASE table validation (body).
*
- * Copyright (C) 2004-2024 by
+ * Copyright (C) 2004-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/otvalid/otvcommn.c b/src/otvalid/otvcommn.c
index f06354b..b94d8a0 100644
--- a/src/otvalid/otvcommn.c
+++ b/src/otvalid/otvcommn.c
@@ -4,7 +4,7 @@
*
* OpenType common tables validation (body).
*
- * Copyright (C) 2004-2024 by
+ * Copyright (C) 2004-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/otvalid/otvcommn.h b/src/otvalid/otvcommn.h
index 7db1a57..6702c00 100644
--- a/src/otvalid/otvcommn.h
+++ b/src/otvalid/otvcommn.h
@@ -4,7 +4,7 @@
*
* OpenType common tables validation (specification).
*
- * Copyright (C) 2004-2024 by
+ * Copyright (C) 2004-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/otvalid/otverror.h b/src/otvalid/otverror.h
index 7f4dd6e..4c4049c 100644
--- a/src/otvalid/otverror.h
+++ b/src/otvalid/otverror.h
@@ -4,7 +4,7 @@
*
* OpenType validation module error codes (specification only).
*
- * Copyright (C) 2004-2024 by
+ * Copyright (C) 2004-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/otvalid/otvgdef.c b/src/otvalid/otvgdef.c
index e36cda7..d62e818 100644
--- a/src/otvalid/otvgdef.c
+++ b/src/otvalid/otvgdef.c
@@ -4,7 +4,7 @@
*
* OpenType GDEF table validation (body).
*
- * Copyright (C) 2004-2024 by
+ * Copyright (C) 2004-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/otvalid/otvgpos.c b/src/otvalid/otvgpos.c
index d7547a3..f6102af 100644
--- a/src/otvalid/otvgpos.c
+++ b/src/otvalid/otvgpos.c
@@ -4,7 +4,7 @@
*
* OpenType GPOS table validation (body).
*
- * Copyright (C) 2002-2024 by
+ * Copyright (C) 2002-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/otvalid/otvgpos.h b/src/otvalid/otvgpos.h
index 48a9ed0..b5d0f54 100644
--- a/src/otvalid/otvgpos.h
+++ b/src/otvalid/otvgpos.h
@@ -4,7 +4,7 @@
*
* OpenType GPOS table validator (specification).
*
- * Copyright (C) 2004-2024 by
+ * Copyright (C) 2004-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/otvalid/otvgsub.c b/src/otvalid/otvgsub.c
index a479101..5d40d92 100644
--- a/src/otvalid/otvgsub.c
+++ b/src/otvalid/otvgsub.c
@@ -4,7 +4,7 @@
*
* OpenType GSUB table validation (body).
*
- * Copyright (C) 2004-2024 by
+ * Copyright (C) 2004-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/otvalid/otvjstf.c b/src/otvalid/otvjstf.c
index 1309f6d..712039c 100644
--- a/src/otvalid/otvjstf.c
+++ b/src/otvalid/otvjstf.c
@@ -4,7 +4,7 @@
*
* OpenType JSTF table validation (body).
*
- * Copyright (C) 2004-2024 by
+ * Copyright (C) 2004-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/otvalid/otvmath.c b/src/otvalid/otvmath.c
index b84845a..01fd863 100644
--- a/src/otvalid/otvmath.c
+++ b/src/otvalid/otvmath.c
@@ -4,7 +4,7 @@
*
* OpenType MATH table validation (body).
*
- * Copyright (C) 2007-2024 by
+ * Copyright (C) 2007-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* Written by George Williams.
diff --git a/src/otvalid/otvmod.c b/src/otvalid/otvmod.c
index 74e50c7..d6057c5 100644
--- a/src/otvalid/otvmod.c
+++ b/src/otvalid/otvmod.c
@@ -4,7 +4,7 @@
*
* FreeType's OpenType validation module implementation (body).
*
- * Copyright (C) 2004-2024 by
+ * Copyright (C) 2004-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/otvalid/otvmod.h b/src/otvalid/otvmod.h
index 245c780..f0e68db 100644
--- a/src/otvalid/otvmod.h
+++ b/src/otvalid/otvmod.h
@@ -5,7 +5,7 @@
* FreeType's OpenType validation module implementation
* (specification).
*
- * Copyright (C) 2004-2024 by
+ * Copyright (C) 2004-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/otvalid/rules.mk b/src/otvalid/rules.mk
index 123b696..800cb87 100644
--- a/src/otvalid/rules.mk
+++ b/src/otvalid/rules.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 2004-2024 by
+# Copyright (C) 2004-2023 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/src/pcf/pcfdrivr.c b/src/pcf/pcfdrivr.c
index 93632f1..f1dba02 100644
--- a/src/pcf/pcfdrivr.c
+++ b/src/pcf/pcfdrivr.c
@@ -453,7 +453,7 @@
FT_UInt glyph_index,
FT_Int32 load_flags )
{
- PCF_Face face = (PCF_Face)size->face;
+ PCF_Face face = (PCF_Face)FT_SIZE_FACE( size );
FT_Stream stream;
FT_Error error = FT_Err_Ok;
FT_Bitmap* bitmap = &slot->bitmap;
diff --git a/src/pcf/pcfutil.c b/src/pcf/pcfutil.c
index cd26c77..9575726 100644
--- a/src/pcf/pcfutil.c
+++ b/src/pcf/pcfutil.c
@@ -57,7 +57,7 @@
}
-#if ( defined( __clang_major__ ) && __clang_major__ >= 5 ) || \
+#if defined( __clang__ ) || \
( defined( __GNUC__ ) && \
( __GNUC__ > 4 || ( __GNUC__ == 4 && __GNUC_MINOR__ >= 8 ) ) )
diff --git a/src/pfr/module.mk b/src/pfr/module.mk
index 7df4231..388a38e 100644
--- a/src/pfr/module.mk
+++ b/src/pfr/module.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 2002-2024 by
+# Copyright (C) 2002-2023 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/src/pfr/pfr.c b/src/pfr/pfr.c
index 71b5793..d373815 100644
--- a/src/pfr/pfr.c
+++ b/src/pfr/pfr.c
@@ -4,7 +4,7 @@
*
* FreeType PFR driver component.
*
- * Copyright (C) 2002-2024 by
+ * Copyright (C) 2002-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/pfr/pfrcmap.c b/src/pfr/pfrcmap.c
index cd70166..08fe41d 100644
--- a/src/pfr/pfrcmap.c
+++ b/src/pfr/pfrcmap.c
@@ -4,7 +4,7 @@
*
* FreeType PFR cmap handling (body).
*
- * Copyright (C) 2002-2024 by
+ * Copyright (C) 2002-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/pfr/pfrcmap.h b/src/pfr/pfrcmap.h
index ab79135..8110f17 100644
--- a/src/pfr/pfrcmap.h
+++ b/src/pfr/pfrcmap.h
@@ -4,7 +4,7 @@
*
* FreeType PFR cmap handling (specification).
*
- * Copyright (C) 2002-2024 by
+ * Copyright (C) 2002-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/pfr/pfrdrivr.c b/src/pfr/pfrdrivr.c
index ffd8222..0048f52 100644
--- a/src/pfr/pfrdrivr.c
+++ b/src/pfr/pfrdrivr.c
@@ -4,7 +4,7 @@
*
* FreeType PFR driver interface (body).
*
- * Copyright (C) 2002-2024 by
+ * Copyright (C) 2002-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/pfr/pfrdrivr.h b/src/pfr/pfrdrivr.h
index 58954a9..da14468 100644
--- a/src/pfr/pfrdrivr.h
+++ b/src/pfr/pfrdrivr.h
@@ -4,7 +4,7 @@
*
* High-level Type PFR driver interface (specification).
*
- * Copyright (C) 2002-2024 by
+ * Copyright (C) 2002-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/pfr/pfrerror.h b/src/pfr/pfrerror.h
index af0ddaf..5dfb254 100644
--- a/src/pfr/pfrerror.h
+++ b/src/pfr/pfrerror.h
@@ -4,7 +4,7 @@
*
* PFR error codes (specification only).
*
- * Copyright (C) 2002-2024 by
+ * Copyright (C) 2002-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/pfr/pfrgload.c b/src/pfr/pfrgload.c
index e850075..48cf27e 100644
--- a/src/pfr/pfrgload.c
+++ b/src/pfr/pfrgload.c
@@ -4,7 +4,7 @@
*
* FreeType PFR glyph loader (body).
*
- * Copyright (C) 2002-2024 by
+ * Copyright (C) 2002-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -108,7 +108,7 @@
/* don't add empty contours */
if ( last >= first )
- outline->contours[outline->n_contours++] = (FT_UShort)last;
+ outline->contours[outline->n_contours++] = (short)last;
glyph->path_begun = 0;
}
@@ -178,8 +178,8 @@
error = FT_GLYPHLOADER_CHECK_POINTS( loader, 3, 0 );
if ( !error )
{
- FT_Vector* vec = outline->points + outline->n_points;
- FT_Byte* tag = outline->tags + outline->n_points;
+ FT_Vector* vec = outline->points + outline->n_points;
+ FT_Byte* tag = (FT_Byte*)outline->tags + outline->n_points;
vec[0] = *control1;
@@ -189,7 +189,7 @@
tag[1] = FT_CURVE_TAG_CUBIC;
tag[2] = FT_CURVE_TAG_ON;
- outline->n_points += 3;
+ outline->n_points = (FT_Short)( outline->n_points + 3 );
}
Exit:
diff --git a/src/pfr/pfrgload.h b/src/pfr/pfrgload.h
index d86549f..92a59bc 100644
--- a/src/pfr/pfrgload.h
+++ b/src/pfr/pfrgload.h
@@ -4,7 +4,7 @@
*
* FreeType PFR glyph loader (specification).
*
- * Copyright (C) 2002-2024 by
+ * Copyright (C) 2002-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/pfr/pfrload.c b/src/pfr/pfrload.c
index 358af5c..856a594 100644
--- a/src/pfr/pfrload.c
+++ b/src/pfr/pfrload.c
@@ -4,7 +4,7 @@
*
* FreeType PFR loader (body).
*
- * Copyright (C) 2002-2024 by
+ * Copyright (C) 2002-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/pfr/pfrload.h b/src/pfr/pfrload.h
index 7390296..d7b20a4 100644
--- a/src/pfr/pfrload.h
+++ b/src/pfr/pfrload.h
@@ -4,7 +4,7 @@
*
* FreeType PFR loader (specification).
*
- * Copyright (C) 2002-2024 by
+ * Copyright (C) 2002-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/pfr/pfrobjs.c b/src/pfr/pfrobjs.c
index 084d2ef..8ef17c6 100644
--- a/src/pfr/pfrobjs.c
+++ b/src/pfr/pfrobjs.c
@@ -4,7 +4,7 @@
*
* FreeType PFR object methods (body).
*
- * Copyright (C) 2002-2024 by
+ * Copyright (C) 2002-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/pfr/pfrobjs.h b/src/pfr/pfrobjs.h
index 1b548a1..fcf8c38 100644
--- a/src/pfr/pfrobjs.h
+++ b/src/pfr/pfrobjs.h
@@ -4,7 +4,7 @@
*
* FreeType PFR object methods (specification).
*
- * Copyright (C) 2002-2024 by
+ * Copyright (C) 2002-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/pfr/pfrsbit.c b/src/pfr/pfrsbit.c
index 96cc7fe..46a988e 100644
--- a/src/pfr/pfrsbit.c
+++ b/src/pfr/pfrsbit.c
@@ -4,7 +4,7 @@
*
* FreeType PFR bitmap loader (body).
*
- * Copyright (C) 2002-2024 by
+ * Copyright (C) 2002-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/pfr/pfrsbit.h b/src/pfr/pfrsbit.h
index 105a299..3e1dba9 100644
--- a/src/pfr/pfrsbit.h
+++ b/src/pfr/pfrsbit.h
@@ -4,7 +4,7 @@
*
* FreeType PFR bitmap loader (specification).
*
- * Copyright (C) 2002-2024 by
+ * Copyright (C) 2002-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/pfr/pfrtypes.h b/src/pfr/pfrtypes.h
index 435a77c..2f8909f 100644
--- a/src/pfr/pfrtypes.h
+++ b/src/pfr/pfrtypes.h
@@ -4,7 +4,7 @@
*
* FreeType PFR data structures (specification only).
*
- * Copyright (C) 2002-2024 by
+ * Copyright (C) 2002-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/pfr/rules.mk b/src/pfr/rules.mk
index 3e0c57b..50695fd 100644
--- a/src/pfr/rules.mk
+++ b/src/pfr/rules.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 2002-2024 by
+# Copyright (C) 2002-2023 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/src/psaux/afmparse.c b/src/psaux/afmparse.c
index e2f6a8e..db08941 100644
--- a/src/psaux/afmparse.c
+++ b/src/psaux/afmparse.c
@@ -4,7 +4,7 @@
*
* AFM parser (body).
*
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/psaux/afmparse.h b/src/psaux/afmparse.h
index b776637..2d3b6e6 100644
--- a/src/psaux/afmparse.h
+++ b/src/psaux/afmparse.h
@@ -4,7 +4,7 @@
*
* AFM parser (specification).
*
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/psaux/cffdecode.c b/src/psaux/cffdecode.c
index 9556e11..562d17d 100644
--- a/src/psaux/cffdecode.c
+++ b/src/psaux/cffdecode.c
@@ -4,7 +4,7 @@
*
* PostScript CFF (Type 2) decoding routines (body).
*
- * Copyright (C) 2017-2024 by
+ * Copyright (C) 2017-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -17,7 +17,6 @@
#include <freetype/freetype.h>
-#include <freetype/internal/ftcalc.h>
#include <freetype/internal/ftdebug.h>
#include <freetype/internal/ftserv.h>
#include <freetype/internal/services/svcfftl.h>
@@ -1753,9 +1752,22 @@
/* without upper limit the loop below might not finish */
if ( args[0] > 0x7FFFFFFFL )
- args[0] = 0xB504F4L; /* sqrt( 32768.0044 ) */
+ args[0] = 46341;
else if ( args[0] > 0 )
- args[0] = (FT_Fixed)FT_SqrtFixed( args[0] );
+ {
+ FT_Fixed root = args[0];
+ FT_Fixed new_root;
+
+
+ for (;;)
+ {
+ new_root = ( root + FT_DivFix( args[0], root ) + 1 ) >> 1;
+ if ( new_root == root )
+ break;
+ root = new_root;
+ }
+ args[0] = new_root;
+ }
else
args[0] = 0;
args++;
diff --git a/src/psaux/cffdecode.h b/src/psaux/cffdecode.h
index 038f723..e8bb400 100644
--- a/src/psaux/cffdecode.h
+++ b/src/psaux/cffdecode.h
@@ -4,7 +4,7 @@
*
* PostScript CFF (Type 2) decoding routines (specification).
*
- * Copyright (C) 2017-2024 by
+ * Copyright (C) 2017-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/psaux/module.mk b/src/psaux/module.mk
index fd6b3e1..c6fb4eb 100644
--- a/src/psaux/module.mk
+++ b/src/psaux/module.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 1996-2024 by
+# Copyright (C) 1996-2023 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/src/psaux/psaux.c b/src/psaux/psaux.c
index ffe89cd..5879ed1 100644
--- a/src/psaux/psaux.c
+++ b/src/psaux/psaux.c
@@ -4,7 +4,7 @@
*
* FreeType auxiliary PostScript driver component (body only).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/psaux/psauxerr.h b/src/psaux/psauxerr.h
index 18428c4..895ffa4 100644
--- a/src/psaux/psauxerr.h
+++ b/src/psaux/psauxerr.h
@@ -4,7 +4,7 @@
*
* PS auxiliary module error codes (specification only).
*
- * Copyright (C) 2001-2024 by
+ * Copyright (C) 2001-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/psaux/psauxmod.c b/src/psaux/psauxmod.c
index 6826f9d..45e35aa 100644
--- a/src/psaux/psauxmod.c
+++ b/src/psaux/psauxmod.c
@@ -4,7 +4,7 @@
*
* FreeType auxiliary PostScript module implementation (body).
*
- * Copyright (C) 2000-2024 by
+ * Copyright (C) 2000-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/psaux/psauxmod.h b/src/psaux/psauxmod.h
index 82d7e34..94dbf48 100644
--- a/src/psaux/psauxmod.h
+++ b/src/psaux/psauxmod.h
@@ -4,7 +4,7 @@
*
* FreeType auxiliary PostScript module implementation (specification).
*
- * Copyright (C) 2000-2024 by
+ * Copyright (C) 2000-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/psaux/psblues.c b/src/psaux/psblues.c
index 213b943..f9c864f 100644
--- a/src/psaux/psblues.c
+++ b/src/psaux/psblues.c
@@ -54,6 +54,14 @@
#define FT_COMPONENT cf2blues
+ /*
+ * For blue values, the FreeType parser produces an array of integers,
+ * while the Adobe CFF engine produces an array of fixed.
+ * Define a macro to convert FreeType to fixed.
+ */
+#define cf2_blueToFixed( x ) cf2_intToFixed( x )
+
+
FT_LOCAL_DEF( void )
cf2_blues_init( CF2_Blues blues,
CF2_Font font )
@@ -70,10 +78,10 @@
size_t numFamilyBlues;
size_t numFamilyOtherBlues;
- FT_Fixed* blueValues;
- FT_Fixed* otherBlues;
- FT_Fixed* familyBlues;
- FT_Fixed* familyOtherBlues;
+ FT_Pos* blueValues;
+ FT_Pos* otherBlues;
+ FT_Pos* familyBlues;
+ FT_Pos* familyOtherBlues;
size_t i;
CF2_Fixed emBoxBottom, emBoxTop;
@@ -130,13 +138,13 @@
emBoxTop = CF2_ICF_Top;
}
- if ( cf2_getLanguageGroup( decoder ) == 1 &&
- ( numBlueValues == 0 ||
- ( numBlueValues == 4 &&
- blueValues[0] < emBoxBottom &&
- blueValues[1] < emBoxBottom &&
- blueValues[2] > emBoxTop &&
- blueValues[3] > emBoxTop ) ) )
+ if ( cf2_getLanguageGroup( decoder ) == 1 &&
+ ( numBlueValues == 0 ||
+ ( numBlueValues == 4 &&
+ cf2_blueToFixed( blueValues[0] ) < emBoxBottom &&
+ cf2_blueToFixed( blueValues[1] ) < emBoxBottom &&
+ cf2_blueToFixed( blueValues[2] ) > emBoxTop &&
+ cf2_blueToFixed( blueValues[3] ) > emBoxTop ) ) )
{
/*
* Construct hint edges suitable for synthetic ghost hints at top
@@ -181,8 +189,10 @@
/* bottom zones */
for ( i = 0; i < numBlueValues; i += 2 )
{
- blues->zone[blues->count].csBottomEdge = blueValues[i];
- blues->zone[blues->count].csTopEdge = blueValues[i + 1];
+ blues->zone[blues->count].csBottomEdge =
+ cf2_blueToFixed( blueValues[i] );
+ blues->zone[blues->count].csTopEdge =
+ cf2_blueToFixed( blueValues[i + 1] );
zoneHeight = SUB_INT32( blues->zone[blues->count].csTopEdge,
blues->zone[blues->count].csBottomEdge );
@@ -228,8 +238,10 @@
for ( i = 0; i < numOtherBlues; i += 2 )
{
- blues->zone[blues->count].csBottomEdge = otherBlues[i];
- blues->zone[blues->count].csTopEdge = otherBlues[i + 1];
+ blues->zone[blues->count].csBottomEdge =
+ cf2_blueToFixed( otherBlues[i] );
+ blues->zone[blues->count].csTopEdge =
+ cf2_blueToFixed( otherBlues[i + 1] );
zoneHeight = SUB_INT32( blues->zone[blues->count].csTopEdge,
blues->zone[blues->count].csBottomEdge );
@@ -287,7 +299,7 @@
for ( j = 0; j < numFamilyOtherBlues; j += 2 )
{
/* top edge */
- flatFamilyEdge = familyOtherBlues[j + 1];
+ flatFamilyEdge = cf2_blueToFixed( familyOtherBlues[j + 1] );
diff = cf2_fixedAbs( SUB_INT32( flatEdge, flatFamilyEdge ) );
@@ -305,7 +317,7 @@
if ( numFamilyBlues >= 2 )
{
/* top edge */
- flatFamilyEdge = familyBlues[1];
+ flatFamilyEdge = cf2_blueToFixed( familyBlues[1] );
diff = cf2_fixedAbs( SUB_INT32( flatEdge, flatFamilyEdge ) );
@@ -325,7 +337,7 @@
for ( j = 2; j < numFamilyBlues; j += 2 )
{
/* bottom edge */
- flatFamilyEdge = familyBlues[j];
+ flatFamilyEdge = cf2_blueToFixed( familyBlues[j] );
/* adjust edges of top zone upward by twice darkening amount */
flatFamilyEdge += 2 * font->darkenY; /* bottom edge */
diff --git a/src/psaux/psconv.c b/src/psaux/psconv.c
index 56c0ecd..b9c7138 100644
--- a/src/psaux/psconv.c
+++ b/src/psaux/psconv.c
@@ -4,7 +4,7 @@
*
* Some convenience conversions (body).
*
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/psaux/psconv.h b/src/psaux/psconv.h
index 91fcd15..b7c3ee0 100644
--- a/src/psaux/psconv.h
+++ b/src/psaux/psconv.h
@@ -4,7 +4,7 @@
*
* Some convenience conversions (specification).
*
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/psaux/psft.c b/src/psaux/psft.c
index fd0abe1..618864e 100644
--- a/src/psaux/psft.c
+++ b/src/psaux/psft.c
@@ -566,12 +566,12 @@
FT_LOCAL_DEF( void )
cf2_getBlueValues( PS_Decoder* decoder,
size_t* count,
- FT_Fixed* *data )
+ FT_Pos* *data )
{
FT_ASSERT( decoder && decoder->current_subfont );
*count = decoder->current_subfont->private_dict.num_blue_values;
- *data = (FT_Fixed*)
+ *data = (FT_Pos*)
&decoder->current_subfont->private_dict.blue_values;
}
@@ -579,12 +579,12 @@
FT_LOCAL_DEF( void )
cf2_getOtherBlues( PS_Decoder* decoder,
size_t* count,
- FT_Fixed* *data )
+ FT_Pos* *data )
{
FT_ASSERT( decoder && decoder->current_subfont );
*count = decoder->current_subfont->private_dict.num_other_blues;
- *data = (FT_Fixed*)
+ *data = (FT_Pos*)
&decoder->current_subfont->private_dict.other_blues;
}
@@ -592,12 +592,12 @@
FT_LOCAL_DEF( void )
cf2_getFamilyBlues( PS_Decoder* decoder,
size_t* count,
- FT_Fixed* *data )
+ FT_Pos* *data )
{
FT_ASSERT( decoder && decoder->current_subfont );
*count = decoder->current_subfont->private_dict.num_family_blues;
- *data = (FT_Fixed*)
+ *data = (FT_Pos*)
&decoder->current_subfont->private_dict.family_blues;
}
@@ -605,12 +605,12 @@
FT_LOCAL_DEF( void )
cf2_getFamilyOtherBlues( PS_Decoder* decoder,
size_t* count,
- FT_Fixed* *data )
+ FT_Pos* *data )
{
FT_ASSERT( decoder && decoder->current_subfont );
*count = decoder->current_subfont->private_dict.num_family_other_blues;
- *data = (FT_Fixed*)
+ *data = (FT_Pos*)
&decoder->current_subfont->private_dict.family_other_blues;
}
diff --git a/src/psaux/psft.h b/src/psaux/psft.h
index d9082f3..3da454e 100644
--- a/src/psaux/psft.h
+++ b/src/psaux/psft.h
@@ -92,19 +92,19 @@
FT_LOCAL( void )
cf2_getBlueValues( PS_Decoder* decoder,
size_t* count,
- FT_Fixed* *data );
+ FT_Pos* *data );
FT_LOCAL( void )
cf2_getOtherBlues( PS_Decoder* decoder,
size_t* count,
- FT_Fixed* *data );
+ FT_Pos* *data );
FT_LOCAL( void )
cf2_getFamilyBlues( PS_Decoder* decoder,
size_t* count,
- FT_Fixed* *data );
+ FT_Pos* *data );
FT_LOCAL( void )
cf2_getFamilyOtherBlues( PS_Decoder* decoder,
size_t* count,
- FT_Fixed* *data );
+ FT_Pos* *data );
FT_LOCAL( CF2_Int )
cf2_getLanguageGroup( PS_Decoder* decoder );
diff --git a/src/psaux/psintrp.c b/src/psaux/psintrp.c
index 7572e22..6c640ee 100644
--- a/src/psaux/psintrp.c
+++ b/src/psaux/psintrp.c
@@ -37,7 +37,6 @@
#include "psft.h"
-#include <freetype/internal/ftcalc.h>
#include <freetype/internal/ftdebug.h>
#include <freetype/internal/services/svcfftl.h>
@@ -429,8 +428,6 @@
base = cf2_stack_count( opStack ) - numOperands;
delta = base + numBlends;
- FT_TRACE6(( " (" ));
-
for ( i = 0; i < numBlends; i++ )
{
const CF2_Fixed* weight = &blend->BV[1];
@@ -445,14 +442,10 @@
cf2_stack_getReal( opStack,
delta++ ) ) );
- FT_TRACE6(( "%f ", (double)sum / 65536 ));
-
/* store blended result */
cf2_stack_setReal( opStack, i + base, sum );
}
- FT_TRACE6(( "blended)\n" ));
-
/* leave only `numBlends' results on stack */
cf2_stack_pop( opStack, numOperands - numBlends );
}
@@ -741,7 +734,7 @@
FT_UInt numBlends;
- FT_TRACE4(( " blend" ));
+ FT_TRACE4(( " blend\n" ));
if ( !font->isCFF2 )
break; /* clear stack & ignore */
@@ -2282,7 +2275,23 @@
arg = cf2_stack_popFixed( opStack );
if ( arg > 0 )
- arg = (CF2_F16Dot16)FT_SqrtFixed( (FT_UInt32)arg );
+ {
+ /* use a start value that doesn't make */
+ /* the algorithm's addition overflow */
+ FT_Fixed root = arg < 10 ? arg : arg >> 1;
+ FT_Fixed new_root;
+
+
+ /* Babylonian method */
+ for (;;)
+ {
+ new_root = ( root + FT_DivFix( arg, root ) + 1 ) >> 1;
+ if ( new_root == root )
+ break;
+ root = new_root;
+ }
+ arg = new_root;
+ }
else
arg = 0;
diff --git a/src/psaux/psobjs.c b/src/psaux/psobjs.c
index eca465f..8da755d 100644
--- a/src/psaux/psobjs.c
+++ b/src/psaux/psobjs.c
@@ -4,7 +4,7 @@
*
* Auxiliary functions for PostScript fonts (body).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -23,7 +23,6 @@
#include "psobjs.h"
#include "psconv.h"
-#include "psft.h"
#include "psauxerr.h"
#include "psauxmod.h"
@@ -201,9 +200,7 @@
/* add the object to the base block and adjust offset */
table->elements[idx] = FT_OFFSET( table->block, table->cursor );
table->lengths [idx] = length;
- /* length == 0 also implies a NULL destination, so skip the copy call */
- if ( length > 0 )
- FT_MEM_COPY( table->block + table->cursor, object, length );
+ FT_MEM_COPY( table->block + table->cursor, object, length );
table->cursor += length;
return FT_Err_Ok;
@@ -1627,7 +1624,7 @@
if ( builder->load_points )
{
FT_Vector* point = outline->points + outline->n_points;
- FT_Byte* control = outline->tags + outline->n_points;
+ FT_Byte* control = (FT_Byte*)outline->tags + outline->n_points;
point->x = FIXED_TO_INT( x );
@@ -1680,7 +1677,8 @@
if ( !error )
{
if ( outline->n_contours > 0 )
- outline->contours[outline->n_contours - 1] = outline->n_points - 1;
+ outline->contours[outline->n_contours - 1] =
+ (short)( outline->n_points - 1 );
outline->n_contours++;
}
@@ -1742,7 +1740,7 @@
{
FT_Vector* p1 = outline->points + first;
FT_Vector* p2 = outline->points + outline->n_points - 1;
- FT_Byte* control = outline->tags + outline->n_points - 1;
+ FT_Byte* control = (FT_Byte*)outline->tags + outline->n_points - 1;
/* `delete' last point only if it coincides with the first */
@@ -1762,7 +1760,8 @@
outline->n_points--;
}
else
- outline->contours[outline->n_contours - 1] = outline->n_points - 1;
+ outline->contours[outline->n_contours - 1] =
+ (short)( outline->n_points - 1 );
}
}
@@ -1900,7 +1899,7 @@
if ( builder->load_points )
{
FT_Vector* point = outline->points + outline->n_points;
- FT_Byte* control = outline->tags + outline->n_points;
+ FT_Byte* control = (FT_Byte*)outline->tags + outline->n_points;
#ifdef CFF_CONFIG_OPTION_OLD_ENGINE
PS_Driver driver = (PS_Driver)FT_FACE_DRIVER( builder->face );
@@ -1960,7 +1959,8 @@
if ( !error )
{
if ( outline->n_contours > 0 )
- outline->contours[outline->n_contours - 1] = outline->n_points - 1;
+ outline->contours[outline->n_contours - 1] =
+ (short)( outline->n_points - 1 );
outline->n_contours++;
}
@@ -2019,7 +2019,7 @@
{
FT_Vector* p1 = outline->points + first;
FT_Vector* p2 = outline->points + outline->n_points - 1;
- FT_Byte* control = outline->tags + outline->n_points - 1;
+ FT_Byte* control = (FT_Byte*)outline->tags + outline->n_points - 1;
/* `delete' last point only if it coincides with the first */
@@ -2039,7 +2039,8 @@
outline->n_points--;
}
else
- outline->contours[outline->n_contours - 1] = outline->n_points - 1;
+ outline->contours[outline->n_contours - 1] =
+ (short)( outline->n_points - 1 );
}
}
@@ -2187,7 +2188,7 @@
if ( builder->load_points )
{
FT_Vector* point = outline->points + outline->n_points;
- FT_Byte* control = outline->tags + outline->n_points;
+ FT_Byte* control = (FT_Byte*)outline->tags + outline->n_points;
#ifdef CFF_CONFIG_OPTION_OLD_ENGINE
PS_Driver driver = (PS_Driver)FT_FACE_DRIVER( builder->face );
@@ -2266,7 +2267,8 @@
if ( !error )
{
if ( outline->n_contours > 0 )
- outline->contours[outline->n_contours - 1] = outline->n_points - 1;
+ outline->contours[outline->n_contours - 1] =
+ (short)( outline->n_points - 1 );
outline->n_contours++;
}
@@ -2325,7 +2327,7 @@
{
FT_Vector* p1 = outline->points + first;
FT_Vector* p2 = outline->points + outline->n_points - 1;
- FT_Byte* control = outline->tags + outline->n_points - 1;
+ FT_Byte* control = (FT_Byte*)outline->tags + outline->n_points - 1;
/* `delete' last point only if it coincides with the first */
@@ -2345,7 +2347,8 @@
outline->n_points--;
}
else
- outline->contours[outline->n_contours - 1] = outline->n_points - 1;
+ outline->contours[outline->n_contours - 1] =
+ (short)( outline->n_points - 1 );
}
}
@@ -2460,20 +2463,19 @@
count = cpriv->num_blue_values = priv->num_blue_values;
for ( n = 0; n < count; n++ )
- cpriv->blue_values[n] = cf2_intToFixed( priv->blue_values[n] );
+ cpriv->blue_values[n] = (FT_Pos)priv->blue_values[n];
count = cpriv->num_other_blues = priv->num_other_blues;
for ( n = 0; n < count; n++ )
- cpriv->other_blues[n] = cf2_intToFixed( priv->other_blues[n] );
+ cpriv->other_blues[n] = (FT_Pos)priv->other_blues[n];
count = cpriv->num_family_blues = priv->num_family_blues;
for ( n = 0; n < count; n++ )
- cpriv->family_blues[n] = cf2_intToFixed( priv->family_blues[n] );
+ cpriv->family_blues[n] = (FT_Pos)priv->family_blues[n];
count = cpriv->num_family_other_blues = priv->num_family_other_blues;
for ( n = 0; n < count; n++ )
- cpriv->family_other_blues[n] =
- cf2_intToFixed( priv->family_other_blues[n] );
+ cpriv->family_other_blues[n] = (FT_Pos)priv->family_other_blues[n];
cpriv->blue_scale = priv->blue_scale;
cpriv->blue_shift = (FT_Pos)priv->blue_shift;
diff --git a/src/psaux/psobjs.h b/src/psaux/psobjs.h
index 345fc8a..d5bce54 100644
--- a/src/psaux/psobjs.h
+++ b/src/psaux/psobjs.h
@@ -4,7 +4,7 @@
*
* Auxiliary functions for PostScript fonts (specification).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/psaux/rules.mk b/src/psaux/rules.mk
index 9053525..d542ab8 100644
--- a/src/psaux/rules.mk
+++ b/src/psaux/rules.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 1996-2024 by
+# Copyright (C) 1996-2023 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/src/psaux/t1cmap.c b/src/psaux/t1cmap.c
index 5681c3b..c4bcf59 100644
--- a/src/psaux/t1cmap.c
+++ b/src/psaux/t1cmap.c
@@ -4,7 +4,7 @@
*
* Type 1 character map support (body).
*
- * Copyright (C) 2002-2024 by
+ * Copyright (C) 2002-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/psaux/t1cmap.h b/src/psaux/t1cmap.h
index 445e6a2..b370249 100644
--- a/src/psaux/t1cmap.h
+++ b/src/psaux/t1cmap.h
@@ -4,7 +4,7 @@
*
* Type 1 character map support (specification).
*
- * Copyright (C) 2002-2024 by
+ * Copyright (C) 2002-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/psaux/t1decode.c b/src/psaux/t1decode.c
index c74baa8..4b6b969 100644
--- a/src/psaux/t1decode.c
+++ b/src/psaux/t1decode.c
@@ -4,7 +4,7 @@
*
* PostScript Type 1 decoding routines (body).
*
- * Copyright (C) 2000-2024 by
+ * Copyright (C) 2000-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/psaux/t1decode.h b/src/psaux/t1decode.h
index 16203b8..0970def 100644
--- a/src/psaux/t1decode.h
+++ b/src/psaux/t1decode.h
@@ -4,7 +4,7 @@
*
* PostScript Type 1 decoding routines (specification).
*
- * Copyright (C) 2000-2024 by
+ * Copyright (C) 2000-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/pshinter/module.mk b/src/pshinter/module.mk
index 3032514..dbc137d 100644
--- a/src/pshinter/module.mk
+++ b/src/pshinter/module.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 1996-2024 by
+# Copyright (C) 1996-2023 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/src/pshinter/pshalgo.c b/src/pshinter/pshalgo.c
index 967767b..4f622e1 100644
--- a/src/pshinter/pshalgo.c
+++ b/src/pshinter/pshalgo.c
@@ -4,7 +4,7 @@
*
* PostScript hinting algorithm (body).
*
- * Copyright (C) 2001-2024 by
+ * Copyright (C) 2001-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used
@@ -1118,7 +1118,7 @@
FT_UInt n;
PSH_Point point = glyph->points;
FT_Vector* vec = glyph->outline->points;
- FT_Byte* tags = glyph->outline->tags;
+ char* tags = glyph->outline->tags;
for ( n = 0; n < glyph->num_points; n++ )
@@ -1171,8 +1171,8 @@
FT_QNEW_ARRAY( glyph->contours, outline->n_contours ) )
goto Exit;
- glyph->num_points = outline->n_points;
- glyph->num_contours = outline->n_contours;
+ glyph->num_points = (FT_UInt)outline->n_points;
+ glyph->num_contours = (FT_UInt)outline->n_contours;
{
FT_UInt first = 0, next, n;
@@ -1186,7 +1186,7 @@
PSH_Point point;
- next = outline->contours[n] + 1;
+ next = (FT_UInt)outline->contours[n] + 1;
count = next - first;
contour->start = points + first;
diff --git a/src/pshinter/pshalgo.h b/src/pshinter/pshalgo.h
index fb362f0..3f0ba28 100644
--- a/src/pshinter/pshalgo.h
+++ b/src/pshinter/pshalgo.h
@@ -4,7 +4,7 @@
*
* PostScript hinting algorithm (specification).
*
- * Copyright (C) 2001-2024 by
+ * Copyright (C) 2001-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/pshinter/pshglob.c b/src/pshinter/pshglob.c
index 435f458..d4c5eb3 100644
--- a/src/pshinter/pshglob.c
+++ b/src/pshinter/pshglob.c
@@ -5,7 +5,7 @@
* PostScript hinter global hinting management (body).
* Inspired by the new auto-hinter module.
*
- * Copyright (C) 2001-2024 by
+ * Copyright (C) 2001-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used
diff --git a/src/pshinter/pshglob.h b/src/pshinter/pshglob.h
index c5a5c91..579eb21 100644
--- a/src/pshinter/pshglob.h
+++ b/src/pshinter/pshglob.h
@@ -4,7 +4,7 @@
*
* PostScript hinter global hinting management.
*
- * Copyright (C) 2001-2024 by
+ * Copyright (C) 2001-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/pshinter/pshinter.c b/src/pshinter/pshinter.c
index ae2b53f..54ed410 100644
--- a/src/pshinter/pshinter.c
+++ b/src/pshinter/pshinter.c
@@ -4,7 +4,7 @@
*
* FreeType PostScript Hinting module
*
- * Copyright (C) 2001-2024 by
+ * Copyright (C) 2001-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/pshinter/pshmod.c b/src/pshinter/pshmod.c
index 9965d5b..974a99e 100644
--- a/src/pshinter/pshmod.c
+++ b/src/pshinter/pshmod.c
@@ -4,7 +4,7 @@
*
* FreeType PostScript hinter module implementation (body).
*
- * Copyright (C) 2001-2024 by
+ * Copyright (C) 2001-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/pshinter/pshmod.h b/src/pshinter/pshmod.h
index 62ac0a6..4bd781a 100644
--- a/src/pshinter/pshmod.h
+++ b/src/pshinter/pshmod.h
@@ -4,7 +4,7 @@
*
* PostScript hinter module interface (specification).
*
- * Copyright (C) 2001-2024 by
+ * Copyright (C) 2001-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/pshinter/pshnterr.h b/src/pshinter/pshnterr.h
index e964134..9762495 100644
--- a/src/pshinter/pshnterr.h
+++ b/src/pshinter/pshnterr.h
@@ -4,7 +4,7 @@
*
* PS Hinter error codes (specification only).
*
- * Copyright (C) 2003-2024 by
+ * Copyright (C) 2003-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/pshinter/pshrec.c b/src/pshinter/pshrec.c
index 0b2b549..680e6d0 100644
--- a/src/pshinter/pshrec.c
+++ b/src/pshinter/pshrec.c
@@ -4,7 +4,7 @@
*
* FreeType PostScript hints recorder (body).
*
- * Copyright (C) 2001-2024 by
+ * Copyright (C) 2001-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -806,7 +806,7 @@
ps_hints_stem( PS_Hints hints,
FT_UInt dimension,
FT_Int count,
- FT_Pos* stems )
+ FT_Long* stems )
{
PS_Dimension dim;
diff --git a/src/pshinter/pshrec.h b/src/pshinter/pshrec.h
index 7e375af..0b2484a 100644
--- a/src/pshinter/pshrec.h
+++ b/src/pshinter/pshrec.h
@@ -4,7 +4,7 @@
*
* Postscript (Type1/Type2) hints recorder (specification).
*
- * Copyright (C) 2001-2024 by
+ * Copyright (C) 2001-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/pshinter/rules.mk b/src/pshinter/rules.mk
index 417bc59..50058e8 100644
--- a/src/pshinter/rules.mk
+++ b/src/pshinter/rules.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 2001-2024 by
+# Copyright (C) 2001-2023 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/src/psnames/module.mk b/src/psnames/module.mk
index f049474..1ee0ef8 100644
--- a/src/psnames/module.mk
+++ b/src/psnames/module.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 1996-2024 by
+# Copyright (C) 1996-2023 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/src/psnames/psmodule.c b/src/psnames/psmodule.c
index 35d054d..8203a04 100644
--- a/src/psnames/psmodule.c
+++ b/src/psnames/psmodule.c
@@ -4,7 +4,7 @@
*
* psnames module implementation (body).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/psnames/psmodule.h b/src/psnames/psmodule.h
index 7704583..0904700 100644
--- a/src/psnames/psmodule.h
+++ b/src/psnames/psmodule.h
@@ -4,7 +4,7 @@
*
* High-level psnames module interface (specification).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/psnames/psnamerr.h b/src/psnames/psnamerr.h
index e123eb6..0073f82 100644
--- a/src/psnames/psnamerr.h
+++ b/src/psnames/psnamerr.h
@@ -4,7 +4,7 @@
*
* PS names module error codes (specification only).
*
- * Copyright (C) 2001-2024 by
+ * Copyright (C) 2001-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/psnames/psnames.c b/src/psnames/psnames.c
index 2933af1..93ed933 100644
--- a/src/psnames/psnames.c
+++ b/src/psnames/psnames.c
@@ -4,7 +4,7 @@
*
* FreeType psnames module component (body only).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/psnames/pstables.h b/src/psnames/pstables.h
index 2a941b0..7f92cce 100644
--- a/src/psnames/pstables.h
+++ b/src/psnames/pstables.h
@@ -4,7 +4,7 @@
*
* PostScript glyph names.
*
- * Copyright (C) 2005-2024 by
+ * Copyright (C) 2005-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/psnames/rules.mk b/src/psnames/rules.mk
index 19c5d32..8d7c580 100644
--- a/src/psnames/rules.mk
+++ b/src/psnames/rules.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 1996-2024 by
+# Copyright (C) 1996-2023 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/src/raster/ftmisc.h b/src/raster/ftmisc.h
index 943f2aa..33dbfd6 100644
--- a/src/raster/ftmisc.h
+++ b/src/raster/ftmisc.h
@@ -5,7 +5,7 @@
* Miscellaneous macros for stand-alone rasterizer (specification
* only).
*
- * Copyright (C) 2005-2024 by
+ * Copyright (C) 2005-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used
@@ -93,6 +93,27 @@
static FT_Long
+ FT_MulDiv( FT_Long a,
+ FT_Long b,
+ FT_Long c )
+ {
+ FT_Int s;
+ FT_Long d;
+
+
+ s = 1;
+ if ( a < 0 ) { a = -a; s = -1; }
+ if ( b < 0 ) { b = -b; s = -s; }
+ if ( c < 0 ) { c = -c; s = -s; }
+
+ d = (FT_Long)( c > 0 ? ( (FT_Int64)a * b + ( c >> 1 ) ) / c
+ : 0x7FFFFFFFL );
+
+ return ( s > 0 ) ? d : -d;
+ }
+
+
+ static FT_Long
FT_MulDiv_No_Round( FT_Long a,
FT_Long b,
FT_Long c )
diff --git a/src/raster/ftraster.c b/src/raster/ftraster.c
index e4b7b93..192ca07 100644
--- a/src/raster/ftraster.c
+++ b/src/raster/ftraster.c
@@ -4,7 +4,7 @@
*
* The FreeType glyph rasterizer (body).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -63,7 +63,8 @@
#else /* !STANDALONE_ */
#include "ftraster.h"
-#include <freetype/internal/ftcalc.h> /* for FT_MulDiv_No_Round */
+#include <freetype/internal/ftcalc.h> /* for FT_MulDiv and FT_MulDiv_No_Round */
+#include <freetype/ftoutln.h> /* for FT_Outline_Get_CBox */
#endif /* !STANDALONE_ */
@@ -114,12 +115,12 @@
* a change of direction is detected in the outline, a new profile is
* generated until the end of the outline.
*
- * Note that, for all generated profiles, the function End_Profile()
- * is used to record all their bottom-most scanlines as well as the
- * scanline above their upmost boundary. These positions are called
- * `y-turns' because they (sort of) correspond to local extrema.
- * They are stored in a sorted list built from the top of the render
- * pool as a downwards stack:
+ * Note that when all profiles have been generated, the function
+ * Finalize_Profile_Table() is used to record, for each profile, its
+ * bottom-most scanline as well as the scanline above its upmost
+ * boundary. These positions are called `y-turns' because they (sort
+ * of) correspond to local extrema. They are stored in a sorted list
+ * built from the top of the render pool as a downwards stack:
*
* _ _ _______________________________________
* | |
@@ -135,7 +136,7 @@
* optimize performance (see technical note on the sweep below).
*
* Of course, the raster detects whether the two stacks collide and
- * handles the situation by bisecting the job and restarting.
+ * handles the situation properly.
*
*/
@@ -251,6 +252,7 @@
/* On the other hand, SMulDiv means `Slow MulDiv', and is used typically */
/* for clipping computations. It simply uses the FT_MulDiv() function */
/* defined in `ftcalc.h'. */
+#define SMulDiv FT_MulDiv
#define SMulDiv_No_Round FT_MulDiv_No_Round
/* The rasterizer is a very general purpose component; please leave */
@@ -303,6 +305,16 @@
typedef unsigned char Byte, *PByte;
typedef char Bool;
+
+ typedef union Alignment_
+ {
+ Long l;
+ void* p;
+ void (*f)(void);
+
+ } Alignment, *PAlignment;
+
+
typedef struct TPoint_
{
Long x;
@@ -315,7 +327,6 @@
#define Flow_Up 0x08U
#define Overshoot_Top 0x10U
#define Overshoot_Bottom 0x20U
-#define Dropout 0x40U
/* States of each line, arc, and profile */
@@ -334,28 +345,31 @@
struct TProfile_
{
+ FT_F26Dot6 X; /* current coordinate during sweep */
PProfile link; /* link to next profile (various purposes) */
- PProfile next; /* next profile in same contour, used */
- /* during drop-out control */
- Int offset; /* bottom or currently scanned array index */
- Int height; /* profile's height in scanlines */
- Int start; /* profile's starting scanline, also use */
- /* as activation counter */
+ PLong offset; /* start of profile's data in render pool */
UShort flags; /* Bit 0-2: drop-out mode */
/* Bit 3: profile orientation (up/down) */
/* Bit 4: is top profile? */
/* Bit 5: is bottom profile? */
- /* Bit 6: dropout detected */
+ Long height; /* profile's height in scanlines */
+ Long start; /* profile's starting scanline */
- FT_F26Dot6 X; /* current coordinate during sweep */
- Long x[1]; /* actually variable array of scanline */
- /* intersections with `height` elements */
+ Int countL; /* number of lines to step before this */
+ /* profile becomes drawable */
+
+ PProfile next; /* next profile in same contour, used */
+ /* during drop-out control */
};
typedef PProfile TProfileList;
typedef PProfile* PProfileList;
+#define AlignProfileSize \
+ ( ( sizeof ( TProfile ) + sizeof ( Alignment ) - 1 ) / sizeof ( Long ) )
+
+
#undef RAS_ARG
#undef RAS_ARGS
#undef RAS_VAR
@@ -393,13 +407,15 @@
/* prototypes used for sweep function dispatch */
typedef void
- Function_Sweep_Init( RAS_ARGS Int min,
- Int max );
+ Function_Sweep_Init( RAS_ARGS Short min,
+ Short max );
typedef void
- Function_Sweep_Span( RAS_ARGS Int y,
+ Function_Sweep_Span( RAS_ARGS Short y,
FT_F26Dot6 x1,
- FT_F26Dot6 x2 );
+ FT_F26Dot6 x2,
+ PProfile left,
+ PProfile right );
typedef void
Function_Sweep_Step( RAS_ARG );
@@ -425,7 +441,8 @@
(Bool)( x - FLOOR( x ) >= ras.precision_half )
/* Smart dropout rounding to find which pixel is closer to span ends. */
- /* To mimic Windows, symmetric cases do not depend on the precision. */
+ /* To mimick Windows, symmetric cases break down indepenently of the */
+ /* precision. */
#define SMART( p, q ) FLOOR( ( (p) + (q) + ras.precision * 63 / 64 ) >> 1 )
#if FT_RENDER_POOL_SIZE > 2048
@@ -445,6 +462,7 @@
Int precision_half;
Int precision_scale;
Int precision_step;
+ Int precision_jitter;
PLong buff; /* The profiles buffer */
PLong sizeBuff; /* Render pool size */
@@ -453,14 +471,24 @@
FT_Error error;
+ Int numTurns; /* number of Y-turns in outline */
+
Byte dropOutControl; /* current drop_out control method */
+ UShort bWidth; /* target bitmap width */
+ PByte bOrigin; /* target bitmap bottom-left origin */
+ PByte bLine; /* target bitmap current line */
+
Long lastX, lastY;
Long minY, maxY;
UShort num_Profs; /* current number of profiles */
- Int numTurns; /* number of Y-turns in outline */
+ Bool fresh; /* signals a fresh new profile which */
+ /* `start' field must be completed */
+ Bool joint; /* signals that the last arc ended */
+ /* exactly on a scanline. Allows */
+ /* removal of doublets */
PProfile cProfile; /* current profile */
PProfile fProfile; /* head of linked list of profiles */
PProfile gProfile; /* contour's first profile in case */
@@ -468,14 +496,9 @@
TStates state; /* rendering state */
+ FT_Bitmap target; /* description of target bit/pixmap */
FT_Outline outline;
- Int bTop; /* target bitmap max line index */
- Int bRight; /* target bitmap rightmost index */
- Int bPitch; /* target bitmap pitch */
- PByte bOrigin; /* target bitmap bottom-left origin */
- PByte bLine; /* target bitmap current line */
-
/* dispatch variables */
Function_Sweep_Init* Proc_Sweep_Init;
@@ -540,19 +563,31 @@
*
* 256 / (1 << 12) = 0.0625 pixels.
*
+ * `precision_jitter' is an epsilon threshold used in
+ * `Vertical_Sweep_Span' to deal with small imperfections in the Bezier
+ * decomposition (after all, we are working with approximations only);
+ * it avoids switching on additional pixels which would cause artifacts
+ * otherwise.
+ *
+ * The value of `precision_jitter' has been determined heuristically.
+ *
*/
if ( High )
{
ras.precision_bits = 12;
ras.precision_step = 256;
+ ras.precision_jitter = 30;
}
else
{
ras.precision_bits = 6;
ras.precision_step = 32;
+ ras.precision_jitter = 2;
}
+ FT_TRACE6(( "Set_High_Precision(%s)\n", High ? "true" : "false" ));
+
ras.precision = 1 << ras.precision_bits;
ras.precision_half = ras.precision >> 1;
ras.precision_scale = ras.precision >> Pixel_Bits;
@@ -562,6 +597,156 @@
/**************************************************************************
*
* @Function:
+ * New_Profile
+ *
+ * @Description:
+ * Create a new profile in the render pool.
+ *
+ * @Input:
+ * aState ::
+ * The state/orientation of the new profile.
+ *
+ * overshoot ::
+ * Whether the profile's unrounded start position
+ * differs by at least a half pixel.
+ *
+ * @Return:
+ * SUCCESS on success. FAILURE in case of overflow or of incoherent
+ * profile.
+ */
+ static Bool
+ New_Profile( RAS_ARGS TStates aState,
+ Bool overshoot )
+ {
+ if ( !ras.fProfile )
+ {
+ ras.cProfile = (PProfile)ras.top;
+ ras.fProfile = ras.cProfile;
+ ras.top += AlignProfileSize;
+ }
+
+ if ( ras.top >= ras.maxBuff )
+ {
+ ras.error = FT_THROW( Raster_Overflow );
+ return FAILURE;
+ }
+
+ ras.cProfile->start = 0;
+ ras.cProfile->height = 0;
+ ras.cProfile->offset = ras.top;
+ ras.cProfile->link = (PProfile)0;
+ ras.cProfile->next = (PProfile)0;
+ ras.cProfile->flags = ras.dropOutControl;
+
+ switch ( aState )
+ {
+ case Ascending_State:
+ ras.cProfile->flags |= Flow_Up;
+ if ( overshoot )
+ ras.cProfile->flags |= Overshoot_Bottom;
+
+ FT_TRACE6(( " new ascending profile = %p\n", (void *)ras.cProfile ));
+ break;
+
+ case Descending_State:
+ if ( overshoot )
+ ras.cProfile->flags |= Overshoot_Top;
+ FT_TRACE6(( " new descending profile = %p\n", (void *)ras.cProfile ));
+ break;
+
+ default:
+ FT_ERROR(( "New_Profile: invalid profile direction\n" ));
+ ras.error = FT_THROW( Invalid_Outline );
+ return FAILURE;
+ }
+
+ if ( !ras.gProfile )
+ ras.gProfile = ras.cProfile;
+
+ ras.state = aState;
+ ras.fresh = TRUE;
+ ras.joint = FALSE;
+
+ return SUCCESS;
+ }
+
+
+ /**************************************************************************
+ *
+ * @Function:
+ * End_Profile
+ *
+ * @Description:
+ * Finalize the current profile.
+ *
+ * @Input:
+ * overshoot ::
+ * Whether the profile's unrounded end position differs
+ * by at least a half pixel.
+ *
+ * @Return:
+ * SUCCESS on success. FAILURE in case of overflow or incoherency.
+ */
+ static Bool
+ End_Profile( RAS_ARGS Bool overshoot )
+ {
+ Long h;
+
+
+ h = (Long)( ras.top - ras.cProfile->offset );
+
+ if ( h < 0 )
+ {
+ FT_ERROR(( "End_Profile: negative height encountered\n" ));
+ ras.error = FT_THROW( Raster_Negative_Height );
+ return FAILURE;
+ }
+
+ if ( h > 0 )
+ {
+ PProfile oldProfile;
+
+
+ FT_TRACE6(( " ending profile %p, start = %ld, height = %ld\n",
+ (void *)ras.cProfile, ras.cProfile->start, h ));
+
+ ras.cProfile->height = h;
+ if ( overshoot )
+ {
+ if ( ras.cProfile->flags & Flow_Up )
+ ras.cProfile->flags |= Overshoot_Top;
+ else
+ ras.cProfile->flags |= Overshoot_Bottom;
+ }
+
+ oldProfile = ras.cProfile;
+ ras.cProfile = (PProfile)ras.top;
+
+ ras.top += AlignProfileSize;
+
+ ras.cProfile->height = 0;
+ ras.cProfile->offset = ras.top;
+
+ oldProfile->next = ras.cProfile;
+ ras.num_Profs++;
+ }
+
+ if ( ras.top >= ras.maxBuff )
+ {
+ FT_TRACE1(( "overflow in End_Profile\n" ));
+ ras.error = FT_THROW( Raster_Overflow );
+ return FAILURE;
+ }
+
+ ras.joint = FALSE;
+
+ return SUCCESS;
+ }
+
+
+ /**************************************************************************
+ *
+ * @Function:
* Insert_Y_Turn
*
* @Description:
@@ -575,31 +760,21 @@
* SUCCESS on success. FAILURE in case of overflow.
*/
static Bool
- Insert_Y_Turns( RAS_ARGS Int y,
- Int top )
+ Insert_Y_Turn( RAS_ARGS Int y )
{
- Int n = ras.numTurns;
- PLong y_turns = ras.maxBuff;
+ PLong y_turns;
+ Int n;
- /* update top value */
- if ( n == 0 || top > y_turns[n] )
- y_turns[n] = top;
+ n = ras.numTurns - 1;
+ y_turns = ras.sizeBuff - ras.numTurns;
/* look for first y value that is <= */
- while ( n-- && y < y_turns[n] )
- ;
+ while ( n >= 0 && y < y_turns[n] )
+ n--;
/* if it is <, simply insert it, ignore if == */
- if ( n < 0 || y > y_turns[n] )
- {
- ras.maxBuff--;
- if ( ras.maxBuff <= ras.top )
- {
- ras.error = FT_THROW( Raster_Overflow );
- return FAILURE;
- }
-
+ if ( n >= 0 && y > y_turns[n] )
do
{
Int y2 = (Int)y_turns[n];
@@ -607,162 +782,18 @@
y_turns[n] = y;
y = y2;
- } while ( n-- >= 0 );
+ } while ( --n >= 0 );
- ras.numTurns++;
- }
-
- return SUCCESS;
- }
-
-
- /**************************************************************************
- *
- * @Function:
- * New_Profile
- *
- * @Description:
- * Create a new profile in the render pool.
- *
- * @Input:
- * aState ::
- * The state/orientation of the new profile.
- *
- * @Return:
- * SUCCESS on success. FAILURE in case of overflow or of incoherent
- * profile.
- */
- static Bool
- New_Profile( RAS_ARGS TStates aState )
- {
- Long e;
-
-
- if ( !ras.cProfile || ras.cProfile->height )
+ if ( n < 0 )
{
- ras.cProfile = (PProfile)ras.top;
- ras.top = ras.cProfile->x;
-
- if ( ras.top >= ras.maxBuff )
+ ras.maxBuff--;
+ if ( ras.maxBuff <= ras.top )
{
- FT_TRACE1(( "overflow in New_Profile\n" ));
ras.error = FT_THROW( Raster_Overflow );
return FAILURE;
}
-
- ras.cProfile->height = 0;
- }
-
- ras.cProfile->flags = ras.dropOutControl;
-
- switch ( aState )
- {
- case Ascending_State:
- ras.cProfile->flags |= Flow_Up;
- if ( IS_BOTTOM_OVERSHOOT( ras.lastY ) )
- ras.cProfile->flags |= Overshoot_Bottom;
-
- e = CEILING( ras.lastY );
- break;
-
- case Descending_State:
- if ( IS_TOP_OVERSHOOT( ras.lastY ) )
- ras.cProfile->flags |= Overshoot_Top;
-
- e = FLOOR( ras.lastY );
- break;
-
- default:
- FT_ERROR(( "New_Profile: invalid profile direction\n" ));
- ras.error = FT_THROW( Invalid_Outline );
- return FAILURE;
- }
-
- if ( e > ras.maxY )
- e = ras.maxY;
- if ( e < ras.minY )
- e = ras.minY;
- ras.cProfile->start = (Int)TRUNC( e );
-
- FT_TRACE7(( " new %s profile = %p, start = %d\n",
- aState == Ascending_State ? "ascending" : "descending",
- (void *)ras.cProfile, ras.cProfile->start ));
-
- if ( ras.lastY == e )
- *ras.top++ = ras.lastX;
-
- ras.state = aState;
-
- return SUCCESS;
- }
-
-
- /**************************************************************************
- *
- * @Function:
- * End_Profile
- *
- * @Description:
- * Finalize the current profile and record y-turns.
- *
- * @Return:
- * SUCCESS on success. FAILURE in case of overflow or incoherency.
- */
- static Bool
- End_Profile( RAS_ARG )
- {
- PProfile p = ras.cProfile;
- Int h = (Int)( ras.top - p->x );
- Int bottom, top;
-
-
- if ( h < 0 )
- {
- FT_ERROR(( "End_Profile: negative height encountered\n" ));
- ras.error = FT_THROW( Raster_Negative_Height );
- return FAILURE;
- }
-
- if ( h > 0 )
- {
- FT_TRACE7(( " ending profile %p, start = %2d, height = %+3d\n",
- (void *)p, p->start, p->flags & Flow_Up ? h : -h ));
-
- p->height = h;
-
- if ( p->flags & Flow_Up )
- {
- if ( IS_TOP_OVERSHOOT( ras.lastY ) )
- p->flags |= Overshoot_Top;
-
- bottom = p->start;
- top = bottom + h;
- p->offset = 0;
- p->X = p->x[0];
- }
- else
- {
- if ( IS_BOTTOM_OVERSHOOT( ras.lastY ) )
- p->flags |= Overshoot_Bottom;
-
- top = p->start + 1;
- bottom = top - h;
- p->start = bottom;
- p->offset = h - 1;
- p->X = p->x[h - 1];
- }
-
- if ( Insert_Y_Turns( RAS_VARS bottom, top ) )
- return FAILURE;
-
- if ( !ras.gProfile )
- ras.gProfile = p;
-
- /* preliminary values to be finalized */
- p->next = ras.gProfile;
- p->link = (PProfile)ras.top;
-
- ras.num_Profs++;
+ ras.numTurns++;
+ ras.sizeBuff[-ras.numTurns] = y;
}
return SUCCESS;
@@ -776,29 +807,56 @@
*
* @Description:
* Adjust all links in the profiles list.
+ *
+ * @Return:
+ * SUCCESS on success. FAILURE in case of overflow.
*/
- static void
+ static Bool
Finalize_Profile_Table( RAS_ARG )
{
- UShort n = ras.num_Profs;
- PProfile p = ras.fProfile;
- PProfile q;
+ UShort n;
+ PProfile p;
- /* there should be at least two profiles, up and down */
- while ( --n )
+ n = ras.num_Profs;
+ p = ras.fProfile;
+
+ if ( n > 1 && p )
{
- q = p->link;
+ do
+ {
+ Int bottom, top;
- /* fix the contour loop */
- if ( q->next == p->next )
- p->next = q;
- p = q;
+ if ( n > 1 )
+ p->link = (PProfile)( p->offset + p->height );
+ else
+ p->link = NULL;
+
+ if ( p->flags & Flow_Up )
+ {
+ bottom = (Int)p->start;
+ top = (Int)( p->start + p->height - 1 );
+ }
+ else
+ {
+ bottom = (Int)( p->start - p->height + 1 );
+ top = (Int)p->start;
+ p->start = bottom;
+ p->offset += p->height - 1;
+ }
+
+ if ( Insert_Y_Turn( RAS_VARS bottom ) ||
+ Insert_Y_Turn( RAS_VARS top + 1 ) )
+ return FAILURE;
+
+ p = p->link;
+ } while ( --n );
}
+ else
+ ras.fProfile = NULL;
- /* null-terminate */
- p->link = NULL;
+ return SUCCESS;
}
@@ -928,78 +986,107 @@
Long miny,
Long maxy )
{
- Long e, e2, Dx, Dy;
- Long Ix, Rx, Ax;
- Int size;
+ Long Dx, Dy;
+ Int e1, e2, f1, f2, size; /* XXX: is `Short' sufficient? */
+ Long Ix, Rx, Ax;
PLong top;
- if ( y2 < miny || y1 > maxy )
+ Dx = x2 - x1;
+ Dy = y2 - y1;
+
+ if ( Dy <= 0 || y2 < miny || y1 > maxy )
return SUCCESS;
- e2 = y2 > maxy ? maxy : FLOOR( y2 );
- e = y1 < miny ? miny : CEILING( y1 );
+ if ( y1 < miny )
+ {
+ /* Take care: miny-y1 can be a very large value; we use */
+ /* a slow MulDiv function to avoid clipping bugs */
+ x1 += SMulDiv( Dx, miny - y1, Dy );
+ e1 = (Int)TRUNC( miny );
+ f1 = 0;
+ }
+ else
+ {
+ e1 = (Int)TRUNC( y1 );
+ f1 = (Int)FRAC( y1 );
+ }
- if ( y1 == e )
- e += ras.precision;
+ if ( y2 > maxy )
+ {
+ /* x2 += FMulDiv( Dx, maxy - y2, Dy ); UNNECESSARY */
+ e2 = (Int)TRUNC( maxy );
+ f2 = 0;
+ }
+ else
+ {
+ e2 = (Int)TRUNC( y2 );
+ f2 = (Int)FRAC( y2 );
+ }
- if ( e2 < e ) /* nothing to do */
- return SUCCESS;
+ if ( f1 > 0 )
+ {
+ if ( e1 == e2 )
+ return SUCCESS;
+ else
+ {
+ x1 += SMulDiv( Dx, ras.precision - f1, Dy );
+ e1 += 1;
+ }
+ }
+ else
+ if ( ras.joint )
+ {
+ ras.top--;
+ ras.joint = FALSE;
+ }
- size = (Int)TRUNC( e2 - e ) + 1;
- top = ras.top;
+ ras.joint = (char)( f2 == 0 );
- if ( top + size >= ras.maxBuff )
+ if ( ras.fresh )
+ {
+ ras.cProfile->start = e1;
+ ras.fresh = FALSE;
+ }
+
+ size = e2 - e1 + 1;
+ if ( ras.top + size >= ras.maxBuff )
{
ras.error = FT_THROW( Raster_Overflow );
return FAILURE;
}
- Dx = x2 - x1;
- Dy = y2 - y1;
-
- if ( Dx == 0 ) /* very easy */
+ if ( Dx > 0 )
{
- do
- *top++ = x1;
- while ( --size );
- goto Fin;
- }
-
- Ix = SMulDiv_No_Round( e - y1, Dx, Dy );
- x1 += Ix;
- *top++ = x1;
-
- if ( --size )
- {
- Ax = Dx * ( e - y1 ) - Dy * Ix; /* remainder */
- Ix = FMulDiv( ras.precision, Dx, Dy );
- Rx = Dx * ras.precision - Dy * Ix; /* remainder */
+ Ix = SMulDiv_No_Round( ras.precision, Dx, Dy );
+ Rx = ( ras.precision * Dx ) % Dy;
Dx = 1;
-
- if ( x2 < x1 )
- {
- Ax = -Ax;
- Rx = -Rx;
- Dx = -Dx;
- }
-
- do
- {
- x1 += Ix;
- Ax += Rx;
- if ( Ax >= Dy )
- {
- Ax -= Dy;
- x1 += Dx;
- }
- *top++ = x1;
- }
- while ( --size );
+ }
+ else
+ {
+ Ix = -SMulDiv_No_Round( ras.precision, -Dx, Dy );
+ Rx = ( ras.precision * -Dx ) % Dy;
+ Dx = -1;
}
- Fin:
+ Ax = -Dy;
+ top = ras.top;
+
+ while ( size > 0 )
+ {
+ *top++ = x1;
+
+ x1 += Ix;
+ Ax += Rx;
+ if ( Ax >= 0 )
+ {
+ Ax -= Dy;
+ x1 += Dx;
+ }
+ size--;
+ }
+
ras.top = top;
return SUCCESS;
}
@@ -1044,7 +1131,17 @@
Long miny,
Long maxy )
{
- return Line_Up( RAS_VARS x1, -y1, x2, -y2, -maxy, -miny );
+ Bool result, fresh;
+
+
+ fresh = ras.fresh;
+
+ result = Line_Up( RAS_VARS x1, -y1, x2, -y2, -maxy, -miny );
+
+ if ( fresh && !ras.fresh )
+ ras.cProfile->start = -ras.cProfile->start;
+
+ return result;
}
@@ -1084,73 +1181,105 @@
Long miny,
Long maxy )
{
- Long y1, y2, e, e2, dy;
- Long dx, x2;
+ Long y1, y2, e, e2, e0;
+ Short f1;
- PLong top;
+ TPoint* start_arc;
+
+ PLong top;
y1 = arc[degree].y;
y2 = arc[0].y;
+ top = ras.top;
if ( y2 < miny || y1 > maxy )
- return SUCCESS;
+ goto Fin;
- e2 = y2 > maxy ? maxy : FLOOR( y2 );
- e = y1 < miny ? miny : CEILING( y1 );
+ e2 = FLOOR( y2 );
- if ( y1 == e )
- e += ras.precision;
+ if ( e2 > maxy )
+ e2 = maxy;
- if ( e2 < e ) /* nothing to do */
- return SUCCESS;
+ e0 = miny;
- top = ras.top;
+ if ( y1 < miny )
+ e = miny;
+ else
+ {
+ e = CEILING( y1 );
+ f1 = (Short)( FRAC( y1 ) );
+ e0 = e;
+
+ if ( f1 == 0 )
+ {
+ if ( ras.joint )
+ {
+ top--;
+ ras.joint = FALSE;
+ }
+
+ *top++ = arc[degree].x;
+
+ e += ras.precision;
+ }
+ }
+
+ if ( ras.fresh )
+ {
+ ras.cProfile->start = TRUNC( e0 );
+ ras.fresh = FALSE;
+ }
+
+ if ( e2 < e )
+ goto Fin;
if ( ( top + TRUNC( e2 - e ) + 1 ) >= ras.maxBuff )
{
+ ras.top = top;
ras.error = FT_THROW( Raster_Overflow );
return FAILURE;
}
+ start_arc = arc;
+
do
{
+ ras.joint = FALSE;
+
y2 = arc[0].y;
- x2 = arc[0].x;
if ( y2 > e )
{
- dy = y2 - arc[degree].y;
- dx = x2 - arc[degree].x;
-
- /* split condition should be invariant of direction */
- if ( dy > ras.precision_step ||
- dx > ras.precision_step ||
- -dx > ras.precision_step )
+ y1 = arc[degree].y;
+ if ( y2 - y1 >= ras.precision_step )
{
splitter( arc );
arc += degree;
}
else
{
- *top++ = x2 - FMulDiv( y2 - e, dx, dy );
- e += ras.precision;
+ *top++ = arc[degree].x + FMulDiv( arc[0].x - arc[degree].x,
+ e - y1, y2 - y1 );
arc -= degree;
+ e += ras.precision;
}
}
else
{
if ( y2 == e )
{
- *top++ = x2;
- e += ras.precision;
- }
- arc -= degree;
- }
- }
- while ( e <= e2 );
+ ras.joint = TRUE;
+ *top++ = arc[0].x;
- ras.top = top;
+ e += ras.precision;
+ }
+ arc -= degree;
+ }
+ } while ( arc >= start_arc && e <= e2 );
+
+ Fin:
+ ras.top = top;
return SUCCESS;
}
@@ -1187,7 +1316,7 @@
Long miny,
Long maxy )
{
- Bool result;
+ Bool result, fresh;
arc[0].y = -arc[0].y;
@@ -1196,8 +1325,13 @@
if ( degree > 2 )
arc[3].y = -arc[3].y;
+ fresh = ras.fresh;
+
result = Bezier_Up( RAS_VARS degree, arc, splitter, -maxy, -miny );
+ if ( fresh && !ras.fresh )
+ ras.cProfile->start = -ras.cProfile->start;
+
arc[0].y = -arc[0].y;
return result;
}
@@ -1228,50 +1362,74 @@
Line_To( RAS_ARGS Long x,
Long y )
{
- TStates state;
-
-
- if ( y == ras.lastY )
- goto Fin;
-
/* First, detect a change of direction */
- state = ras.lastY < y ? Ascending_State : Descending_State;
-
- if ( ras.state != state )
+ switch ( ras.state )
{
- /* finalize current profile if any */
- if ( ras.state != Unknown_State &&
- End_Profile( RAS_VAR ) )
- goto Fail;
+ case Unknown_State:
+ if ( y > ras.lastY )
+ {
+ if ( New_Profile( RAS_VARS Ascending_State,
+ IS_BOTTOM_OVERSHOOT( ras.lastY ) ) )
+ return FAILURE;
+ }
+ else
+ {
+ if ( y < ras.lastY )
+ if ( New_Profile( RAS_VARS Descending_State,
+ IS_TOP_OVERSHOOT( ras.lastY ) ) )
+ return FAILURE;
+ }
+ break;
- /* create a new profile */
- if ( New_Profile( RAS_VARS state ) )
- goto Fail;
+ case Ascending_State:
+ if ( y < ras.lastY )
+ {
+ if ( End_Profile( RAS_VARS IS_TOP_OVERSHOOT( ras.lastY ) ) ||
+ New_Profile( RAS_VARS Descending_State,
+ IS_TOP_OVERSHOOT( ras.lastY ) ) )
+ return FAILURE;
+ }
+ break;
+
+ case Descending_State:
+ if ( y > ras.lastY )
+ {
+ if ( End_Profile( RAS_VARS IS_BOTTOM_OVERSHOOT( ras.lastY ) ) ||
+ New_Profile( RAS_VARS Ascending_State,
+ IS_BOTTOM_OVERSHOOT( ras.lastY ) ) )
+ return FAILURE;
+ }
+ break;
+
+ default:
+ ;
}
/* Then compute the lines */
- if ( state == Ascending_State )
+ switch ( ras.state )
{
+ case Ascending_State:
if ( Line_Up( RAS_VARS ras.lastX, ras.lastY,
x, y, ras.minY, ras.maxY ) )
- goto Fail;
- }
- else
- {
+ return FAILURE;
+ break;
+
+ case Descending_State:
if ( Line_Down( RAS_VARS ras.lastX, ras.lastY,
x, y, ras.minY, ras.maxY ) )
- goto Fail;
+ return FAILURE;
+ break;
+
+ default:
+ ;
}
- Fin:
ras.lastX = x;
ras.lastY = y;
- return SUCCESS;
- Fail:
- return FAILURE;
+ return SUCCESS;
}
@@ -1342,7 +1500,7 @@
ymax = y1;
}
- if ( y2 < FLOOR( ymin ) || y2 > CEILING( ymax ) )
+ if ( y2 < ymin || y2 > ymax )
{
/* this arc has no given direction, split it! */
Split_Conic( arc );
@@ -1350,12 +1508,8 @@
}
else if ( y1 == y3 )
{
- /* this arc is flat, advance position */
- /* and pop it from the Bezier stack */
+ /* this arc is flat, ignore it and pop it from the Bezier stack */
arc -= 2;
-
- ras.lastX = x3;
- ras.lastY = y3;
}
else
{
@@ -1364,13 +1518,18 @@
state_bez = y1 < y3 ? Ascending_State : Descending_State;
if ( ras.state != state_bez )
{
+ Bool o = ( state_bez == Ascending_State )
+ ? IS_BOTTOM_OVERSHOOT( y1 )
+ : IS_TOP_OVERSHOOT( y1 );
+
+
/* finalize current profile if any */
if ( ras.state != Unknown_State &&
- End_Profile( RAS_VAR ) )
+ End_Profile( RAS_VARS o ) )
goto Fail;
/* create a new profile */
- if ( New_Profile( RAS_VARS state_bez ) )
+ if ( New_Profile( RAS_VARS state_bez, o ) )
goto Fail;
}
@@ -1386,13 +1545,13 @@
ras.minY, ras.maxY ) )
goto Fail;
arc -= 2;
-
- ras.lastX = x3;
- ras.lastY = y3;
}
} while ( arc >= arcs );
+ ras.lastX = x3;
+ ras.lastY = y3;
+
return SUCCESS;
Fail:
@@ -1489,7 +1648,7 @@
ymax2 = y2;
}
- if ( ymin2 < FLOOR( ymin1 ) || ymax2 > CEILING( ymax1 ) )
+ if ( ymin2 < ymin1 || ymax2 > ymax1 )
{
/* this arc has no given direction, split it! */
Split_Cubic( arc );
@@ -1497,26 +1656,27 @@
}
else if ( y1 == y4 )
{
- /* this arc is flat, advance position */
- /* and pop it from the Bezier stack */
+ /* this arc is flat, ignore it and pop it from the Bezier stack */
arc -= 3;
-
- ras.lastX = x4;
- ras.lastY = y4;
}
else
{
- state_bez = y1 < y4 ? Ascending_State : Descending_State;
+ state_bez = ( y1 <= y4 ) ? Ascending_State : Descending_State;
/* detect a change of direction */
if ( ras.state != state_bez )
{
+ Bool o = ( state_bez == Ascending_State )
+ ? IS_BOTTOM_OVERSHOOT( y1 )
+ : IS_TOP_OVERSHOOT( y1 );
+
+
/* finalize current profile if any */
if ( ras.state != Unknown_State &&
- End_Profile( RAS_VAR ) )
+ End_Profile( RAS_VARS o ) )
goto Fail;
- if ( New_Profile( RAS_VARS state_bez ) )
+ if ( New_Profile( RAS_VARS state_bez, o ) )
goto Fail;
}
@@ -1532,13 +1692,13 @@
ras.minY, ras.maxY ) )
goto Fail;
arc -= 3;
-
- ras.lastX = x4;
- ras.lastY = y4;
}
} while ( arc >= arcs );
+ ras.lastX = x4;
+ ras.lastY = y4;
+
return SUCCESS;
Fail:
@@ -1580,11 +1740,6 @@
*
* @Return:
* SUCCESS on success, FAILURE on error.
- *
- * @Note:
- * Unlike FT_Outline_Decompose(), this function handles the scanmode
- * dropout tags in the individual contours. Therefore, it cannot be
- * replaced.
*/
static Bool
Decompose_Curve( RAS_ARGS Int first,
@@ -1598,7 +1753,7 @@
FT_Vector* points;
FT_Vector* point;
FT_Vector* limit;
- FT_Byte* tags;
+ char* tags;
UInt tag; /* current point's state */
@@ -1819,17 +1974,24 @@
ras.fProfile = NULL;
- ras.cProfile = NULL;
+ ras.joint = FALSE;
+ ras.fresh = FALSE;
- ras.top = ras.buff;
- ras.maxBuff = ras.sizeBuff - 1; /* top reserve */
+ ras.maxBuff = ras.sizeBuff - AlignProfileSize;
- ras.numTurns = 0;
- ras.num_Profs = 0;
+ ras.numTurns = 0;
+
+ ras.cProfile = (PProfile)ras.top;
+ ras.cProfile->offset = ras.top;
+ ras.num_Profs = 0;
last = -1;
for ( i = 0; i < ras.outline.n_contours; i++ )
{
+ PProfile lastProfile;
+ Bool o;
+
+
ras.state = Unknown_State;
ras.gProfile = NULL;
@@ -1839,30 +2001,35 @@
if ( Decompose_Curve( RAS_VARS first, last, flipped ) )
return FAILURE;
- /* Note that ras.gProfile can stay nil if the contour was */
- /* too small to be drawn or degenerate. */
- if ( !ras.gProfile )
- continue;
-
/* we must now check whether the extreme arcs join or not */
if ( FRAC( ras.lastY ) == 0 &&
ras.lastY >= ras.minY &&
ras.lastY <= ras.maxY )
- if ( ( ras.gProfile->flags & Flow_Up ) ==
+ if ( ras.gProfile &&
+ ( ras.gProfile->flags & Flow_Up ) ==
( ras.cProfile->flags & Flow_Up ) )
ras.top--;
+ /* Note that ras.gProfile can be nil if the contour was too small */
+ /* to be drawn. */
- if ( End_Profile( RAS_VAR ) )
+ lastProfile = ras.cProfile;
+ if ( ras.top != ras.cProfile->offset &&
+ ( ras.cProfile->flags & Flow_Up ) )
+ o = IS_TOP_OVERSHOOT( ras.lastY );
+ else
+ o = IS_BOTTOM_OVERSHOOT( ras.lastY );
+ if ( End_Profile( RAS_VARS o ) )
return FAILURE;
- if ( !ras.fProfile )
- ras.fProfile = ras.gProfile;
+ /* close the `next profile in contour' linked list */
+ if ( ras.gProfile )
+ lastProfile->next = ras.gProfile;
}
- if ( ras.fProfile )
- Finalize_Profile_Table( RAS_VAR );
+ if ( Finalize_Profile_Table( RAS_VAR ) )
+ return FAILURE;
- return SUCCESS;
+ return (Bool)( ras.top < ras.maxBuff ? SUCCESS : FAILURE );
}
@@ -1877,9 +2044,22 @@
/**************************************************************************
*
+ * Init_Linked
+ *
+ * Initializes an empty linked list.
+ */
+ static void
+ Init_Linked( TProfileList* l )
+ {
+ *l = NULL;
+ }
+
+
+ /**************************************************************************
+ *
* InsNew
*
- * Inserts a new profile in a linked list, sorted by coordinate.
+ * Inserts a new profile in a linked list.
*/
static void
InsNew( PProfileList list,
@@ -1893,8 +2073,10 @@
current = *old;
x = profile->X;
- while ( current && current->X < x )
+ while ( current )
{
+ if ( x < current->X )
+ break;
old = ¤t->link;
current = *old;
}
@@ -1906,51 +2088,79 @@
/**************************************************************************
*
- * Increment
+ * DelOld
*
- * Advances all profile in the list to the next scanline. It also
- * sorts the trace list in the unlikely case of profile crossing.
- * The profiles are inserted in sorted order. We might need a single
- * swap to fix it when profiles (contours) cross.
- * Bubble sort with immediate restart is good enough and simple.
+ * Removes an old profile from a linked list.
*/
static void
- Increment( PProfileList list,
- Int flow )
+ DelOld( PProfileList list,
+ const PProfile profile )
+ {
+ PProfile *old, current;
+
+
+ old = list;
+ current = *old;
+
+ while ( current )
+ {
+ if ( current == profile )
+ {
+ *old = current->link;
+ return;
+ }
+
+ old = ¤t->link;
+ current = *old;
+ }
+
+ /* we should never get there, unless the profile was not part of */
+ /* the list. */
+ }
+
+
+ /**************************************************************************
+ *
+ * Sort
+ *
+ * Sorts a trace list. In 95%, the list is already sorted. We need
+ * an algorithm which is fast in this case. Bubble sort is enough
+ * and simple.
+ */
+ static void
+ Sort( PProfileList list )
{
PProfile *old, current, next;
- /* First, set the new X coordinates and remove exhausted profiles */
- old = list;
- while ( *old )
+ /* First, set the new X coordinate of each profile */
+ current = *list;
+ while ( current )
{
- current = *old;
- if ( --current->height )
- {
- current->offset += flow;
- current->X = current->x[current->offset];
- old = ¤t->link;
- }
- else
- *old = current->link; /* remove */
+ current->X = *current->offset;
+ current->offset += ( current->flags & Flow_Up ) ? 1 : -1;
+ current->height--;
+ current = current->link;
}
- /* Then make sure the list remains sorted */
+ /* Then sort them */
old = list;
current = *old;
if ( !current )
return;
- while ( current->link )
- {
- next = current->link;
+ next = current->link;
+ while ( next )
+ {
if ( current->X <= next->X )
{
old = ¤t->link;
- current = next;
+ current = *old;
+
+ if ( !current )
+ return;
}
else
{
@@ -1958,10 +2168,11 @@
current->link = next->link;
next->link = current;
- /* this is likely the only necessary swap -- restart */
old = list;
current = *old;
}
+
+ next = current->link;
}
}
@@ -1976,51 +2187,74 @@
*/
static void
- Vertical_Sweep_Init( RAS_ARGS Int min,
- Int max )
+ Vertical_Sweep_Init( RAS_ARGS Short min,
+ Short max )
{
FT_UNUSED( max );
- ras.bLine = ras.bOrigin - min * ras.bPitch;
+ ras.bLine = ras.bOrigin - min * ras.target.pitch;
}
static void
- Vertical_Sweep_Span( RAS_ARGS Int y,
+ Vertical_Sweep_Span( RAS_ARGS Short y,
FT_F26Dot6 x1,
- FT_F26Dot6 x2 )
+ FT_F26Dot6 x2,
+ PProfile left,
+ PProfile right )
{
- Int e1 = (Int)TRUNC( CEILING( x1 ) );
- Int e2 = (Int)TRUNC( FLOOR( x2 ) );
+ Long e1, e2;
+
+ Int dropOutControl = left->flags & 7;
FT_UNUSED( y );
+ FT_UNUSED( left );
+ FT_UNUSED( right );
- FT_TRACE7(( " y=%d x=[% .*f;% .*f]",
+ /* in high-precision mode, we need 12 digits after the comma to */
+ /* represent multiples of 1/(1<<12) = 1/4096 */
+ FT_TRACE7(( " y=%d x=[% .12f;% .12f]",
y,
- ras.precision_bits, (double)x1 / (double)ras.precision,
- ras.precision_bits, (double)x2 / (double)ras.precision ));
+ (double)x1 / (double)ras.precision,
+ (double)x2 / (double)ras.precision ));
- if ( e2 >= 0 && e1 <= ras.bRight )
+ /* Drop-out control */
+
+ e1 = CEILING( x1 );
+ e2 = FLOOR( x2 );
+
+ /* take care of the special case where both the left */
+ /* and right contour lie exactly on pixel centers */
+ if ( dropOutControl != 2 &&
+ x2 - x1 - ras.precision <= ras.precision_jitter &&
+ e1 != x1 && e2 != x2 )
+ e2 = e1;
+
+ e1 = TRUNC( e1 );
+ e2 = TRUNC( e2 );
+
+ if ( e2 >= 0 && e1 < ras.bWidth )
{
- PByte target;
+ Byte* target;
- Int c1, f1, c2, f2;
+ Int c1, c2;
+ Byte f1, f2;
if ( e1 < 0 )
e1 = 0;
- if ( e2 > ras.bRight )
- e2 = ras.bRight;
+ if ( e2 >= ras.bWidth )
+ e2 = ras.bWidth - 1;
- FT_TRACE7(( " -> x=[%d;%d]", e1, e2 ));
+ FT_TRACE7(( " -> x=[%ld;%ld]", e1, e2 ));
- c1 = e1 >> 3;
- c2 = e2 >> 3;
+ c1 = (Short)( e1 >> 3 );
+ c2 = (Short)( e2 >> 3 );
- f1 = 0xFF >> ( e1 & 7 );
- f2 = ~0x7F >> ( e2 & 7 );
+ f1 = (Byte) ( 0xFF >> ( e1 & 7 ) );
+ f2 = (Byte) ~( 0x7F >> ( e2 & 7 ) );
target = ras.bLine + c1;
c2 -= c1;
@@ -2046,50 +2280,163 @@
static void
- Vertical_Sweep_Drop( RAS_ARGS Int y,
+ Vertical_Sweep_Drop( RAS_ARGS Short y,
FT_F26Dot6 x1,
- FT_F26Dot6 x2 )
+ FT_F26Dot6 x2,
+ PProfile left,
+ PProfile right )
{
- Int e1 = (Int)TRUNC( x1 );
- Int e2 = (Int)TRUNC( x2 );
- Int c1, f1;
-
- FT_UNUSED( y );
+ Long e1, e2, pxl;
+ Short c1, f1;
- /* undocumented but confirmed: If the drop-out would result in a */
- /* pixel outside of the bounding box, use the pixel inside of the */
- /* bounding box instead */
- if ( e1 < 0 || e1 > ras.bRight )
- e1 = e2;
+ FT_TRACE7(( " y=%d x=[% .12f;% .12f]",
+ y,
+ (double)x1 / (double)ras.precision,
+ (double)x2 / (double)ras.precision ));
- /* otherwise check that the other pixel isn't set */
- else if ( e2 >=0 && e2 <= ras.bRight )
+ /* Drop-out control */
+
+ /* e2 x2 x1 e1 */
+ /* */
+ /* ^ | */
+ /* | | */
+ /* +-------------+---------------------+------------+ */
+ /* | | */
+ /* | v */
+ /* */
+ /* pixel contour contour pixel */
+ /* center center */
+
+ /* drop-out mode scan conversion rules (as defined in OpenType) */
+ /* --------------------------------------------------------------- */
+ /* 0 1, 2, 3 */
+ /* 1 1, 2, 4 */
+ /* 2 1, 2 */
+ /* 3 same as mode 2 */
+ /* 4 1, 2, 5 */
+ /* 5 1, 2, 6 */
+ /* 6, 7 same as mode 2 */
+
+ e1 = CEILING( x1 );
+ e2 = FLOOR ( x2 );
+ pxl = e1;
+
+ if ( e1 > e2 )
{
- c1 = e2 >> 3;
- f1 = 0x80 >> ( e2 & 7 );
+ Int dropOutControl = left->flags & 7;
- if ( ras.bLine[c1] & f1 )
- return;
+
+ if ( e1 == e2 + ras.precision )
+ {
+ switch ( dropOutControl )
+ {
+ case 0: /* simple drop-outs including stubs */
+ pxl = e2;
+ break;
+
+ case 4: /* smart drop-outs including stubs */
+ pxl = SMART( x1, x2 );
+ break;
+
+ case 1: /* simple drop-outs excluding stubs */
+ case 5: /* smart drop-outs excluding stubs */
+
+ /* Drop-out Control Rules #4 and #6 */
+
+ /* The specification neither provides an exact definition */
+ /* of a `stub' nor gives exact rules to exclude them. */
+ /* */
+ /* Here the constraints we use to recognize a stub. */
+ /* */
+ /* upper stub: */
+ /* */
+ /* - P_Left and P_Right are in the same contour */
+ /* - P_Right is the successor of P_Left in that contour */
+ /* - y is the top of P_Left and P_Right */
+ /* */
+ /* lower stub: */
+ /* */
+ /* - P_Left and P_Right are in the same contour */
+ /* - P_Left is the successor of P_Right in that contour */
+ /* - y is the bottom of P_Left */
+ /* */
+ /* We draw a stub if the following constraints are met. */
+ /* */
+ /* - for an upper or lower stub, there is top or bottom */
+ /* overshoot, respectively */
+ /* - the covered interval is greater or equal to a half */
+ /* pixel */
+
+ /* upper stub test */
+ if ( left->next == right &&
+ left->height <= 0 &&
+ !( left->flags & Overshoot_Top &&
+ x2 - x1 >= ras.precision_half ) )
+ goto Exit;
+
+ /* lower stub test */
+ if ( right->next == left &&
+ left->start == y &&
+ !( left->flags & Overshoot_Bottom &&
+ x2 - x1 >= ras.precision_half ) )
+ goto Exit;
+
+ if ( dropOutControl == 1 )
+ pxl = e2;
+ else
+ pxl = SMART( x1, x2 );
+ break;
+
+ default: /* modes 2, 3, 6, 7 */
+ goto Exit; /* no drop-out control */
+ }
+
+ /* undocumented but confirmed: If the drop-out would result in a */
+ /* pixel outside of the bounding box, use the pixel inside of the */
+ /* bounding box instead */
+ if ( pxl < 0 )
+ pxl = e1;
+ else if ( TRUNC( pxl ) >= ras.bWidth )
+ pxl = e2;
+
+ /* check that the other pixel isn't set */
+ e1 = ( pxl == e1 ) ? e2 : e1;
+
+ e1 = TRUNC( e1 );
+
+ c1 = (Short)( e1 >> 3 );
+ f1 = (Short)( e1 & 7 );
+
+ if ( e1 >= 0 && e1 < ras.bWidth &&
+ ras.bLine[c1] & ( 0x80 >> f1 ) )
+ goto Exit;
+ }
+ else
+ goto Exit;
}
- if ( e1 >= 0 && e1 <= ras.bRight )
+ e1 = TRUNC( pxl );
+
+ if ( e1 >= 0 && e1 < ras.bWidth )
{
- c1 = e1 >> 3;
- f1 = 0x80 >> ( e1 & 7 );
+ FT_TRACE7(( " -> x=%ld", e1 ));
- FT_TRACE7(( " y=%d x=%d%s\n", y, e1,
- ras.bLine[c1] & f1 ? " redundant" : "" ));
+ c1 = (Short)( e1 >> 3 );
+ f1 = (Short)( e1 & 7 );
- ras.bLine[c1] |= f1;
+ ras.bLine[c1] |= (char)( 0x80 >> f1 );
}
+
+ Exit:
+ FT_TRACE7(( " dropout=%d\n", left->flags & 7 ));
}
static void
Vertical_Sweep_Step( RAS_ARG )
{
- ras.bLine -= ras.bPitch;
+ ras.bLine -= ras.target.pitch;
}
@@ -2103,8 +2450,8 @@
*/
static void
- Horizontal_Sweep_Init( RAS_ARGS Int min,
- Int max )
+ Horizontal_Sweep_Init( RAS_ARGS Short min,
+ Short max )
{
/* nothing, really */
FT_UNUSED_RASTER;
@@ -2114,18 +2461,22 @@
static void
- Horizontal_Sweep_Span( RAS_ARGS Int y,
+ Horizontal_Sweep_Span( RAS_ARGS Short y,
FT_F26Dot6 x1,
- FT_F26Dot6 x2 )
+ FT_F26Dot6 x2,
+ PProfile left,
+ PProfile right )
{
- Long e1 = CEILING( x1 );
- Long e2 = FLOOR( x2 );
+ Long e1, e2;
+
+ FT_UNUSED( left );
+ FT_UNUSED( right );
- FT_TRACE7(( " x=%d y=[% .*f;% .*f]",
+ FT_TRACE7(( " x=%d y=[% .12f;% .12f]",
y,
- ras.precision_bits, (double)x1 / (double)ras.precision,
- ras.precision_bits, (double)x2 / (double)ras.precision ));
+ (double)x1 / (double)ras.precision,
+ (double)x2 / (double)ras.precision ));
/* We should not need this procedure but the vertical sweep */
/* mishandles horizontal lines through pixel centers. So we */
@@ -2133,18 +2484,20 @@
/* */
/* XXX: Can we handle horizontal lines better and drop this? */
+ e1 = CEILING( x1 );
+
if ( x1 == e1 )
{
e1 = TRUNC( e1 );
- if ( e1 >= 0 && e1 <= ras.bTop )
+ if ( e1 >= 0 && (ULong)e1 < ras.target.rows )
{
- Int f1;
+ Byte f1;
PByte bits;
- bits = ras.bOrigin + ( y >> 3 ) - e1 * ras.bPitch;
- f1 = 0x80 >> ( y & 7 );
+ bits = ras.bOrigin + ( y >> 3 ) - e1 * ras.target.pitch;
+ f1 = (Byte)( 0x80 >> ( y & 7 ) );
FT_TRACE7(( bits[0] & f1 ? " redundant"
: " -> y=%ld edge", e1 ));
@@ -2153,18 +2506,20 @@
}
}
+ e2 = FLOOR ( x2 );
+
if ( x2 == e2 )
{
e2 = TRUNC( e2 );
- if ( e2 >= 0 && e2 <= ras.bTop )
+ if ( e2 >= 0 && (ULong)e2 < ras.target.rows )
{
- Int f1;
+ Byte f1;
PByte bits;
- bits = ras.bOrigin + ( y >> 3 ) - e2 * ras.bPitch;
- f1 = 0x80 >> ( y & 7 );
+ bits = ras.bOrigin + ( y >> 3 ) - e2 * ras.target.pitch;
+ f1 = (Byte)( 0x80 >> ( y & 7 ) );
FT_TRACE7(( bits[0] & f1 ? " redundant"
: " -> y=%ld edge", e2 ));
@@ -2178,42 +2533,122 @@
static void
- Horizontal_Sweep_Drop( RAS_ARGS Int y,
+ Horizontal_Sweep_Drop( RAS_ARGS Short y,
FT_F26Dot6 x1,
- FT_F26Dot6 x2 )
+ FT_F26Dot6 x2,
+ PProfile left,
+ PProfile right )
{
- Int e1 = (Int)TRUNC( x1 );
- Int e2 = (Int)TRUNC( x2 );
+ Long e1, e2, pxl;
PByte bits;
- Int f1;
+ Byte f1;
- /* undocumented but confirmed: If the drop-out would result in a */
- /* pixel outside of the bounding box, use the pixel inside of the */
- /* bounding box instead */
- if ( e1 < 0 || e1 > ras.bTop )
- e1 = e2;
+ FT_TRACE7(( " x=%d y=[% .12f;% .12f]",
+ y,
+ (double)x1 / (double)ras.precision,
+ (double)x2 / (double)ras.precision ));
- /* otherwise check that the other pixel isn't set */
- else if ( e2 >=0 && e2 <= ras.bTop )
+ /* During the horizontal sweep, we only take care of drop-outs */
+
+ /* e1 + <-- pixel center */
+ /* | */
+ /* x1 ---+--> <-- contour */
+ /* | */
+ /* | */
+ /* x2 <--+--- <-- contour */
+ /* | */
+ /* | */
+ /* e2 + <-- pixel center */
+
+ e1 = CEILING( x1 );
+ e2 = FLOOR ( x2 );
+ pxl = e1;
+
+ if ( e1 > e2 )
{
- bits = ras.bOrigin + ( y >> 3 ) - e2 * ras.bPitch;
- f1 = 0x80 >> ( y & 7 );
+ Int dropOutControl = left->flags & 7;
- if ( *bits & f1 )
- return;
+
+ if ( e1 == e2 + ras.precision )
+ {
+ switch ( dropOutControl )
+ {
+ case 0: /* simple drop-outs including stubs */
+ pxl = e2;
+ break;
+
+ case 4: /* smart drop-outs including stubs */
+ pxl = SMART( x1, x2 );
+ break;
+
+ case 1: /* simple drop-outs excluding stubs */
+ case 5: /* smart drop-outs excluding stubs */
+ /* see Vertical_Sweep_Drop for details */
+
+ /* rightmost stub test */
+ if ( left->next == right &&
+ left->height <= 0 &&
+ !( left->flags & Overshoot_Top &&
+ x2 - x1 >= ras.precision_half ) )
+ goto Exit;
+
+ /* leftmost stub test */
+ if ( right->next == left &&
+ left->start == y &&
+ !( left->flags & Overshoot_Bottom &&
+ x2 - x1 >= ras.precision_half ) )
+ goto Exit;
+
+ if ( dropOutControl == 1 )
+ pxl = e2;
+ else
+ pxl = SMART( x1, x2 );
+ break;
+
+ default: /* modes 2, 3, 6, 7 */
+ goto Exit; /* no drop-out control */
+ }
+
+ /* undocumented but confirmed: If the drop-out would result in a */
+ /* pixel outside of the bounding box, use the pixel inside of the */
+ /* bounding box instead */
+ if ( pxl < 0 )
+ pxl = e1;
+ else if ( (ULong)( TRUNC( pxl ) ) >= ras.target.rows )
+ pxl = e2;
+
+ /* check that the other pixel isn't set */
+ e1 = ( pxl == e1 ) ? e2 : e1;
+
+ e1 = TRUNC( e1 );
+
+ bits = ras.bOrigin + ( y >> 3 ) - e1 * ras.target.pitch;
+ f1 = (Byte)( 0x80 >> ( y & 7 ) );
+
+ if ( e1 >= 0 &&
+ (ULong)e1 < ras.target.rows &&
+ *bits & f1 )
+ goto Exit;
+ }
+ else
+ goto Exit;
}
- if ( e1 >= 0 && e1 <= ras.bTop )
+ e1 = TRUNC( pxl );
+
+ if ( e1 >= 0 && (ULong)e1 < ras.target.rows )
{
- bits = ras.bOrigin + ( y >> 3 ) - e1 * ras.bPitch;
- f1 = 0x80 >> ( y & 7 );
+ FT_TRACE7(( " -> y=%ld", e1 ));
- FT_TRACE7(( " x=%d y=%d%s\n", y, e1,
- *bits & f1 ? " redundant" : "" ));
+ bits = ras.bOrigin + ( y >> 3 ) - e1 * ras.target.pitch;
+ f1 = (Byte)( 0x80 >> ( y & 7 ) );
- *bits |= f1;
+ bits[0] |= f1;
}
+
+ Exit:
+ FT_TRACE7(( " dropout=%d\n", left->flags & 7 ));
}
@@ -2229,61 +2664,116 @@
*
* Generic Sweep Drawing routine
*
- * Note that this routine is executed with the pool containing at least
- * two valid profiles (up and down) and two y-turns (top and bottom).
- *
*/
- static void
+ static Bool
Draw_Sweep( RAS_ARG )
{
- Int min_Y, max_Y, dropouts;
- Int y, y_turn;
+ Short y, y_change, y_height;
- PProfile *Q, P, P_Left, P_Right;
+ PProfile P, Q, P_Left, P_Right;
- TProfileList waiting = ras.fProfile;
- TProfileList draw_left = NULL;
- TProfileList draw_right = NULL;
+ Short min_Y, max_Y, top, bottom, dropouts;
+
+ Long x1, x2, xs, e1, e2;
+
+ TProfileList waiting;
+ TProfileList draw_left, draw_right;
- /* use y_turns to set the drawing range */
+ /* initialize empty linked lists */
- min_Y = (Int)ras.maxBuff[0];
- max_Y = (Int)ras.maxBuff[ras.numTurns] - 1;
+ Init_Linked( &waiting );
+
+ Init_Linked( &draw_left );
+ Init_Linked( &draw_right );
+
+ /* first, compute min and max Y */
+
+ P = ras.fProfile;
+ max_Y = (Short)TRUNC( ras.minY );
+ min_Y = (Short)TRUNC( ras.maxY );
+
+ while ( P )
+ {
+ Q = P->link;
+
+ bottom = (Short)P->start;
+ top = (Short)( P->start + P->height - 1 );
+
+ if ( min_Y > bottom )
+ min_Y = bottom;
+ if ( max_Y < top )
+ max_Y = top;
+
+ P->X = 0;
+ InsNew( &waiting, P );
+
+ P = Q;
+ }
+
+ /* check the Y-turns */
+ if ( ras.numTurns == 0 )
+ {
+ ras.error = FT_THROW( Invalid_Outline );
+ return FAILURE;
+ }
/* now initialize the sweep */
ras.Proc_Sweep_Init( RAS_VARS min_Y, max_Y );
+ /* then compute the distance of each profile from min_Y */
+
+ P = waiting;
+
+ while ( P )
+ {
+ P->countL = P->start - min_Y;
+ P = P->link;
+ }
+
/* let's go */
- for ( y = min_Y; y <= max_Y; )
+ y = min_Y;
+ y_height = 0;
+
+ if ( ras.numTurns > 0 &&
+ ras.sizeBuff[-ras.numTurns] == min_Y )
+ ras.numTurns--;
+
+ while ( ras.numTurns > 0 )
{
- /* check waiting list for new profile activations */
+ /* check waiting list for new activations */
- Q = &waiting;
- while ( *Q )
+ P = waiting;
+
+ while ( P )
{
- P = *Q;
- if ( P->start == y )
+ Q = P->link;
+ P->countL -= y_height;
+ if ( P->countL == 0 )
{
- *Q = P->link; /* remove */
+ DelOld( &waiting, P );
- /* each active list contains profiles with the same flow */
- /* left and right are arbitrary, correspond to TrueType */
if ( P->flags & Flow_Up )
InsNew( &draw_left, P );
else
InsNew( &draw_right, P );
}
- else
- Q = &P->link;
+
+ P = Q;
}
- y_turn = (Int)*++ras.maxBuff;
+ /* sort the drawing lists */
- do
+ Sort( &draw_left );
+ Sort( &draw_right );
+
+ y_change = (Short)ras.sizeBuff[-ras.numTurns--];
+ y_height = (Short)( y_change - y );
+
+ while ( y < y_change )
{
/* let's trace */
@@ -2294,13 +2784,9 @@
while ( P_Left && P_Right )
{
- Long x1 = P_Left ->X;
- Long x2 = P_Right->X;
- Long xs;
+ x1 = P_Left ->X;
+ x2 = P_Right->X;
-
- /* TrueType should have x2 > x1, but can be opposite */
- /* by mistake or in CFF/Type1, fix it then */
if ( x1 > x2 )
{
xs = x1;
@@ -2308,130 +2794,205 @@
x2 = xs;
}
- if ( CEILING( x1 ) <= FLOOR( x2 ) )
- ras.Proc_Sweep_Span( RAS_VARS y, x1, x2 );
+ e1 = FLOOR( x1 );
+ e2 = CEILING( x2 );
- /* otherwise, bottom ceiling > top floor, it is a drop-out */
- else
+ if ( x2 - x1 <= ras.precision &&
+ e1 != x1 && e2 != x2 )
{
- Int dropOutControl = P_Left->flags & 7;
-
-
- /* Drop-out control */
-
- /* e2 x2 x1 e1 */
- /* */
- /* ^ | */
- /* | | */
- /* +-------------+---------------------+------------+ */
- /* | | */
- /* | v */
- /* */
- /* pixel contour contour pixel */
- /* center center */
-
- /* drop-out mode scan conversion rules (OpenType specs) */
- /* ------------------------------------------------------- */
- /* bit 0 exclude stubs if set */
- /* bit 1 ignore drop-outs if set */
- /* bit 2 smart rounding if set */
-
- if ( dropOutControl & 2 )
- goto Next_Pair;
-
- /* The specification neither provides an exact definition */
- /* of a `stub' nor gives exact rules to exclude them. */
- /* */
- /* Here the constraints we use to recognize a stub. */
- /* */
- /* upper stub: */
- /* */
- /* - P_Left and P_Right are in the same contour */
- /* - P_Right is the successor of P_Left in that contour */
- /* - y is the top of P_Left and P_Right */
- /* */
- /* lower stub: */
- /* */
- /* - P_Left and P_Right are in the same contour */
- /* - P_Left is the successor of P_Right in that contour */
- /* - y is the bottom of P_Left */
- /* */
- /* We draw a stub if the following constraints are met. */
- /* */
- /* - for an upper or lower stub, there is top or bottom */
- /* overshoot, respectively */
- /* - the covered interval is greater or equal to a half */
- /* pixel */
-
- if ( dropOutControl & 1 )
+ if ( e1 > e2 || e2 == e1 + ras.precision )
{
- /* upper stub test */
- if ( P_Left->height == 1 &&
- P_Left->next == P_Right &&
- !( P_Left->flags & Overshoot_Top &&
- x2 - x1 >= ras.precision_half ) )
- goto Next_Pair;
+ Int dropOutControl = P_Left->flags & 7;
- /* lower stub test */
- if ( P_Left->offset == 0 &&
- P_Right->next == P_Left &&
- !( P_Left->flags & Overshoot_Bottom &&
- x2 - x1 >= ras.precision_half ) )
- goto Next_Pair;
+
+ if ( dropOutControl != 2 )
+ {
+ /* a drop-out was detected */
+
+ P_Left ->X = x1;
+ P_Right->X = x2;
+
+ /* mark profile for drop-out processing */
+ P_Left->countL = 1;
+ dropouts++;
+ }
+
+ goto Skip_To_Next;
}
-
- /* select the pixel to set and the other pixel */
- if ( dropOutControl & 4 )
- {
- x2 = SMART( x1, x2 );
- x1 = x1 > x2 ? x2 + ras.precision : x2 - ras.precision;
- }
- else
- {
- x2 = FLOOR ( x2 );
- x1 = CEILING( x1 );
- }
-
- P_Left ->X = x2;
- P_Right->X = x1;
-
- /* mark profile for drop-out processing */
- P_Left->flags |= Dropout;
- dropouts++;
}
- Next_Pair:
+ ras.Proc_Sweep_Span( RAS_VARS y, x1, x2, P_Left, P_Right );
+
+ Skip_To_Next:
+
P_Left = P_Left->link;
P_Right = P_Right->link;
}
- /* handle drop-outs _after_ the span drawing */
- P_Left = draw_left;
- P_Right = draw_right;
+ /* handle drop-outs _after_ the span drawing -- */
+ /* drop-out processing has been moved out of the loop */
+ /* for performance tuning */
+ if ( dropouts > 0 )
+ goto Scan_DropOuts;
- while ( dropouts )
- {
- if ( P_Left->flags & Dropout )
- {
- ras.Proc_Sweep_Drop( RAS_VARS y, P_Left->X, P_Right->X );
-
- P_Left->flags &= ~Dropout;
- dropouts--;
- }
-
- P_Left = P_Left->link;
- P_Right = P_Right->link;
- }
+ Next_Line:
ras.Proc_Sweep_Step( RAS_VAR );
- Increment( &draw_left, 1 );
- Increment( &draw_right, -1 );
+ y++;
+
+ if ( y < y_change )
+ {
+ Sort( &draw_left );
+ Sort( &draw_right );
+ }
}
- while ( ++y < y_turn );
+
+ /* now finalize the profiles that need it */
+
+ P = draw_left;
+ while ( P )
+ {
+ Q = P->link;
+ if ( P->height == 0 )
+ DelOld( &draw_left, P );
+ P = Q;
+ }
+
+ P = draw_right;
+ while ( P )
+ {
+ Q = P->link;
+ if ( P->height == 0 )
+ DelOld( &draw_right, P );
+ P = Q;
+ }
+ }
+
+ /* for gray-scaling, flush the bitmap scanline cache */
+ while ( y <= max_Y )
+ {
+ ras.Proc_Sweep_Step( RAS_VAR );
+ y++;
+ }
+
+ return SUCCESS;
+
+ Scan_DropOuts:
+
+ P_Left = draw_left;
+ P_Right = draw_right;
+
+ while ( P_Left && P_Right )
+ {
+ if ( P_Left->countL )
+ {
+ P_Left->countL = 0;
+#if 0
+ dropouts--; /* -- this is useful when debugging only */
+#endif
+ ras.Proc_Sweep_Drop( RAS_VARS y,
+ P_Left->X,
+ P_Right->X,
+ P_Left,
+ P_Right );
+ }
+
+ P_Left = P_Left->link;
+ P_Right = P_Right->link;
+ }
+
+ goto Next_Line;
+ }
+
+
+#ifdef STANDALONE_
+
+ /**************************************************************************
+ *
+ * The following functions should only compile in stand-alone mode,
+ * i.e., when building this component without the rest of FreeType.
+ *
+ */
+
+ /**************************************************************************
+ *
+ * @Function:
+ * FT_Outline_Get_CBox
+ *
+ * @Description:
+ * Return an outline's `control box'. The control box encloses all
+ * the outline's points, including Bézier control points. Though it
+ * coincides with the exact bounding box for most glyphs, it can be
+ * slightly larger in some situations (like when rotating an outline
+ * that contains Bézier outside arcs).
+ *
+ * Computing the control box is very fast, while getting the bounding
+ * box can take much more time as it needs to walk over all segments
+ * and arcs in the outline. To get the latter, you can use the
+ * `ftbbox' component, which is dedicated to this single task.
+ *
+ * @Input:
+ * outline ::
+ * A pointer to the source outline descriptor.
+ *
+ * @Output:
+ * acbox ::
+ * The outline's control box.
+ *
+ * @Note:
+ * See @FT_Glyph_Get_CBox for a discussion of tricky fonts.
+ */
+
+ static void
+ FT_Outline_Get_CBox( const FT_Outline* outline,
+ FT_BBox *acbox )
+ {
+ if ( outline && acbox )
+ {
+ Long xMin, yMin, xMax, yMax;
+
+
+ if ( outline->n_points == 0 )
+ {
+ xMin = 0;
+ yMin = 0;
+ xMax = 0;
+ yMax = 0;
+ }
+ else
+ {
+ FT_Vector* vec = outline->points;
+ FT_Vector* limit = vec + outline->n_points;
+
+
+ xMin = xMax = vec->x;
+ yMin = yMax = vec->y;
+ vec++;
+
+ for ( ; vec < limit; vec++ )
+ {
+ Long x, y;
+
+
+ x = vec->x;
+ if ( x < xMin ) xMin = x;
+ if ( x > xMax ) xMax = x;
+
+ y = vec->y;
+ if ( y < yMin ) yMin = y;
+ if ( y > yMax ) yMax = y;
+ }
+ }
+ acbox->xMin = xMin;
+ acbox->xMax = xMax;
+ acbox->yMin = yMin;
+ acbox->yMax = yMax;
}
}
+#endif /* STANDALONE_ */
+
/**************************************************************************
*
@@ -2458,15 +3019,13 @@
Int band_stack[32]; /* enough to bisect 32-bit int bands */
- FT_TRACE6(( "%s pass [%d..%d]\n",
- flipped ? "Horizontal" : "Vertical",
- y_min, y_max ));
-
while ( 1 )
{
ras.minY = (Long)y_min * ras.precision;
ras.maxY = (Long)y_max * ras.precision;
+ ras.top = ras.buff;
+
ras.error = Raster_Err_Ok;
if ( Convert_Glyph( RAS_VARS flipped ) )
@@ -2479,9 +3038,6 @@
if ( y_min == y_max )
return ras.error; /* still Raster_Overflow */
- 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;
@@ -2489,12 +3045,9 @@
}
else
{
- FT_TRACE6(( "band [%d..%d]: %hd profiles; %td bytes remaining\n",
- y_min, y_max, ras.num_Profs,
- (char*)ras.maxBuff - (char*)ras.top ));
-
if ( ras.fProfile )
- Draw_Sweep( RAS_VAR );
+ if ( Draw_Sweep( RAS_VAR ) )
+ return ras.error;
if ( --band_top < 0 )
break;
@@ -2523,48 +3076,53 @@
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 );
- ras.dropOutControl = 0;
-
if ( ras.outline.flags & FT_OUTLINE_IGNORE_DROPOUTS )
- ras.dropOutControl |= 2;
+ ras.dropOutControl = 2;
+ else
+ {
+ if ( ras.outline.flags & FT_OUTLINE_SMART_DROPOUTS )
+ ras.dropOutControl = 4;
+ else
+ ras.dropOutControl = 0;
- if ( ras.outline.flags & FT_OUTLINE_SMART_DROPOUTS )
- ras.dropOutControl |= 4;
-
- if ( !( ras.outline.flags & FT_OUTLINE_INCLUDE_STUBS ) )
- ras.dropOutControl |= 1;
-
- FT_TRACE6(( "BW Raster: precision 1/%d, dropout mode %d\n",
- ras.precision, ras.dropOutControl ));
+ if ( !( ras.outline.flags & FT_OUTLINE_INCLUDE_STUBS ) )
+ ras.dropOutControl += 1;
+ }
/* Vertical Sweep */
+ FT_TRACE7(( "Vertical pass (ftraster)\n" ));
+
ras.Proc_Sweep_Init = Vertical_Sweep_Init;
ras.Proc_Sweep_Span = Vertical_Sweep_Span;
ras.Proc_Sweep_Drop = Vertical_Sweep_Drop;
ras.Proc_Sweep_Step = Vertical_Sweep_Step;
- error = Render_Single_Pass( RAS_VARS 0, 0, ras.bTop );
+ ras.bWidth = (UShort)ras.target.width;
+ ras.bOrigin = (Byte*)ras.target.buffer;
+
+ if ( ras.target.pitch > 0 )
+ ras.bOrigin += (Long)( ras.target.rows - 1 ) * ras.target.pitch;
+
+ error = Render_Single_Pass( RAS_VARS 0, 0, (Int)ras.target.rows - 1 );
if ( error )
return error;
/* Horizontal Sweep */
if ( !( ras.outline.flags & FT_OUTLINE_SINGLE_PASS ) )
{
+ FT_TRACE7(( "Horizontal pass (ftraster)\n" ));
+
ras.Proc_Sweep_Init = Horizontal_Sweep_Init;
ras.Proc_Sweep_Span = Horizontal_Sweep_Span;
ras.Proc_Sweep_Drop = Horizontal_Sweep_Drop;
ras.Proc_Sweep_Step = Horizontal_Sweep_Step;
- error = Render_Single_Pass( RAS_VARS 1, 0, ras.bRight );
+ error = Render_Single_Pass( RAS_VARS 1, 0, (Int)ras.target.width - 1 );
if ( error )
return error;
}
@@ -2675,6 +3233,8 @@
black_TWorker worker[1];
#endif
+ Long buffer[FT_MAX_BLACK_POOL];
+
if ( !raster )
return FT_THROW( Raster_Uninitialized );
@@ -2683,7 +3243,7 @@
return FT_THROW( Invalid_Outline );
/* return immediately if the outline is empty */
- if ( outline->n_points == 0 || outline->n_contours == 0 )
+ if ( outline->n_points == 0 || outline->n_contours <= 0 )
return Raster_Err_Ok;
if ( !outline->contours || !outline->points )
@@ -2709,14 +3269,10 @@
return FT_THROW( Invalid_Argument );
ras.outline = *outline;
+ ras.target = *target_map;
- ras.bTop = (Int)target_map->rows - 1;
- ras.bRight = (Int)target_map->width - 1;
- ras.bPitch = (Int)target_map->pitch;
- ras.bOrigin = (PByte)target_map->buffer;
-
- if ( ras.bPitch > 0 )
- ras.bOrigin += ras.bTop * ras.bPitch;
+ ras.buff = buffer;
+ ras.sizeBuff = (&buffer)[1]; /* Points to right after buffer. */
return Render_Glyph( RAS_VAR );
}
diff --git a/src/raster/ftraster.h b/src/raster/ftraster.h
index ad9cb1b..b511b3a 100644
--- a/src/raster/ftraster.h
+++ b/src/raster/ftraster.h
@@ -4,7 +4,7 @@
*
* The FreeType glyph rasterizer (specification).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used
diff --git a/src/raster/ftrend1.c b/src/raster/ftrend1.c
index fd9f174..6d442b1 100644
--- a/src/raster/ftrend1.c
+++ b/src/raster/ftrend1.c
@@ -4,7 +4,7 @@
*
* The FreeType glyph rasterizer interface (body).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/raster/ftrend1.h b/src/raster/ftrend1.h
index cf3e73c..cec35c8 100644
--- a/src/raster/ftrend1.h
+++ b/src/raster/ftrend1.h
@@ -4,7 +4,7 @@
*
* The FreeType glyph rasterizer interface (specification).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/raster/module.mk b/src/raster/module.mk
index 2e322ad..6ad1aa7 100644
--- a/src/raster/module.mk
+++ b/src/raster/module.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 1996-2024 by
+# Copyright (C) 1996-2023 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/src/raster/raster.c b/src/raster/raster.c
index fe33af2..82f4745 100644
--- a/src/raster/raster.c
+++ b/src/raster/raster.c
@@ -4,7 +4,7 @@
*
* FreeType monochrome rasterer module component (body only).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/raster/rasterrs.h b/src/raster/rasterrs.h
index 326d42e..989d8b4 100644
--- a/src/raster/rasterrs.h
+++ b/src/raster/rasterrs.h
@@ -4,7 +4,7 @@
*
* monochrome renderer error codes (specification only).
*
- * Copyright (C) 2001-2024 by
+ * Copyright (C) 2001-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/raster/rules.mk b/src/raster/rules.mk
index 8fea097..031b85f 100644
--- a/src/raster/rules.mk
+++ b/src/raster/rules.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 1996-2024 by
+# Copyright (C) 1996-2023 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/src/sdf/ftbsdf.c b/src/sdf/ftbsdf.c
index adde05b..e472738 100644
--- a/src/sdf/ftbsdf.c
+++ b/src/sdf/ftbsdf.c
@@ -4,7 +4,7 @@
*
* Signed Distance Field support for bitmap fonts (body only).
*
- * Copyright (C) 2020-2024 by
+ * Copyright (C) 2020-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* Written by Anuj Verma.
diff --git a/src/sdf/ftsdf.c b/src/sdf/ftsdf.c
index dc55d42..bc4625d 100644
--- a/src/sdf/ftsdf.c
+++ b/src/sdf/ftsdf.c
@@ -4,7 +4,7 @@
*
* Signed Distance Field support for outline fonts (body).
*
- * Copyright (C) 2020-2024 by
+ * Copyright (C) 2020-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* Written by Anuj Verma.
@@ -3837,7 +3837,7 @@
}
/* if the outline is empty, return */
- if ( outline->n_points == 0 || outline->n_contours == 0 )
+ if ( outline->n_points <= 0 || outline->n_contours <= 0 )
goto Exit;
/* check whether the outline has valid fields */
diff --git a/src/sdf/ftsdf.h b/src/sdf/ftsdf.h
index 25a0a13..234c075 100644
--- a/src/sdf/ftsdf.h
+++ b/src/sdf/ftsdf.h
@@ -4,7 +4,7 @@
*
* Signed Distance Field support (specification).
*
- * Copyright (C) 2020-2024 by
+ * Copyright (C) 2020-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* Written by Anuj Verma.
diff --git a/src/sdf/ftsdfcommon.c b/src/sdf/ftsdfcommon.c
index 6b2cf7d..5052201 100644
--- a/src/sdf/ftsdfcommon.c
+++ b/src/sdf/ftsdfcommon.c
@@ -4,7 +4,7 @@
*
* Auxiliary data for Signed Distance Field support (body).
*
- * Copyright (C) 2020-2024 by
+ * Copyright (C) 2020-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* Written by Anuj Verma.
@@ -24,6 +24,49 @@
/**************************************************************************
*
+ * common functions
+ *
+ */
+
+ /*
+ * Original algorithm:
+ *
+ * https://github.com/chmike/fpsqrt
+ *
+ * Use this to compute the square root of a 16.16 fixed-point number.
+ */
+ FT_LOCAL_DEF( FT_16D16 )
+ square_root( FT_16D16 val )
+ {
+ FT_ULong t, q, b, r;
+
+
+ r = (FT_ULong)val;
+ b = 0x40000000L;
+ q = 0;
+
+ while ( b > 0x40L )
+ {
+ t = q + b;
+
+ if ( r >= t )
+ {
+ r -= t;
+ q = t + b;
+ }
+
+ r <<= 1;
+ b >>= 1;
+ }
+
+ q >>= 8;
+
+ return (FT_16D16)q;
+ }
+
+
+ /**************************************************************************
+ *
* format and sign manipulating functions
*
*/
diff --git a/src/sdf/ftsdfcommon.h b/src/sdf/ftsdfcommon.h
index d0f623f..60ca977 100644
--- a/src/sdf/ftsdfcommon.h
+++ b/src/sdf/ftsdfcommon.h
@@ -4,7 +4,7 @@
*
* Auxiliary data for Signed Distance Field support (specification).
*
- * Copyright (C) 2020-2024 by
+ * Copyright (C) 2020-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* Written by Anuj Verma.
@@ -122,7 +122,8 @@
typedef FT_BBox FT_CBox; /* control box of a curve */
-#define square_root( x ) (FT_16D16)FT_SqrtFixed( (FT_UInt32)( x ) )
+ FT_LOCAL( FT_16D16 )
+ square_root( FT_16D16 val );
FT_LOCAL( FT_SDFFormat )
map_fixed_to_sdf( FT_16D16 dist,
diff --git a/src/sdf/ftsdferrs.h b/src/sdf/ftsdferrs.h
index 5af873f..519db0f 100644
--- a/src/sdf/ftsdferrs.h
+++ b/src/sdf/ftsdferrs.h
@@ -4,7 +4,7 @@
*
* Signed Distance Field error codes (specification only).
*
- * Copyright (C) 2020-2024 by
+ * Copyright (C) 2020-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* Written by Anuj Verma.
diff --git a/src/sdf/ftsdfrend.c b/src/sdf/ftsdfrend.c
index d332467..5610c11 100644
--- a/src/sdf/ftsdfrend.c
+++ b/src/sdf/ftsdfrend.c
@@ -4,7 +4,7 @@
*
* Signed Distance Field renderer interface (body).
*
- * Copyright (C) 2020-2024 by
+ * Copyright (C) 2020-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* Written by Anuj Verma.
diff --git a/src/sdf/ftsdfrend.h b/src/sdf/ftsdfrend.h
index 2ea6f86..571ac83 100644
--- a/src/sdf/ftsdfrend.h
+++ b/src/sdf/ftsdfrend.h
@@ -4,7 +4,7 @@
*
* Signed Distance Field renderer interface (specification).
*
- * Copyright (C) 2020-2024 by
+ * Copyright (C) 2020-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* Written by Anuj Verma.
diff --git a/src/sdf/module.mk b/src/sdf/module.mk
index b3b842a..e896d20 100644
--- a/src/sdf/module.mk
+++ b/src/sdf/module.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 2020-2024 by
+# Copyright (C) 2020-2023 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/src/sdf/rules.mk b/src/sdf/rules.mk
index 250b985..d774241 100644
--- a/src/sdf/rules.mk
+++ b/src/sdf/rules.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 2020-2024 by
+# Copyright (C) 2020-2023 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/src/sdf/sdf.c b/src/sdf/sdf.c
index 6045b83..c159b08 100644
--- a/src/sdf/sdf.c
+++ b/src/sdf/sdf.c
@@ -4,7 +4,7 @@
*
* FreeType Signed Distance Field renderer module component (body only).
*
- * Copyright (C) 2020-2024 by
+ * Copyright (C) 2020-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* Written by Anuj Verma.
diff --git a/src/sfnt/module.mk b/src/sfnt/module.mk
index 0818bfb..4491a1b 100644
--- a/src/sfnt/module.mk
+++ b/src/sfnt/module.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 1996-2024 by
+# Copyright (C) 1996-2023 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/src/sfnt/pngshim.c b/src/sfnt/pngshim.c
index 7618156..3371216 100644
--- a/src/sfnt/pngshim.c
+++ b/src/sfnt/pngshim.c
@@ -4,7 +4,7 @@
*
* PNG Bitmap glyph support.
*
- * Copyright (C) 2013-2024 by
+ * Copyright (C) 2013-2023 by
* Google, Inc.
* Written by Stuart Gill and Behdad Esfahbod.
*
diff --git a/src/sfnt/pngshim.h b/src/sfnt/pngshim.h
index 6e7a5c0..903bd2b 100644
--- a/src/sfnt/pngshim.h
+++ b/src/sfnt/pngshim.h
@@ -4,7 +4,7 @@
*
* PNG Bitmap glyph support.
*
- * Copyright (C) 2013-2024 by
+ * Copyright (C) 2013-2023 by
* Google, Inc.
* Written by Stuart Gill and Behdad Esfahbod.
*
diff --git a/src/sfnt/rules.mk b/src/sfnt/rules.mk
index 2e03ddd..4d2d7e8 100644
--- a/src/sfnt/rules.mk
+++ b/src/sfnt/rules.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 1996-2024 by
+# Copyright (C) 1996-2023 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
@@ -38,7 +38,6 @@
$(SFNT_DIR)/ttcolr.c \
$(SFNT_DIR)/ttsvg.c \
$(SFNT_DIR)/ttcpal.c \
- $(SFNT_DIR)/ttgpos.c \
$(SFNT_DIR)/ttkern.c \
$(SFNT_DIR)/ttload.c \
$(SFNT_DIR)/ttmtx.c \
diff --git a/src/sfnt/sfdriver.c b/src/sfnt/sfdriver.c
index 8107220..0925940 100644
--- a/src/sfnt/sfdriver.c
+++ b/src/sfnt/sfdriver.c
@@ -4,7 +4,7 @@
*
* High-level SFNT driver interface (body).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -49,10 +49,6 @@
#include <freetype/internal/services/svbdf.h>
#endif
-#ifdef TT_CONFIG_OPTION_GPOS_KERNING
-#include "ttgpos.h"
-#endif
-
#include "ttcmap.h"
#include "ttkern.h"
#include "ttmtx.h"
@@ -1255,12 +1251,6 @@
#define PUT_PS_NAMES( a ) NULL
#endif
-#ifdef TT_CONFIG_OPTION_GPOS_KERNING
-#define PUT_GPOS_KERNING( a ) a
-#else
-#define PUT_GPOS_KERNING( a ) NULL
-#endif
-
FT_DEFINE_SFNT_INTERFACE(
sfnt_interface,
@@ -1284,8 +1274,6 @@
tt_face_free_name, /* TT_Free_Table_Func free_name */
tt_face_load_kern, /* TT_Load_Table_Func load_kern */
- PUT_GPOS_KERNING( tt_face_load_gpos ),
- /* TT_Load_Table_Func load_gpos */
tt_face_load_gasp, /* TT_Load_Table_Func load_gasp */
tt_face_load_pclt, /* TT_Load_Table_Func load_init */
@@ -1304,9 +1292,6 @@
/* since version 2.1.8 */
tt_face_get_kerning, /* TT_Face_GetKerningFunc get_kerning */
- PUT_GPOS_KERNING( tt_face_get_gpos_kerning ),
- /* TT_Face_GetKerningFunc get_gpos_kerning */
-
/* since version 2.2 */
tt_face_load_font_dir, /* TT_Load_Table_Func load_font_dir */
tt_face_load_hmtx, /* TT_Load_Metrics_Func load_hmtx */
diff --git a/src/sfnt/sfdriver.h b/src/sfnt/sfdriver.h
index 6f71489..2445958 100644
--- a/src/sfnt/sfdriver.h
+++ b/src/sfnt/sfdriver.h
@@ -4,7 +4,7 @@
*
* High-level SFNT driver interface (specification).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/sfnt/sferrors.h b/src/sfnt/sferrors.h
index d3ca1d9..e7a8eb0 100644
--- a/src/sfnt/sferrors.h
+++ b/src/sfnt/sferrors.h
@@ -4,7 +4,7 @@
*
* SFNT error codes (specification only).
*
- * Copyright (C) 2001-2024 by
+ * Copyright (C) 2001-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/sfnt/sfnt.c b/src/sfnt/sfnt.c
index 52411fe..8e4f08a 100644
--- a/src/sfnt/sfnt.c
+++ b/src/sfnt/sfnt.c
@@ -4,7 +4,7 @@
*
* Single object library component.
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -29,7 +29,6 @@
#include "ttcpal.c"
#include "ttsvg.c"
-#include "ttgpos.c"
#include "ttkern.c"
#include "ttload.c"
#include "ttmtx.c"
diff --git a/src/sfnt/sfobjs.c b/src/sfnt/sfobjs.c
index 6ee4e5e..f5d66ef 100644
--- a/src/sfnt/sfobjs.c
+++ b/src/sfnt/sfobjs.c
@@ -4,7 +4,7 @@
*
* SFNT object management (base).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -40,10 +40,6 @@
#include "ttbdf.h"
#endif
-#ifdef TT_CONFIG_OPTION_GPOS_KERNING
-#include "ttgpos.h"
-#endif
-
/**************************************************************************
*
@@ -1030,10 +1026,6 @@
LOAD_( gasp );
LOAD_( kern );
-#ifdef TT_CONFIG_OPTION_GPOS_KERNING
- LOAD_( gpos );
-#endif
-
face->root.num_glyphs = face->max_profile.numGlyphs;
/* Bit 8 of the `fsSelection' field in the `OS/2' table denotes */
@@ -1127,11 +1119,7 @@
flags |= FT_FACE_FLAG_VERTICAL;
/* kerning available ? */
- if ( TT_FACE_HAS_KERNING( face )
-#ifdef TT_CONFIG_OPTION_GPOS_KERNING
- || face->gpos_kerning_available
-#endif
- )
+ if ( TT_FACE_HAS_KERNING( face ) )
flags |= FT_FACE_FLAG_KERNING;
#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
@@ -1482,11 +1470,6 @@
/* freeing the kerning table */
tt_face_done_kern( face );
-#ifdef TT_CONFIG_OPTION_GPOS_KERNING
- /* freeing the GPOS table */
- tt_face_done_gpos( face );
-#endif
-
/* freeing the collection table */
FT_FREE( face->ttc_header.offsets );
face->ttc_header.count = 0;
diff --git a/src/sfnt/sfobjs.h b/src/sfnt/sfobjs.h
index 90847d9..906aebb 100644
--- a/src/sfnt/sfobjs.h
+++ b/src/sfnt/sfobjs.h
@@ -4,7 +4,7 @@
*
* SFNT object management (specification).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/sfnt/sfwoff.c b/src/sfnt/sfwoff.c
index 14514bf..7c0ce22 100644
--- a/src/sfnt/sfwoff.c
+++ b/src/sfnt/sfwoff.c
@@ -4,7 +4,7 @@
*
* WOFF format management (base).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -18,7 +18,6 @@
#include "sfwoff.h"
#include <freetype/tttags.h>
-#include <freetype/internal/ftcalc.h>
#include <freetype/internal/ftdebug.h>
#include <freetype/internal/ftstream.h>
#include <freetype/ftgzip.h>
@@ -150,7 +149,6 @@
/* Miscellaneous checks. */
if ( woff.length != stream->size ||
woff.num_tables == 0 ||
- woff.num_tables > 0xFFFU ||
44 + woff.num_tables * 20UL >= woff.length ||
12 + woff.num_tables * 16UL >= woff.totalSfntSize ||
( woff.totalSfntSize & 3 ) != 0 ||
@@ -171,11 +169,21 @@
/* Write sfnt header. */
{
- FT_Int entrySelector = FT_MSB( woff.num_tables );
- FT_Int searchRange = ( 1 << entrySelector ) * 16;
- FT_Int rangeShift = woff.num_tables * 16 - searchRange;
+ FT_UInt searchRange, entrySelector, rangeShift, x;
+ x = woff.num_tables;
+ entrySelector = 0;
+ while ( x )
+ {
+ x >>= 1;
+ entrySelector += 1;
+ }
+ entrySelector--;
+
+ searchRange = ( 1 << entrySelector ) * 16;
+ rangeShift = woff.num_tables * 16 - searchRange;
+
WRITE_ULONG ( sfnt_header, woff.flavor );
WRITE_USHORT( sfnt_header, woff.num_tables );
WRITE_USHORT( sfnt_header, searchRange );
diff --git a/src/sfnt/sfwoff.h b/src/sfnt/sfwoff.h
index a04735f..d438422 100644
--- a/src/sfnt/sfwoff.h
+++ b/src/sfnt/sfwoff.h
@@ -4,7 +4,7 @@
*
* WOFFF format management (specification).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/sfnt/sfwoff2.c b/src/sfnt/sfwoff2.c
index 589b3e0..2be44a3 100644
--- a/src/sfnt/sfwoff2.c
+++ b/src/sfnt/sfwoff2.c
@@ -4,7 +4,7 @@
*
* WOFF2 format management (base).
*
- * Copyright (C) 2019-2024 by
+ * Copyright (C) 2019-2023 by
* Nikhil Ramakrishnan, David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -18,7 +18,6 @@
#include "sfwoff2.h"
#include "woff2tags.h"
#include <freetype/tttags.h>
-#include <freetype/internal/ftcalc.h>
#include <freetype/internal/ftdebug.h>
#include <freetype/internal/ftstream.h>
@@ -290,15 +289,23 @@
FT_ULong checksum = 0;
FT_ULong aligned_size = size & ~3UL;
FT_ULong i;
- FT_Int shift;
+ FT_ULong v;
for ( i = 0; i < aligned_size; i += 4 )
- checksum += FT_NEXT_ULONG( buf );
+ checksum += ( (FT_ULong)buf[i ] << 24 ) |
+ ( (FT_ULong)buf[i + 1] << 16 ) |
+ ( (FT_ULong)buf[i + 2] << 8 ) |
+ ( (FT_ULong)buf[i + 3] << 0 );
- /* remaining bytes can be shifted and added one at a time */
- for ( shift = 24; i < size; i++, shift -= 8 )
- checksum += (FT_UInt32)FT_NEXT_BYTE( buf ) << shift;
+ /* If size is not aligned to 4, treat as if it is padded with 0s. */
+ if ( size != aligned_size )
+ {
+ v = 0;
+ for ( i = aligned_size ; i < size; ++i )
+ v |= (FT_ULong)buf[i] << ( 24 - 8 * ( i & 3 ) );
+ checksum += v;
+ }
return checksum;
}
@@ -1792,6 +1799,7 @@
FT_Byte* sfnt = NULL;
FT_Stream sfnt_stream = NULL;
+ FT_Byte* sfnt_header;
FT_ULong sfnt_size;
FT_Byte* uncompressed_buf = NULL;
@@ -1845,7 +1853,6 @@
/* Miscellaneous checks. */
if ( woff2.length != stream->size ||
woff2.num_tables == 0 ||
- woff2.num_tables > 0xFFFU ||
48 + woff2.num_tables * 20UL >= woff2.length ||
( woff2.metaOffset == 0 && ( woff2.metaLength != 0 ||
woff2.metaOrigLength != 0 ) ) ||
@@ -2136,13 +2143,6 @@
WOFF2_TtcFont ttc_font = woff2.ttc_fonts + face_index;
- if ( ttc_font->num_tables == 0 || ttc_font->num_tables > 0xFFFU )
- {
- FT_ERROR(( "woff2_open_font: invalid WOFF2 CollectionFontEntry\n" ));
- error = FT_THROW( Invalid_Table );
- goto Exit;
- }
-
/* Create a temporary array. */
if ( FT_QNEW_ARRAY( temp_indices,
ttc_font->num_tables ) )
@@ -2198,15 +2198,27 @@
FT_NEW( sfnt_stream ) )
goto Exit;
+ sfnt_header = sfnt;
+
+ WRITE_ULONG( sfnt_header, woff2.flavor );
+
+ if ( woff2.num_tables )
{
- FT_Byte* sfnt_header = sfnt;
-
- FT_Int entrySelector = FT_MSB( woff2.num_tables );
- FT_Int searchRange = ( 1 << entrySelector ) * 16;
- FT_Int rangeShift = woff2.num_tables * 16 - searchRange;
+ FT_UInt searchRange, entrySelector, rangeShift, x;
- WRITE_ULONG ( sfnt_header, woff2.flavor );
+ x = woff2.num_tables;
+ entrySelector = 0;
+ while ( x )
+ {
+ x >>= 1;
+ entrySelector += 1;
+ }
+ entrySelector--;
+
+ searchRange = ( 1 << entrySelector ) * 16;
+ rangeShift = ( woff2.num_tables * 16 ) - searchRange;
+
WRITE_USHORT( sfnt_header, woff2.num_tables );
WRITE_USHORT( sfnt_header, searchRange );
WRITE_USHORT( sfnt_header, entrySelector );
diff --git a/src/sfnt/sfwoff2.h b/src/sfnt/sfwoff2.h
index f411406..4901286 100644
--- a/src/sfnt/sfwoff2.h
+++ b/src/sfnt/sfwoff2.h
@@ -4,7 +4,7 @@
*
* WOFFF2 format management (specification).
*
- * Copyright (C) 2019-2024 by
+ * Copyright (C) 2019-2023 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/src/sfnt/ttbdf.c b/src/sfnt/ttbdf.c
index d9765f4..536fa74 100644
--- a/src/sfnt/ttbdf.c
+++ b/src/sfnt/ttbdf.c
@@ -4,7 +4,7 @@
*
* TrueType and OpenType embedded BDF properties (body).
*
- * Copyright (C) 2005-2024 by
+ * Copyright (C) 2005-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -142,7 +142,7 @@
{
TT_Face ttface = (TT_Face)face;
TT_BDF bdf = &ttface->bdf;
- FT_Size size = face->size;
+ FT_Size size = FT_FACE_SIZE( face );
FT_Error error = FT_Err_Ok;
FT_Byte* p;
FT_UInt count;
diff --git a/src/sfnt/ttbdf.h b/src/sfnt/ttbdf.h
index d8d722b..0d7a0ac 100644
--- a/src/sfnt/ttbdf.h
+++ b/src/sfnt/ttbdf.h
@@ -4,7 +4,7 @@
*
* TrueType and OpenType embedded BDF properties (specification).
*
- * Copyright (C) 2005-2024 by
+ * Copyright (C) 2005-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/sfnt/ttcmap.c b/src/sfnt/ttcmap.c
index 28f4d11..9ba25dc 100644
--- a/src/sfnt/ttcmap.c
+++ b/src/sfnt/ttcmap.c
@@ -4,7 +4,7 @@
*
* TrueType character mapping table (cmap) support (body).
*
- * Copyright (C) 2002-2024 by
+ * Copyright (C) 2002-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/sfnt/ttcmap.h b/src/sfnt/ttcmap.h
index e2c5e72..ff52917 100644
--- a/src/sfnt/ttcmap.h
+++ b/src/sfnt/ttcmap.h
@@ -4,7 +4,7 @@
*
* TrueType character mapping table (cmap) support (specification).
*
- * Copyright (C) 2002-2024 by
+ * Copyright (C) 2002-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/sfnt/ttcmapc.h b/src/sfnt/ttcmapc.h
index 3708983..0af48c2 100644
--- a/src/sfnt/ttcmapc.h
+++ b/src/sfnt/ttcmapc.h
@@ -4,7 +4,7 @@
*
* TT CMAP classes definitions (specification only).
*
- * Copyright (C) 2009-2024 by
+ * Copyright (C) 2009-2023 by
* Oran Agra and Mickey Gabel.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/sfnt/ttcolr.c b/src/sfnt/ttcolr.c
index b37658d..281e713 100644
--- a/src/sfnt/ttcolr.c
+++ b/src/sfnt/ttcolr.c
@@ -4,7 +4,7 @@
*
* TrueType and OpenType colored glyph layer support (body).
*
- * Copyright (C) 2018-2024 by
+ * Copyright (C) 2018-2023 by
* David Turner, Robert Wilhelm, Dominik Röttsches, and Werner Lemberg.
*
* Originally written by Shao Yu Zhang <shaozhang@fb.com>.
@@ -208,19 +208,18 @@
colr->num_base_glyphs = FT_NEXT_USHORT( p );
base_glyph_offset = FT_NEXT_ULONG( p );
- if ( table_size <= base_glyph_offset )
+ if ( base_glyph_offset >= table_size )
goto InvalidTable;
- if ( ( table_size - base_glyph_offset ) / BASE_GLYPH_SIZE
- < colr->num_base_glyphs )
+ if ( colr->num_base_glyphs * BASE_GLYPH_SIZE >
+ table_size - base_glyph_offset )
goto InvalidTable;
layer_offset = FT_NEXT_ULONG( p );
colr->num_layers = FT_NEXT_USHORT( p );
- if ( table_size <= layer_offset )
+ if ( layer_offset >= table_size )
goto InvalidTable;
- if ( ( table_size - layer_offset ) / LAYER_SIZE
- < colr->num_layers )
+ if ( colr->num_layers * LAYER_SIZE > table_size - layer_offset )
goto InvalidTable;
if ( colr->version == 1 )
@@ -230,14 +229,14 @@
base_glyphs_offset_v1 = FT_NEXT_ULONG( p );
- if ( table_size - 4 <= base_glyphs_offset_v1 )
+ if ( base_glyphs_offset_v1 >= table_size - 4 )
goto InvalidTable;
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 )
+ if ( num_base_glyphs_v1 * BASE_GLYPH_PAINT_RECORD_SIZE >
+ table_size - base_glyphs_offset_v1 )
goto InvalidTable;
colr->num_base_glyphs_v1 = num_base_glyphs_v1;
@@ -245,19 +244,19 @@
layer_offset_v1 = FT_NEXT_ULONG( p );
- if ( table_size <= layer_offset_v1 )
+ if ( layer_offset_v1 >= table_size )
goto InvalidTable;
if ( layer_offset_v1 )
{
- if ( table_size - 4 <= layer_offset_v1 )
+ if ( layer_offset_v1 >= table_size - 4 )
goto InvalidTable;
p1 = (FT_Byte*)( table + layer_offset_v1 );
num_layers_v1 = FT_PEEK_ULONG( p1 );
- if ( ( table_size - layer_offset_v1 ) / LAYER_V1_LIST_PAINT_OFFSET_SIZE
- < num_layers_v1 )
+ if ( num_layers_v1 * LAYER_V1_LIST_PAINT_OFFSET_SIZE >
+ table_size - layer_offset_v1 )
goto InvalidTable;
colr->num_layers_v1 = num_layers_v1;
@@ -280,7 +279,7 @@
clip_list_offset = FT_NEXT_ULONG( p );
- if ( table_size <= clip_list_offset )
+ if ( clip_list_offset >= table_size )
goto InvalidTable;
if ( clip_list_offset )
@@ -312,7 +311,7 @@
goto InvalidTable;
var_store_offset = FT_NEXT_ULONG( p );
- if ( table_size <= var_store_offset )
+ if ( var_store_offset >= table_size )
goto InvalidTable;
if ( var_store_offset )
@@ -662,7 +661,6 @@
FT_UInt32 first_layer_index;
- ENSURE_READ_BYTES( 5 );
num_layers = FT_NEXT_BYTE( p );
if ( num_layers > colr->num_layers_v1 )
return 0;
@@ -1280,8 +1278,7 @@
while ( min < max )
{
- FT_UInt mid = min + ( max - min ) / 2;
- FT_UShort gid;
+ FT_UInt mid = min + ( max - min ) / 2;
/*
* `base_glyph_begin` is the beginning of `BaseGlyphV1List`;
@@ -1290,7 +1287,8 @@
*/
FT_Byte *p = base_glyph_begin + 4 + mid * BASE_GLYPH_PAINT_RECORD_SIZE;
- gid = FT_NEXT_USHORT( p );
+ FT_UShort gid = FT_NEXT_USHORT( p );
+
if ( gid < glyph_id )
min = mid + 1;
diff --git a/src/sfnt/ttcolr.h b/src/sfnt/ttcolr.h
index 3003146..20c85f0 100644
--- a/src/sfnt/ttcolr.h
+++ b/src/sfnt/ttcolr.h
@@ -4,7 +4,7 @@
*
* TrueType and OpenType colored glyph layer support (specification).
*
- * Copyright (C) 2018-2024 by
+ * Copyright (C) 2018-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* Originally written by Shao Yu Zhang <shaozhang@fb.com>.
diff --git a/src/sfnt/ttcpal.c b/src/sfnt/ttcpal.c
index 997eb86..46ae085 100644
--- a/src/sfnt/ttcpal.c
+++ b/src/sfnt/ttcpal.c
@@ -4,7 +4,7 @@
*
* TrueType and OpenType color palette support (body).
*
- * Copyright (C) 2018-2024 by
+ * Copyright (C) 2018-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* Originally written by Shao Yu Zhang <shaozhang@fb.com>.
diff --git a/src/sfnt/ttcpal.h b/src/sfnt/ttcpal.h
index bb301ae..8e9913f 100644
--- a/src/sfnt/ttcpal.h
+++ b/src/sfnt/ttcpal.h
@@ -4,7 +4,7 @@
*
* TrueType and OpenType color palette support (specification).
*
- * Copyright (C) 2018-2024 by
+ * Copyright (C) 2018-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* Originally written by Shao Yu Zhang <shaozhang@fb.com>.
diff --git a/src/sfnt/ttgpos.c b/src/sfnt/ttgpos.c
deleted file mode 100644
index b6cd8bf..0000000
--- a/src/sfnt/ttgpos.c
+++ /dev/null
@@ -1,598 +0,0 @@
-/****************************************************************************
- *
- * ttgpos.c
- *
- * Load the TrueType GPOS table. The only GPOS layout feature this
- * currently supports is kerning, from x advances in the pair adjustment
- * layout feature.
- *
- * Parts of the implementation were adapted from:
- * https://github.com/nothings/stb/blob/master/stb_truetype.h
- *
- * GPOS spec reference available at:
- * https://learn.microsoft.com/en-us/typography/opentype/spec/gpos
- *
- * Copyright (C) 2024 by
- * David Saltzman
- *
- * This file is part of the FreeType project, and may only be used,
- * modified, and distributed under the terms of the FreeType project
- * license, LICENSE.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 <freetype/internal/ftdebug.h>
-#include <freetype/internal/ftstream.h>
-#include <freetype/tttags.h>
-#include "freetype/fttypes.h"
-#include "freetype/internal/ftobjs.h"
-#include "ttgpos.h"
-
-
-#ifdef TT_CONFIG_OPTION_GPOS_KERNING
-
- /**************************************************************************
- *
- * 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 ttgpos
-
-
- typedef enum coverage_table_format_type_
- {
- COVERAGE_TABLE_FORMAT_LIST = 1,
- COVERAGE_TABLE_FORMAT_RANGE = 2
-
- } coverage_table_format_type;
-
- typedef enum class_def_table_format_type_
- {
- CLASS_DEF_TABLE_FORMAT_ARRAY = 1,
- CLASS_DEF_TABLE_FORMAT_RANGE_GROUPS = 2
-
- } class_def_table_format_type;
-
- typedef enum gpos_lookup_type_
- {
- GPOS_LOOKUP_TYPE_NONE = 0,
- GPOS_LOOKUP_TYPE_SINGLE_ADJUSTMENT = 1,
- GPOS_LOOKUP_TYPE_PAIR_ADJUSTMENT = 2,
- GPOS_LOOKUP_TYPE_CURSIVE_ATTACHMENT = 3,
- GPOS_LOOKUP_TYPE_MARK_TO_BASE_ATTACHMENT = 4,
- GPOS_LOOKUP_TYPE_MARK_TO_LIGATURE_ATTACHMENT = 5,
- GPOS_LOOKUP_TYPE_MARK_TO_MARK_ATTACHMENT = 6,
- GPOS_LOOKUP_TYPE_CONTEXT_POSITIONING = 7,
- GPOS_LOOKUP_TYPE_CHAINED_CONTEXT_POSITIONING = 8,
- GPOS_LOOKUP_TYPE_EXTENSION_POSITIONING = 9
-
- } gpos_lookup_type;
-
- typedef enum gpos_pair_adjustment_format_
- {
- GPOS_PAIR_ADJUSTMENT_FORMAT_GLYPH_PAIR = 1,
- GPOS_PAIR_ADJUSTMENT_FORMAT_CLASS_PAIR = 2
-
- } gpos_pair_adjustment_format;
-
- typedef enum gpos_value_format_bitmask_
- {
- GPOS_VALUE_FORMAT_NONE = 0x0000,
- GPOS_VALUE_FORMAT_X_PLACEMENT = 0x0001,
- GPOS_VALUE_FORMAT_Y_PLACEMENT = 0x0002,
- GPOS_VALUE_FORMAT_X_ADVANCE = 0x0004,
- GPOS_VALUE_FORMAT_Y_ADVANCE = 0x0008,
- GPOS_VALUE_FORMAT_X_PLACEMENT_DEVICE = 0x0010,
- GPOS_VALUE_FORMAT_Y_PLACEMENT_DEVICE = 0x0020,
- GPOS_VALUE_FORMAT_X_ADVANCE_DEVICE = 0x0040,
- GPOS_VALUE_FORMAT_Y_ADVANCE_DEVICE = 0x0080
-
- } gpos_value_format_bitmask;
-
-
- typedef struct TT_GPOS_Subtable_Iterator_Context_
- {
- /* Iteration state. */
- FT_Byte* current_lookup_table;
- gpos_lookup_type current_lookup_type;
- FT_UShort subtable_count;
- FT_Byte* subtable_offsets;
- FT_UInt subtable_idx;
-
- /* Element for the current iteration. */
- FT_Byte* subtable;
- gpos_lookup_type subtable_type;
-
- } TT_GPOS_Subtable_Iterator_Context;
-
-
- /* Initialize a subtable iterator for a given lookup list index. */
- static void
- tt_gpos_subtable_iterator_init(
- TT_GPOS_Subtable_Iterator_Context* context,
- FT_Byte* gpos_table,
- FT_ULong lookup_list_idx )
- {
- FT_Byte* lookup_list = gpos_table + FT_PEEK_USHORT( gpos_table + 8 );
- FT_UInt16 lookup_count = FT_PEEK_USHORT( lookup_list );
-
-
- if ( lookup_list_idx < lookup_count )
- {
- context->current_lookup_table =
- lookup_list + FT_PEEK_USHORT( lookup_list + 2 + 2 * lookup_list_idx );
- context->current_lookup_type =
- (gpos_lookup_type)FT_PEEK_USHORT( context->current_lookup_table );
- context->subtable_count =
- FT_PEEK_USHORT( context->current_lookup_table + 4 );
- context->subtable_offsets = context->current_lookup_table + 6;
- }
- else
- {
- context->current_lookup_table = NULL;
- context->current_lookup_type = GPOS_LOOKUP_TYPE_NONE;
- context->subtable_count = 0;
- context->subtable_offsets = NULL;
- }
-
- context->subtable_idx = 0;
- context->subtable = NULL;
- context->subtable_type = GPOS_LOOKUP_TYPE_NONE;
- }
-
-
- /* Get the next subtable. Return whether there was a next one. */
- static FT_Bool
- tt_gpos_subtable_iterator_next(
- TT_GPOS_Subtable_Iterator_Context* context )
- {
- if ( context->subtable_idx < context->subtable_count )
- {
- FT_UShort subtable_offset =
- FT_PEEK_USHORT( context->subtable_offsets +
- 2 * context->subtable_idx );
-
-
- context->subtable = context->current_lookup_table + subtable_offset;
-
- if ( context->current_lookup_type ==
- GPOS_LOOKUP_TYPE_EXTENSION_POSITIONING )
- {
- /* Update type and subtable based on extension positioning header. */
- context->subtable_type =
- (gpos_lookup_type)FT_PEEK_USHORT( context->subtable + 2 );
- context->subtable += FT_PEEK_ULONG( context->subtable + 4 );
- }
- else
- context->subtable_type = context->current_lookup_type;
-
- context->subtable_idx++;
- return TRUE;
- }
-
- return FALSE;
- }
-
-
- static FT_Int
- tt_gpos_get_coverage_index( FT_Byte *coverage_table,
- FT_UInt glyph )
- {
- coverage_table_format_type coverage_format =
- (coverage_table_format_type)FT_PEEK_USHORT( coverage_table );
-
-
- switch ( coverage_format )
- {
- case COVERAGE_TABLE_FORMAT_LIST:
- {
- FT_UShort glyph_count = FT_PEEK_USHORT( coverage_table + 2 );
-
- FT_Int l = 0;
- FT_Int r = glyph_count - 1;
- FT_Int m;
-
- FT_Int straw;
- FT_Int needle = (FT_Int)glyph;
-
-
- /* Binary search. */
- while ( l <= r )
- {
- FT_Byte *glyph_array = coverage_table + 4;
- FT_UShort glyph_id;
-
-
- m = ( l + r ) >> 1;
- glyph_id = FT_PEEK_USHORT( glyph_array + 2 * m );
- straw = glyph_id;
-
- if ( needle < straw )
- r = m - 1;
- else if ( needle > straw )
- l = m + 1;
- else
- return m;
- }
- break;
- }
-
- case COVERAGE_TABLE_FORMAT_RANGE:
- {
- FT_UShort range_count = FT_PEEK_USHORT( coverage_table + 2 );
- FT_Byte *range_array = coverage_table + 4;
-
- FT_Int l = 0;
- FT_Int r = range_count - 1;
- FT_Int m;
-
- FT_Int straw_start;
- FT_Int straw_end;
- FT_Int needle = (FT_Int)glyph;
-
-
- /* Binary search. */
- while ( l <= r )
- {
- FT_Byte *range_record;
-
-
- m = ( l + r ) >> 1;
- range_record = range_array + 6 * m;
- straw_start = FT_PEEK_USHORT( range_record );
- straw_end = FT_PEEK_USHORT( range_record + 2 );
-
- if ( needle < straw_start )
- r = m - 1;
- else if ( needle > straw_end )
- l = m + 1;
- else
- {
- FT_UShort start_coverage_index =
- FT_PEEK_USHORT( range_record + 4 );
-
-
- return (FT_Int)start_coverage_index + (FT_Int)glyph - straw_start;
- }
- }
- break;
- }
- }
-
- return -1;
- }
-
-
- static FT_Int
- tt_gpos_get_glyph_class( FT_Byte *class_def_table,
- FT_UInt glyph )
- {
- class_def_table_format_type class_def_format =
- (class_def_table_format_type)FT_PEEK_USHORT( class_def_table );
-
-
- switch ( class_def_format )
- {
- case CLASS_DEF_TABLE_FORMAT_ARRAY:
- {
- FT_UInt start_glyph_id = FT_PEEK_USHORT( class_def_table + 2 );
- FT_UInt glyph_count = FT_PEEK_USHORT( class_def_table + 4 );
- FT_Byte *class_value_array = class_def_table + 6;
-
-
- if ( glyph >= start_glyph_id &&
- glyph < start_glyph_id + glyph_count )
- return (FT_Int)FT_PEEK_USHORT( class_value_array +
- 2 * ( glyph - start_glyph_id ) );
- break;
- }
-
- case CLASS_DEF_TABLE_FORMAT_RANGE_GROUPS:
- {
- FT_UShort class_range_count = FT_PEEK_USHORT( class_def_table + 2 );
- FT_Byte *class_range_records = class_def_table + 4;
-
- FT_Int l = 0;
- FT_Int r = class_range_count - 1;
- FT_Int m;
-
- FT_Int straw_start;
- FT_Int straw_end;
- FT_Int needle = (FT_Int)glyph;
-
-
- while ( l <= r )
- {
- FT_Byte *class_range_record;
-
-
- m = ( l + r ) >> 1;
- class_range_record = class_range_records + 6 * m;
- straw_start = FT_PEEK_USHORT( class_range_record );
- straw_end = FT_PEEK_USHORT( class_range_record + 2 );
-
- if ( needle < straw_start )
- r = m - 1;
- else if ( needle > straw_end )
- l = m + 1;
- else
- return (FT_Int)FT_PEEK_USHORT( class_range_record + 4 );
- }
- break;
- }
- }
-
- /* "All glyphs not assigned to a class fall into class 0." */
- /* (OpenType spec) */
- return 0;
- }
-
-
- FT_LOCAL_DEF( FT_Error )
- tt_face_load_gpos( TT_Face face,
- FT_Stream stream )
- {
- FT_Error error;
- FT_ULong table_size;
-
-
- /* The GPOS table is optional; exit silently if it is missing. */
- error = face->goto_table( face, TTAG_GPOS, stream, &table_size );
- if ( error )
- goto Exit;
-
- if ( table_size < 4 ) /* the case of a malformed table */
- {
- FT_ERROR(( "tt_face_load_gpos:"
- " GPOS table is too small - ignored\n" ));
- error = FT_THROW( Table_Missing );
- goto Exit;
- }
-
- if ( FT_FRAME_EXTRACT( table_size, face->gpos_table ) )
- {
- FT_ERROR(( "tt_face_load_gpos:"
- " could not extract GPOS table\n" ));
- goto Exit;
- }
-
- face->gpos_kerning_available = FALSE;
-
- if ( face->gpos_table )
- {
- FT_Byte* feature_list = face->gpos_table +
- FT_PEEK_USHORT( face->gpos_table + 6 );
- FT_UInt16 feature_count = FT_PEEK_USHORT( feature_list );
- FT_Byte* feature_records = feature_list + 2;
-
- FT_UInt idx;
-
-
- for ( idx = 0; idx < feature_count; idx++, feature_records += 6 )
- {
- FT_ULong feature_tag = FT_PEEK_ULONG( feature_records );
-
-
- if ( feature_tag == TTAG_kern )
- {
- face->gpos_kerning_available = TRUE;
- break;
- }
- }
- }
-
- Exit:
- return error;
- }
-
-
- FT_LOCAL_DEF( void )
- tt_face_done_gpos( TT_Face face )
- {
- FT_Stream stream = face->root.stream;
-
-
- FT_FRAME_RELEASE( face->gpos_table );
- }
-
-
- FT_LOCAL_DEF( FT_Int )
- tt_face_get_gpos_kerning( TT_Face face,
- FT_UInt left_glyph,
- FT_UInt right_glyph )
- {
- FT_Byte* feature_list;
- FT_UInt16 feature_count;
- FT_Byte* feature_records;
- FT_UInt feature_idx;
-
-
- if ( !face->gpos_kerning_available )
- return 0;
-
- feature_list = face->gpos_table +
- FT_PEEK_USHORT( face->gpos_table + 6 );
- feature_count = FT_PEEK_USHORT( feature_list );
- feature_records = feature_list + 2;
-
- for ( feature_idx = 0;
- feature_idx < feature_count;
- feature_idx++, feature_records += 6 )
- {
- FT_ULong feature_tag = FT_PEEK_ULONG( feature_records );
- FT_Byte* feature_table;
- FT_UInt16 lookup_idx_count;
- FT_UInt16 lookup_idx;
-
-
- if ( feature_tag != TTAG_kern )
- continue;
-
- feature_table = feature_list + FT_PEEK_USHORT( feature_records + 4 );
- lookup_idx_count = FT_PEEK_USHORT( feature_table + 2 );
-
- for ( lookup_idx = 0; lookup_idx < lookup_idx_count; lookup_idx++ )
- {
- FT_UInt16 lookup_list_idx =
- FT_PEEK_USHORT( feature_table + 4 + 2 * lookup_idx );
- TT_GPOS_Subtable_Iterator_Context subtable_iter;
-
-
- tt_gpos_subtable_iterator_init( &subtable_iter,
- face->gpos_table,
- lookup_list_idx );
-
- while ( tt_gpos_subtable_iterator_next( &subtable_iter ) )
- {
- FT_Byte* subtable;
-
- gpos_value_format_bitmask value_format_1;
- gpos_value_format_bitmask value_format_2;
- gpos_pair_adjustment_format format;
-
- FT_UShort coverage_offset;
- FT_Int coverage_index;
-
-
- if ( subtable_iter.subtable_type !=
- GPOS_LOOKUP_TYPE_PAIR_ADJUSTMENT )
- continue;
-
- subtable = subtable_iter.subtable;
-
- value_format_1 =
- (gpos_value_format_bitmask)FT_PEEK_USHORT( subtable + 4 );
- value_format_2 =
- (gpos_value_format_bitmask)FT_PEEK_USHORT( subtable + 6 );
-
- if ( !( value_format_1 == GPOS_VALUE_FORMAT_X_ADVANCE &&
- value_format_2 == GPOS_VALUE_FORMAT_NONE ) )
- continue;
-
- format = (gpos_pair_adjustment_format)FT_PEEK_USHORT( subtable );
-
- coverage_offset = FT_PEEK_USHORT( subtable + 2 );
- coverage_index =
- tt_gpos_get_coverage_index( subtable + coverage_offset,
- left_glyph );
-
- if ( coverage_index == -1 )
- continue;
-
- switch ( format )
- {
- case GPOS_PAIR_ADJUSTMENT_FORMAT_GLYPH_PAIR:
- {
- FT_Int l, r, m;
- FT_Int straw, needle;
-
- FT_Int value_record_pair_size_in_bytes = 2;
-
- FT_UShort pair_set_count = FT_PEEK_USHORT( subtable + 8 );
- FT_UShort pair_pos_offset;
-
- FT_Byte* pair_value_table;
- FT_UShort pair_value_count;
- FT_Byte* pair_value_array;
-
-
- if ( coverage_index >= pair_set_count )
- return 0;
-
- pair_pos_offset =
- FT_PEEK_USHORT( subtable + 10 + 2 * coverage_index );
-
- pair_value_table = subtable + pair_pos_offset;
- pair_value_count = FT_PEEK_USHORT( pair_value_table );
- pair_value_array = pair_value_table + 2;
-
- needle = (FT_Int)right_glyph;
- r = pair_value_count - 1;
- l = 0;
-
- /* Binary search. */
- while ( l <= r )
- {
- FT_UShort second_glyph;
- FT_Byte* pair_value;
-
-
- m = ( l + r ) >> 1;
- pair_value = pair_value_array +
- ( 2 + value_record_pair_size_in_bytes ) * m;
- second_glyph = FT_PEEK_USHORT( pair_value );
- straw = second_glyph;
-
- if ( needle < straw )
- r = m - 1;
- else if ( needle > straw )
- l = m + 1;
- else
- {
- FT_Short x_advance = FT_PEEK_SHORT( pair_value + 2 );
-
-
- return x_advance;
- }
- }
- break;
- }
-
- case GPOS_PAIR_ADJUSTMENT_FORMAT_CLASS_PAIR:
- {
- FT_UShort class_def1_offset = FT_PEEK_USHORT( subtable + 8 );
- FT_UShort class_def2_offset = FT_PEEK_USHORT( subtable + 10 );
-
- FT_Int left_glyph_class =
- tt_gpos_get_glyph_class( subtable + class_def1_offset,
- left_glyph );
- FT_Int right_glyph_class =
- tt_gpos_get_glyph_class( subtable + class_def2_offset,
- right_glyph );
-
- FT_UShort class1_count = FT_PEEK_USHORT( subtable + 12 );
- FT_UShort class2_count = FT_PEEK_USHORT( subtable + 14 );
-
- FT_Byte *class1_records, *class2_records;
- FT_Short x_advance;
-
-
- if ( left_glyph_class < 0 ||
- left_glyph_class >= class1_count )
- return 0; /* malformed */
- if ( right_glyph_class < 0 ||
- right_glyph_class >= class2_count )
- return 0; /* malformed */
-
- if ( right_glyph_class == 0 )
- continue; /* right glyph not found in this table */
-
- class1_records = subtable + 16;
- class2_records =
- class1_records + 2 * ( left_glyph_class * class2_count );
-
- x_advance =
- FT_PEEK_SHORT( class2_records + 2 * right_glyph_class );
-
- return x_advance;
- }
- }
- }
- }
- }
-
- return 0;
- }
-
-#else /* !TT_CONFIG_OPTION_GPOS_KERNING */
-
- /* ANSI C doesn't like empty source files */
- typedef int tt_gpos_dummy_;
-
-#endif /* !TT_CONFIG_OPTION_GPOS_KERNING */
-
-
-/* END */
diff --git a/src/sfnt/ttgpos.h b/src/sfnt/ttgpos.h
deleted file mode 100644
index 570e9e3..0000000
--- a/src/sfnt/ttgpos.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/****************************************************************************
- *
- * ttgpos.c
- *
- * Load the TrueType GPOS table. The only GPOS layout feature this
- * currently supports is kerning, from x advances in the pair adjustment
- * layout feature.
- *
- * Copyright (C) 2024 by
- * David Saltzman
- *
- * This file is part of the FreeType project, and may only be used,
- * modified, and distributed under the terms of the FreeType project
- * license, LICENSE.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 TTGPOS_H_
-#define TTGPOS_H_
-
-
-#include <freetype/internal/ftstream.h>
-#include <freetype/internal/tttypes.h>
-
-
-FT_BEGIN_HEADER
-
-
-#ifdef TT_CONFIG_OPTION_GPOS_KERNING
-
- FT_LOCAL( FT_Error )
- tt_face_load_gpos( TT_Face face,
- FT_Stream stream );
-
- FT_LOCAL( void )
- tt_face_done_gpos( TT_Face face );
-
- FT_LOCAL( FT_Int )
- tt_face_get_gpos_kerning( TT_Face face,
- FT_UInt left_glyph,
- FT_UInt right_glyph );
-
-#endif /* TT_CONFIG_OPTION_GPOS_KERNING */
-
-
-FT_END_HEADER
-
-#endif /* TTGPOS_H_ */
-
-
-/* END */
diff --git a/src/sfnt/ttkern.c b/src/sfnt/ttkern.c
index f041136..a47d08b 100644
--- a/src/sfnt/ttkern.c
+++ b/src/sfnt/ttkern.c
@@ -5,7 +5,7 @@
* Load the basic TrueType kerning table. This doesn't handle
* kerning data within the GPOS table at the moment.
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/sfnt/ttkern.h b/src/sfnt/ttkern.h
index a54e51d..960c7da 100644
--- a/src/sfnt/ttkern.h
+++ b/src/sfnt/ttkern.h
@@ -5,7 +5,7 @@
* Load the basic TrueType kerning table. This doesn't handle
* kerning data within the GPOS table at the moment.
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/sfnt/ttload.c b/src/sfnt/ttload.c
index c3a5fae..7b44e9c 100644
--- a/src/sfnt/ttload.c
+++ b/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-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -1046,7 +1046,7 @@
FT_LOCAL_DEF( void )
tt_face_free_name( TT_Face face )
{
- FT_Memory memory = face->root.memory;
+ FT_Memory memory = face->root.driver->root.memory;
TT_NameTable table = &face->name_table;
diff --git a/src/sfnt/ttload.h b/src/sfnt/ttload.h
index 2b1d62d..1499dd5 100644
--- a/src/sfnt/ttload.h
+++ b/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-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/sfnt/ttmtx.c b/src/sfnt/ttmtx.c
index 2788411..38ee9ae 100644
--- a/src/sfnt/ttmtx.c
+++ b/src/sfnt/ttmtx.c
@@ -4,7 +4,7 @@
*
* Load the metrics tables common to TTF and OTF fonts (body).
*
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/sfnt/ttmtx.h b/src/sfnt/ttmtx.h
index 34b3c0e..56d2b62 100644
--- a/src/sfnt/ttmtx.h
+++ b/src/sfnt/ttmtx.h
@@ -4,7 +4,7 @@
*
* Load the metrics tables common to TTF and OTF fonts (specification).
*
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/sfnt/ttpost.c b/src/sfnt/ttpost.c
index 5698a62..1dfad42 100644
--- a/src/sfnt/ttpost.c
+++ b/src/sfnt/ttpost.c
@@ -5,7 +5,7 @@
* PostScript name table processing for TrueType and OpenType fonts
* (body).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -204,8 +204,8 @@
/* now load the name strings */
if ( num_names )
{
- FT_Byte* p;
- FT_Byte* p_end;
+ FT_ULong p;
+ FT_Byte* strings;
post_len -= (FT_ULong)num_glyphs * 2;
@@ -214,36 +214,36 @@
post_len + 1 ) )
goto Fail;
- p = (FT_Byte*)( name_strings + num_names );
- if ( FT_STREAM_READ( p, post_len ) )
+ strings = (FT_Byte*)( name_strings + num_names );
+ if ( FT_STREAM_READ( strings, post_len ) )
goto Fail;
- p_end = p + post_len;
-
/* convert from Pascal- to C-strings and set pointers */
- for ( n = 0; p < p_end && n < num_names; n++ )
+ for ( p = 0, n = 0; p < post_len && n < num_names; n++ )
{
- FT_UInt len = *p;
+ FT_UInt len = strings[p];
- /* names in the Adobe Glyph List are shorter than 40 characters */
- if ( len >= 40U )
- FT_TRACE4(( "load_format_20: unusual %u-char name found\n", len ));
+ if ( len > 63U )
+ {
+ error = FT_THROW( Invalid_File_Format );
+ goto Fail;
+ }
- *p++ = 0;
- name_strings[n] = p;
- p += len;
+ strings[p] = 0;
+ name_strings[n] = strings + p + 1;
+ p += len + 1;
}
- *p_end = 0;
+ strings[post_len] = 0;
/* deal with missing or insufficient string data */
if ( n < num_names )
{
FT_TRACE4(( "load_format_20: %hu PostScript names are truncated\n",
- (FT_UShort)( num_names - n ) ));
+ num_names - n ));
for ( ; n < num_names; n++ )
- name_strings[n] = p_end;
+ name_strings[n] = strings + post_len;
}
}
@@ -436,8 +436,13 @@
format = face->postscript.FormatType;
- if ( format == 0x00020000L ||
- format == 0x00025000L )
+ if ( format == 0x00010000L )
+ {
+ if ( idx < 258 ) /* paranoid checking */
+ *PSname = MAC_NAME( idx );
+ }
+ else if ( format == 0x00020000L ||
+ format == 0x00025000L )
{
TT_Post_Names names = &face->postscript_names;
@@ -461,11 +466,6 @@
}
}
- /* version 1.0 is only valid with 258 glyphs */
- else if ( format == 0x00010000L &&
- face->max_profile.numGlyphs == 258 )
- *PSname = MAC_NAME( idx );
-
/* nothing to do for format == 0x00030000L */
End:
diff --git a/src/sfnt/ttpost.h b/src/sfnt/ttpost.h
index 150db6c..528f1c5 100644
--- a/src/sfnt/ttpost.h
+++ b/src/sfnt/ttpost.h
@@ -5,7 +5,7 @@
* PostScript name table processing for TrueType and OpenType fonts
* (specification).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/sfnt/ttsbit.c b/src/sfnt/ttsbit.c
index cb3a8ab..03f90a6 100644
--- a/src/sfnt/ttsbit.c
+++ b/src/sfnt/ttsbit.c
@@ -4,7 +4,7 @@
*
* TrueType and OpenType embedded bitmap support (body).
*
- * Copyright (C) 2005-2024 by
+ * Copyright (C) 2005-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* Copyright 2013 by Google, Inc.
diff --git a/src/sfnt/ttsbit.h b/src/sfnt/ttsbit.h
index 96f80a5..07e2db4 100644
--- a/src/sfnt/ttsbit.h
+++ b/src/sfnt/ttsbit.h
@@ -4,7 +4,7 @@
*
* TrueType and OpenType embedded bitmap support (specification).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/sfnt/ttsvg.c b/src/sfnt/ttsvg.c
index 298afd8..4461d48 100644
--- a/src/sfnt/ttsvg.c
+++ b/src/sfnt/ttsvg.c
@@ -4,7 +4,7 @@
*
* OpenType SVG Color (specification).
*
- * Copyright (C) 2022-2024 by
+ * Copyright (C) 2022-2023 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/src/sfnt/ttsvg.h b/src/sfnt/ttsvg.h
index 20f9e47..3f32321 100644
--- a/src/sfnt/ttsvg.h
+++ b/src/sfnt/ttsvg.h
@@ -4,7 +4,7 @@
*
* OpenType SVG Color (specification).
*
- * Copyright (C) 2022-2024 by
+ * Copyright (C) 2022-2023 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/src/sfnt/woff2tags.c b/src/sfnt/woff2tags.c
index 532ccfa..eeedd99 100644
--- a/src/sfnt/woff2tags.c
+++ b/src/sfnt/woff2tags.c
@@ -4,7 +4,7 @@
*
* WOFF2 Font table tags (base).
*
- * Copyright (C) 2019-2024 by
+ * Copyright (C) 2019-2023 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/src/sfnt/woff2tags.h b/src/sfnt/woff2tags.h
index d03b4b4..1201848 100644
--- a/src/sfnt/woff2tags.h
+++ b/src/sfnt/woff2tags.h
@@ -4,7 +4,7 @@
*
* WOFF2 Font table tags (specification).
*
- * Copyright (C) 2019-2024 by
+ * Copyright (C) 2019-2023 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/src/smooth/ftgrays.c b/src/smooth/ftgrays.c
index b7c0632..0918272 100644
--- a/src/smooth/ftgrays.c
+++ b/src/smooth/ftgrays.c
@@ -4,7 +4,7 @@
*
* A new `perfect' anti-aliasing renderer (body).
*
- * Copyright (C) 2000-2024 by
+ * Copyright (C) 2000-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -489,7 +489,7 @@
typedef struct gray_TWorker_
{
- FT_BBox cbox;
+ ft_jmp_buf jump_buffer;
TCoord min_ex, max_ex; /* min and max integer pixel coordinates */
TCoord min_ey, max_ey;
@@ -510,8 +510,6 @@
FT_Raster_Span_Func render_span;
void* render_span_data;
- ft_jmp_buf jump_buffer;
-
} gray_TWorker, *gray_PWorker;
#if defined( _MSC_VER )
@@ -999,12 +997,49 @@
#endif
/*
- * For now, the code that uses DDA to render conic curves requires
- * `FT_Int64` to be defined. See for example
- * https://gitlab.freedesktop.org/freetype/freetype/-/issues/1071.
+ * Benchmarking shows that using DDA to flatten the quadratic Bézier arcs
+ * is slightly faster in the following cases:
+ *
+ * - When the host CPU is 64-bit.
+ * - When SSE2 SIMD registers and instructions are available (even on
+ * x86).
+ *
+ * For other cases, using binary splits is actually slightly faster.
*/
+#if ( defined( __SSE2__ ) || \
+ defined( __x86_64__ ) || \
+ defined( _M_AMD64 ) || \
+ ( defined( _M_IX86_FP ) && _M_IX86_FP >= 2 ) ) && \
+ !defined( __VMS )
+# define FT_SSE2 1
+#else
+# define FT_SSE2 0
+#endif
-#ifdef FT_INT64
+#if FT_SSE2 || \
+ defined( __aarch64__ ) || \
+ defined( _M_ARM64 )
+# define BEZIER_USE_DDA 1
+#else
+# define BEZIER_USE_DDA 0
+#endif
+
+ /*
+ * For now, the code that depends on `BEZIER_USE_DDA` requires `FT_Int64`
+ * to be defined. If `FT_INT64` is not defined, meaning there is no
+ * 64-bit type available, disable it to avoid compilation errors. See for
+ * example https://gitlab.freedesktop.org/freetype/freetype/-/issues/1071.
+ */
+#if !defined( FT_INT64 )
+# undef BEZIER_USE_DDA
+# define BEZIER_USE_DDA 0
+#endif
+
+#if BEZIER_USE_DDA
+
+#if FT_SSE2
+# include <emmintrin.h>
+#endif
#define LEFT_SHIFT( a, b ) (FT_Int64)( (FT_UInt64)(a) << (b) )
@@ -1060,17 +1095,16 @@
return;
}
- /* We can calculate the number of necessary segments because */
+ /* We can calculate the number of necessary bisections because */
/* each bisection predictably reduces deviation exactly 4-fold. */
/* Even 32-bit deviation would vanish after 16 bisections. */
- shift = 16;
+ shift = 0;
do
{
- dx >>= 2;
- shift--;
+ dx >>= 2;
+ shift += 1;
} while ( dx > ONE_PIXEL / 4 );
- count = 0x10000U >> shift;
/*
* The (P0,P1,P2) arc equation, for t in [0,1] range:
@@ -1116,19 +1150,75 @@
* = (B << (33 - N)) + (A << (32 - 2*N))
*/
- rx = LEFT_SHIFT( ax, shift + shift );
- ry = LEFT_SHIFT( ay, shift + shift );
+#if FT_SSE2
+ /* Experience shows that for small shift values, */
+ /* SSE2 is actually slower. */
+ if ( shift > 2 )
+ {
+ union
+ {
+ struct { FT_Int64 ax, ay, bx, by; } i;
+ struct { __m128i a, b; } vec;
- qx = LEFT_SHIFT( bx, shift + 17 ) + rx;
- qy = LEFT_SHIFT( by, shift + 17 ) + ry;
+ } u;
- rx *= 2;
- ry *= 2;
+ union
+ {
+ struct { FT_Int32 px_lo, px_hi, py_lo, py_hi; } i;
+ __m128i vec;
+
+ } v;
+
+ __m128i a, b;
+ __m128i r, q, q2;
+ __m128i p;
+
+
+ u.i.ax = ax;
+ u.i.ay = ay;
+ u.i.bx = bx;
+ u.i.by = by;
+
+ a = _mm_load_si128( &u.vec.a );
+ b = _mm_load_si128( &u.vec.b );
+
+ r = _mm_slli_epi64( a, 33 - 2 * shift );
+ q = _mm_slli_epi64( b, 33 - shift );
+ q2 = _mm_slli_epi64( a, 32 - 2 * shift );
+
+ q = _mm_add_epi64( q2, q );
+
+ v.i.px_lo = 0;
+ v.i.px_hi = p0.x;
+ v.i.py_lo = 0;
+ v.i.py_hi = p0.y;
+
+ p = _mm_load_si128( &v.vec );
+
+ for ( count = 1U << shift; count > 0; count-- )
+ {
+ p = _mm_add_epi64( p, q );
+ q = _mm_add_epi64( q, r );
+
+ _mm_store_si128( &v.vec, p );
+
+ gray_render_line( RAS_VAR_ v.i.px_hi, v.i.py_hi );
+ }
+
+ return;
+ }
+#endif /* FT_SSE2 */
+
+ rx = LEFT_SHIFT( ax, 33 - 2 * shift );
+ ry = LEFT_SHIFT( ay, 33 - 2 * shift );
+
+ qx = LEFT_SHIFT( bx, 33 - shift ) + LEFT_SHIFT( ax, 32 - 2 * shift );
+ qy = LEFT_SHIFT( by, 33 - shift ) + LEFT_SHIFT( ay, 32 - 2 * shift );
px = LEFT_SHIFT( p0.x, 32 );
py = LEFT_SHIFT( p0.y, 32 );
- do
+ for ( count = 1U << shift; count > 0; count-- )
{
px += qx;
py += qy;
@@ -1137,10 +1227,10 @@
gray_render_line( RAS_VAR_ (FT_Pos)( px >> 32 ),
(FT_Pos)( py >> 32 ) );
- } while ( --count );
+ }
}
-#else /* !FT_INT64 */
+#else /* !BEZIER_USE_DDA */
/*
* Note that multiple attempts to speed up the function below
@@ -1234,7 +1324,7 @@
} while ( --draw );
}
-#endif /* !FT_INT64 */
+#endif /* !BEZIER_USE_DDA */
/*
@@ -1396,6 +1486,139 @@
}
+ static void
+ gray_sweep( RAS_ARG )
+ {
+ int fill = ( ras.outline.flags & FT_OUTLINE_EVEN_ODD_FILL ) ? 0x100
+ : INT_MIN;
+ int coverage;
+ int y;
+
+
+ for ( y = ras.min_ey; y < ras.max_ey; y++ )
+ {
+ PCell cell = ras.ycells[y - ras.min_ey];
+ TCoord x = ras.min_ex;
+ TArea cover = 0;
+
+ unsigned char* line = ras.target.origin - ras.target.pitch * y;
+
+
+ for ( ; cell != ras.cell_null; cell = cell->next )
+ {
+ TArea area;
+
+
+ if ( cover != 0 && cell->x > x )
+ {
+ FT_FILL_RULE( coverage, cover, fill );
+ FT_GRAY_SET( line + x, coverage, cell->x - x );
+ }
+
+ cover += (TArea)cell->cover * ( ONE_PIXEL * 2 );
+ area = cover - cell->area;
+
+ if ( area != 0 && cell->x >= ras.min_ex )
+ {
+ FT_FILL_RULE( coverage, area, fill );
+ line[cell->x] = (unsigned char)coverage;
+ }
+
+ x = cell->x + 1;
+ }
+
+ if ( cover != 0 ) /* only if cropped */
+ {
+ FT_FILL_RULE( coverage, cover, fill );
+ FT_GRAY_SET( line + x, coverage, ras.max_ex - x );
+ }
+ }
+ }
+
+
+ static void
+ gray_sweep_direct( RAS_ARG )
+ {
+ int fill = ( ras.outline.flags & FT_OUTLINE_EVEN_ODD_FILL ) ? 0x100
+ : INT_MIN;
+ int coverage;
+ int y;
+
+ FT_Span span[FT_MAX_GRAY_SPANS];
+ int n = 0;
+
+
+ for ( y = ras.min_ey; y < ras.max_ey; y++ )
+ {
+ PCell cell = ras.ycells[y - ras.min_ey];
+ TCoord x = ras.min_ex;
+ TArea cover = 0;
+
+
+ for ( ; cell != ras.cell_null; cell = cell->next )
+ {
+ TArea area;
+
+
+ if ( cover != 0 && cell->x > x )
+ {
+ FT_FILL_RULE( coverage, cover, fill );
+
+ span[n].coverage = (unsigned char)coverage;
+ span[n].x = (short)x;
+ span[n].len = (unsigned short)( cell->x - x );
+
+ if ( ++n == FT_MAX_GRAY_SPANS )
+ {
+ /* flush the span buffer and reset the count */
+ ras.render_span( y, n, span, ras.render_span_data );
+ n = 0;
+ }
+ }
+
+ cover += (TArea)cell->cover * ( ONE_PIXEL * 2 );
+ area = cover - cell->area;
+
+ if ( area != 0 && cell->x >= ras.min_ex )
+ {
+ FT_FILL_RULE( coverage, area, fill );
+
+ span[n].coverage = (unsigned char)coverage;
+ span[n].x = (short)cell->x;
+ span[n].len = 1;
+
+ if ( ++n == FT_MAX_GRAY_SPANS )
+ {
+ /* flush the span buffer and reset the count */
+ ras.render_span( y, n, span, ras.render_span_data );
+ n = 0;
+ }
+ }
+
+ x = cell->x + 1;
+ }
+
+ if ( cover != 0 ) /* only if cropped */
+ {
+ FT_FILL_RULE( coverage, cover, fill );
+
+ span[n].coverage = (unsigned char)coverage;
+ span[n].x = (short)x;
+ span[n].len = (unsigned short)( ras.max_ex - x );
+
+ ++n;
+ }
+
+ if ( n )
+ {
+ /* flush the span buffer and reset the count */
+ ras.render_span( y, n, span, ras.render_span_data );
+ n = 0;
+ }
+ }
+ }
+
+
#ifdef STANDALONE_
/**************************************************************************
@@ -1711,7 +1934,7 @@
if ( continued )
FT_Trace_Enable();
- FT_TRACE7(( "band [%d..%d]: %td cell%s remaining\n",
+ FT_TRACE7(( "band [%d..%d]: %td cell%s remaining/\n",
ras.min_ey,
ras.max_ey,
ras.cell_null - ras.cell_free,
@@ -1729,144 +1952,14 @@
}
- static void
- gray_sweep( RAS_ARG )
- {
- int fill = ( ras.outline.flags & FT_OUTLINE_EVEN_ODD_FILL ) ? 0x100
- : INT_MIN;
- int coverage;
- int y;
-
-
- for ( y = ras.min_ey; y < ras.max_ey; y++ )
- {
- PCell cell = ras.ycells[y - ras.min_ey];
- TCoord x = ras.min_ex;
- TArea cover = 0;
-
- unsigned char* line = ras.target.origin - ras.target.pitch * y;
-
-
- for ( ; cell != ras.cell_null; cell = cell->next )
- {
- TArea area;
-
-
- if ( cover != 0 && cell->x > x )
- {
- FT_FILL_RULE( coverage, cover, fill );
- FT_GRAY_SET( line + x, coverage, cell->x - x );
- }
-
- cover += (TArea)cell->cover * ( ONE_PIXEL * 2 );
- area = cover - cell->area;
-
- if ( area != 0 && cell->x >= ras.min_ex )
- {
- FT_FILL_RULE( coverage, area, fill );
- line[cell->x] = (unsigned char)coverage;
- }
-
- x = cell->x + 1;
- }
-
- if ( cover != 0 ) /* only if cropped */
- {
- FT_FILL_RULE( coverage, cover, fill );
- FT_GRAY_SET( line + x, coverage, ras.max_ex - x );
- }
- }
- }
-
-
- static void
- gray_sweep_direct( RAS_ARG )
- {
- int fill = ( ras.outline.flags & FT_OUTLINE_EVEN_ODD_FILL ) ? 0x100
- : INT_MIN;
- int coverage;
- int y;
-
- FT_Span span[FT_MAX_GRAY_SPANS];
- int n = 0;
-
-
- for ( y = ras.min_ey; y < ras.max_ey; y++ )
- {
- PCell cell = ras.ycells[y - ras.min_ey];
- TCoord x = ras.min_ex;
- TArea cover = 0;
-
-
- for ( ; cell != ras.cell_null; cell = cell->next )
- {
- TArea area;
-
-
- if ( cover != 0 && cell->x > x )
- {
- FT_FILL_RULE( coverage, cover, fill );
-
- span[n].coverage = (unsigned char)coverage;
- span[n].x = (short)x;
- span[n].len = (unsigned short)( cell->x - x );
-
- if ( ++n == FT_MAX_GRAY_SPANS )
- {
- /* flush the span buffer and reset the count */
- ras.render_span( y, n, span, ras.render_span_data );
- n = 0;
- }
- }
-
- cover += (TArea)cell->cover * ( ONE_PIXEL * 2 );
- area = cover - cell->area;
-
- if ( area != 0 && cell->x >= ras.min_ex )
- {
- FT_FILL_RULE( coverage, area, fill );
-
- span[n].coverage = (unsigned char)coverage;
- span[n].x = (short)cell->x;
- span[n].len = 1;
-
- if ( ++n == FT_MAX_GRAY_SPANS )
- {
- /* flush the span buffer and reset the count */
- ras.render_span( y, n, span, ras.render_span_data );
- n = 0;
- }
- }
-
- x = cell->x + 1;
- }
-
- if ( cover != 0 ) /* only if cropped */
- {
- FT_FILL_RULE( coverage, cover, fill );
-
- span[n].coverage = (unsigned char)coverage;
- span[n].x = (short)x;
- span[n].len = (unsigned short)( ras.max_ex - x );
-
- ++n;
- }
-
- if ( n )
- {
- /* flush the span buffer and reset the count */
- ras.render_span( y, n, span, ras.render_span_data );
- n = 0;
- }
- }
- }
-
-
static int
gray_convert_glyph( RAS_ARG )
{
+ const TCoord yMin = ras.min_ey;
+ const TCoord yMax = ras.max_ey;
+
TCell buffer[FT_MAX_GRAY_POOL];
- size_t height = (size_t)( ras.cbox.yMax - ras.cbox.yMin );
+ size_t height = (size_t)( yMax - yMin );
size_t n = FT_MAX_GRAY_POOL / 8;
TCoord y;
TCoord bands[32]; /* enough to accommodate bisections */
@@ -1892,36 +1985,35 @@
height = ( height + n - 1 ) / n;
}
- for ( y = ras.cbox.yMin; y < ras.cbox.yMax; )
+ for ( y = yMin; y < 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;
+ ras.max_ey = FT_MIN( y, yMax );
band = bands;
- band[1] = ras.cbox.xMin;
- band[0] = ras.cbox.xMax;
+ band[1] = ras.min_ey;
+ band[0] = ras.max_ey;
do
{
- TCoord i;
+ TCoord width = band[0] - band[1];
+ TCoord w;
int error;
- ras.min_ex = band[1];
- ras.max_ex = band[0];
+ for ( w = 0; w < width; ++w )
+ ras.ycells[w] = ras.cell_null;
- /* memory management: zero out and skip ycells */
- for ( i = 0; i < ras.count_ey; ++i )
- ras.ycells[i] = ras.cell_null;
-
- n = ( (size_t)ras.count_ey * sizeof ( PCell ) + sizeof ( TCell ) - 1 )
- / sizeof ( TCell );
+ /* memory management: skip ycells */
+ n = ( (size_t)width * sizeof ( PCell ) + sizeof ( TCell ) - 1 ) /
+ sizeof ( TCell );
ras.cell_free = buffer + n;
ras.cell = ras.cell_null;
+ ras.min_ey = band[1];
+ ras.max_ey = band[0];
+ ras.count_ey = width;
error = gray_convert_glyph_inner( RAS_VAR_ continued );
continued = 1;
@@ -1939,10 +2031,10 @@
return error;
/* render pool overflow; we will reduce the render band by half */
- i = ( band[0] - band[1] ) >> 1;
+ width >>= 1;
/* this should never happen even with tiny rendering pool */
- if ( i == 0 )
+ if ( width == 0 )
{
FT_TRACE7(( "gray_convert_glyph: rotten glyph\n" ));
return FT_THROW( Raster_Overflow );
@@ -1950,7 +2042,7 @@
band++;
band[1] = band[0];
- band[0] += i;
+ band[0] += width;
} while ( band >= bands );
}
@@ -1981,7 +2073,7 @@
return FT_THROW( Invalid_Outline );
/* return immediately if the outline is empty */
- if ( outline->n_points == 0 || outline->n_contours == 0 )
+ if ( outline->n_points == 0 || outline->n_contours <= 0 )
return Smooth_Err_Ok;
if ( !outline->contours || !outline->points )
@@ -2001,7 +2093,10 @@
ras.render_span = (FT_Raster_Span_Func)params->gray_spans;
ras.render_span_data = params->user;
- ras.cbox = params->clip_box;
+ ras.min_ex = params->clip_box.xMin;
+ ras.min_ey = params->clip_box.yMin;
+ ras.max_ex = params->clip_box.xMax;
+ ras.max_ey = params->clip_box.yMax;
}
else
{
@@ -2027,14 +2122,14 @@
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 = (FT_Pos)target_map->width;
+ ras.max_ey = (FT_Pos)target_map->rows;
}
/* exit if nothing to do */
- if ( ras.cbox.xMin >= ras.cbox.xMax || ras.cbox.yMin >= ras.cbox.yMax )
+ if ( ras.max_ex <= ras.min_ex || ras.max_ey <= ras.min_ey )
return Smooth_Err_Ok;
return gray_convert_glyph( RAS_VAR );
diff --git a/src/smooth/ftgrays.h b/src/smooth/ftgrays.h
index 940fbe8..a5001bf 100644
--- a/src/smooth/ftgrays.h
+++ b/src/smooth/ftgrays.h
@@ -4,7 +4,7 @@
*
* FreeType smooth renderer declaration
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/smooth/ftsmerrs.h b/src/smooth/ftsmerrs.h
index 6d41fb8..f4ac93d 100644
--- a/src/smooth/ftsmerrs.h
+++ b/src/smooth/ftsmerrs.h
@@ -4,7 +4,7 @@
*
* smooth renderer error codes (specification only).
*
- * Copyright (C) 2001-2024 by
+ * Copyright (C) 2001-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/smooth/ftsmooth.c b/src/smooth/ftsmooth.c
index f0acc1e..9b0e888 100644
--- a/src/smooth/ftsmooth.c
+++ b/src/smooth/ftsmooth.c
@@ -4,7 +4,7 @@
*
* Anti-aliasing renderer interface (body).
*
- * Copyright (C) 2000-2024 by
+ * Copyright (C) 2000-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/smooth/ftsmooth.h b/src/smooth/ftsmooth.h
index d7b61a9..f8bdc99 100644
--- a/src/smooth/ftsmooth.h
+++ b/src/smooth/ftsmooth.h
@@ -4,7 +4,7 @@
*
* Anti-aliasing renderer interface (specification).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/smooth/module.mk b/src/smooth/module.mk
index 9b4526f..82ab2fa 100644
--- a/src/smooth/module.mk
+++ b/src/smooth/module.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 1996-2024 by
+# Copyright (C) 1996-2023 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/src/smooth/rules.mk b/src/smooth/rules.mk
index f50fc47..5d89c75 100644
--- a/src/smooth/rules.mk
+++ b/src/smooth/rules.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 1996-2024 by
+# Copyright (C) 1996-2023 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/src/smooth/smooth.c b/src/smooth/smooth.c
index 8c50681..9a0b824 100644
--- a/src/smooth/smooth.c
+++ b/src/smooth/smooth.c
@@ -4,7 +4,7 @@
*
* FreeType anti-aliasing rasterer module component (body only).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/svg/ftsvg.c b/src/svg/ftsvg.c
index 35788a2..ba237f6 100644
--- a/src/svg/ftsvg.c
+++ b/src/svg/ftsvg.c
@@ -4,7 +4,7 @@
*
* The FreeType SVG renderer interface (body).
*
- * Copyright (C) 2022-2024 by
+ * Copyright (C) 2022-2023 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/src/svg/ftsvg.h b/src/svg/ftsvg.h
index 623c091..9c496ca 100644
--- a/src/svg/ftsvg.h
+++ b/src/svg/ftsvg.h
@@ -4,7 +4,7 @@
*
* The FreeType SVG renderer interface (specification).
*
- * Copyright (C) 2022-2024 by
+ * Copyright (C) 2022-2023 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/src/svg/module.mk b/src/svg/module.mk
index 3f08543..00beca6 100644
--- a/src/svg/module.mk
+++ b/src/svg/module.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 2022-2024 by
+# Copyright (C) 2022-2023 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/src/svg/rules.mk b/src/svg/rules.mk
index 5627628..4f44097 100644
--- a/src/svg/rules.mk
+++ b/src/svg/rules.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 2022-2024 by
+# Copyright (C) 2022-2023 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/src/svg/svg.c b/src/svg/svg.c
index 1f1c04b..373c28e 100644
--- a/src/svg/svg.c
+++ b/src/svg/svg.c
@@ -4,7 +4,7 @@
*
* FreeType SVG renderer module component (body only).
*
- * Copyright (C) 2022-2024 by
+ * Copyright (C) 2022-2023 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/src/svg/svgtypes.h b/src/svg/svgtypes.h
index f1d6d73..1d60803 100644
--- a/src/svg/svgtypes.h
+++ b/src/svg/svgtypes.h
@@ -4,7 +4,7 @@
*
* The FreeType SVG renderer internal types (specification).
*
- * Copyright (C) 2022-2024 by
+ * Copyright (C) 2022-2023 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/src/tools/afblue.pl b/src/tools/afblue.pl
index 1341c77..1098e30 100644
--- a/src/tools/afblue.pl
+++ b/src/tools/afblue.pl
@@ -5,7 +5,7 @@
#
# Process a blue zone character data file.
#
-# Copyright (C) 2013-2024 by
+# Copyright (C) 2013-2023 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used,
diff --git a/src/tools/apinames.c b/src/tools/apinames.c
index 5a49b06..dfa258f 100644
--- a/src/tools/apinames.c
+++ b/src/tools/apinames.c
@@ -10,7 +10,7 @@
* accepted if you are using GCC for compilation (and probably by
* other compilers too).
*
- * Author: FreeType team, 2005-2023
+ * Author: FreeType team, 2005-2019
*
* This code is explicitly placed into the public domain.
*
@@ -295,7 +295,7 @@
p = buff;
/* skip leading whitespace */
- while ( *p == ' ' || *p == '\t' )
+ while ( *p && ( *p == ' ' || *p == '\\' ) )
p++;
/* skip empty lines */
diff --git a/src/tools/glnames.py b/src/tools/glnames.py
index 0b6d824..41509db 100644
--- a/src/tools/glnames.py
+++ b/src/tools/glnames.py
@@ -3,7 +3,7 @@
#
# FreeType 2 glyph name builder
#
-# Copyright (C) 1996-2024 by
+# Copyright (C) 1996-2023 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/src/tools/update-copyright-year b/src/tools/update-copyright-year
index 6b359ff..b0b60fb 100755
--- a/src/tools/update-copyright-year
+++ b/src/tools/update-copyright-year
@@ -2,7 +2,7 @@
& eval 'exec perl -wS -i "$0" $argv:q'
if 0;
-# Copyright (C) 2015-2024 by
+# Copyright (C) 2015-2023 by
# Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
diff --git a/src/truetype/module.mk b/src/truetype/module.mk
index a53cb64..5d44ac1 100644
--- a/src/truetype/module.mk
+++ b/src/truetype/module.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 1996-2024 by
+# Copyright (C) 1996-2023 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/src/truetype/rules.mk b/src/truetype/rules.mk
index 0552d68..dde26de 100644
--- a/src/truetype/rules.mk
+++ b/src/truetype/rules.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 1996-2024 by
+# Copyright (C) 1996-2023 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/src/truetype/truetype.c b/src/truetype/truetype.c
index fe9cb92..fcc0ea3 100644
--- a/src/truetype/truetype.c
+++ b/src/truetype/truetype.c
@@ -4,7 +4,7 @@
*
* FreeType TrueType driver component (body only).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/truetype/ttdriver.c b/src/truetype/ttdriver.c
index 4ab68eb..d1496fe 100644
--- a/src/truetype/ttdriver.c
+++ b/src/truetype/ttdriver.c
@@ -4,7 +4,7 @@
*
* TrueType font driver implementation (body).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -217,20 +217,7 @@
kerning->y = 0;
if ( sfnt )
- {
- /* Use 'kern' table if available since that can be faster; otherwise */
- /* use GPOS kerning pairs if available. */
- if ( ttface->kern_avail_bits != 0 )
- kerning->x = sfnt->get_kerning( ttface,
- left_glyph,
- right_glyph );
-#ifdef TT_CONFIG_OPTION_GPOS_KERNING
- else if ( ttface->gpos_kerning_available )
- kerning->x = sfnt->get_gpos_kerning( ttface,
- left_glyph,
- right_glyph );
-#endif
- }
+ kerning->x = sfnt->get_kerning( ttface, left_glyph, right_glyph );
return 0;
}
diff --git a/src/truetype/ttdriver.h b/src/truetype/ttdriver.h
index 3e1cf23..757a66f 100644
--- a/src/truetype/ttdriver.h
+++ b/src/truetype/ttdriver.h
@@ -4,7 +4,7 @@
*
* High-level TrueType driver interface (specification).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/truetype/tterrors.h b/src/truetype/tterrors.h
index 7ad937b..008ee99 100644
--- a/src/truetype/tterrors.h
+++ b/src/truetype/tterrors.h
@@ -4,7 +4,7 @@
*
* TrueType error codes (specification only).
*
- * Copyright (C) 2001-2024 by
+ * Copyright (C) 2001-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/truetype/ttgload.c b/src/truetype/ttgload.c
index b656ccf..dc427e8 100644
--- a/src/truetype/ttgload.c
+++ b/src/truetype/ttgload.c
@@ -4,7 +4,7 @@
*
* TrueType Glyph Loader (body).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -353,8 +353,7 @@
FT_Byte c, count;
FT_Vector *vec, *vec_limit;
FT_Pos x, y;
- FT_UShort *cont, *cont_limit;
- FT_Int last;
+ FT_Short *cont, *cont_limit, last;
/* check that we can add the contours to the glyph */
@@ -373,7 +372,7 @@
last = -1;
for ( ; cont < cont_limit; cont++ )
{
- *cont = FT_NEXT_USHORT( p );
+ *cont = FT_NEXT_SHORT( p );
if ( *cont <= last )
goto Invalid_Outline;
@@ -419,9 +418,11 @@
/* and thus allocate the bytecode array size by ourselves */
if ( n_ins )
{
- if ( FT_DUP( exec->glyphIns, p, n_ins ) )
+ if ( FT_QNEW_ARRAY( exec->glyphIns, n_ins ) )
return error;
+ FT_MEM_COPY( exec->glyphIns, p, (FT_Long)n_ins );
+
exec->glyphSize = n_ins;
}
}
@@ -431,7 +432,7 @@
p += n_ins;
/* reading the point tags */
- flag = outline->tags;
+ flag = (FT_Byte*)outline->tags;
flag_limit = flag + n_points;
FT_ASSERT( flag );
@@ -464,7 +465,7 @@
vec = outline->points;
vec_limit = vec + n_points;
- flag = outline->tags;
+ flag = (FT_Byte*)outline->tags;
x = 0;
for ( ; vec < vec_limit; vec++, flag++ )
@@ -498,7 +499,7 @@
vec = outline->points;
vec_limit = vec + n_points;
- flag = outline->tags;
+ flag = (FT_Byte*)outline->tags;
y = 0;
for ( ; vec < vec_limit; vec++, flag++ )
@@ -531,8 +532,8 @@
*flag = (FT_Byte)( f & ON_CURVE_POINT );
}
- outline->n_points = (FT_UShort)n_points;
- outline->n_contours = (FT_UShort)n_contours;
+ outline->n_points = (FT_Short)n_points;
+ outline->n_contours = (FT_Short)n_contours;
load->cursor = p;
@@ -753,13 +754,15 @@
FT_UInt start_point,
FT_UInt start_contour )
{
- zone->n_points = load->outline.n_points + 4 - (FT_UShort)start_point;
- zone->n_contours = load->outline.n_contours - (FT_UShort)start_contour;
+ zone->n_points = (FT_UShort)load->outline.n_points + 4 -
+ (FT_UShort)start_point;
+ zone->n_contours = load->outline.n_contours -
+ (FT_Short)start_contour;
zone->org = load->extra_points + start_point;
zone->cur = load->outline.points + start_point;
zone->orus = load->extra_points2 + start_point;
- zone->tags = load->outline.tags + start_point;
- zone->contours = load->outline.contours + start_contour;
+ zone->tags = (FT_Byte*)load->outline.tags + start_point;
+ zone->contours = (FT_UShort*)load->outline.contours + start_contour;
zone->first_point = (FT_UShort)start_point;
}
@@ -1043,7 +1046,7 @@
current.points = gloader->base.outline.points +
num_base_points;
current.n_points = gloader->base.outline.n_points -
- (FT_UShort)num_base_points;
+ (short)num_base_points;
have_scale = FT_BOOL( subglyph->flags & ( WE_HAVE_A_SCALE |
WE_HAVE_AN_XY_SCALE |
@@ -1056,7 +1059,7 @@
/* get offset */
if ( !( subglyph->flags & ARGS_ARE_XY_VALUES ) )
{
- FT_UInt num_points = gloader->base.outline.n_points;
+ FT_UInt num_points = (FT_UInt)gloader->base.outline.n_points;
FT_UInt k = (FT_UInt)subglyph->arg1;
FT_UInt l = (FT_UInt)subglyph->arg2;
FT_Vector* p1;
@@ -1718,8 +1721,8 @@
FT_List_Add( &loader->composites, node );
}
- start_point = gloader->base.outline.n_points;
- start_contour = gloader->base.outline.n_contours;
+ start_point = (FT_UInt)gloader->base.outline.n_points;
+ start_contour = (FT_UInt)gloader->base.outline.n_contours;
/* for each subglyph, read composite header */
error = face->read_composite_glyph( loader );
@@ -1738,14 +1741,14 @@
if ( FT_IS_NAMED_INSTANCE( FT_FACE( face ) ) ||
FT_IS_VARIATION( FT_FACE( face ) ) )
{
- FT_UShort i, limit;
+ short i, limit;
FT_SubGlyph subglyph;
FT_Outline outline = { 0, 0, NULL, NULL, NULL, 0 };
FT_Vector* unrounded = NULL;
- limit = (FT_UShort)gloader->current.num_subglyphs;
+ limit = (short)gloader->current.num_subglyphs;
/* construct an outline structure for */
/* communication with `TT_Vary_Apply_Glyph_Deltas' */
@@ -1871,7 +1874,7 @@
linear_hadvance = loader->linear;
linear_vadvance = loader->vadvance;
- num_base_points = gloader->base.outline.n_points;
+ num_base_points = (FT_UInt)gloader->base.outline.n_points;
error = load_truetype_glyph( loader,
(FT_UInt)subglyph->index,
@@ -1895,7 +1898,7 @@
loader->vadvance = linear_vadvance;
}
- num_points = gloader->base.outline.n_points;
+ num_points = (FT_UInt)gloader->base.outline.n_points;
if ( num_points == num_base_points )
continue;
@@ -2310,7 +2313,7 @@
*
* 1) we have a `tricky' font that heavily relies on the interpreter to
* render glyphs correctly, for example DFKai-SB, or
- * 2) FT_RENDER_MODE_MONO (i.e, monochrome rendering) is requested.
+ * 2) FT_RENDER_MODE_MONO (i.e, monochome rendering) is requested.
*
* In those cases, backward compatibility needs to be turned off to get
* correct rendering. The rendering is then completely up to the
@@ -2716,7 +2719,7 @@
size->metrics->y_ppem < 24 )
glyph->outline.flags |= FT_OUTLINE_HIGH_PRECISION;
- FT_TRACE1(( " subglyphs = %u, contours = %hu, points = %hu,"
+ FT_TRACE1(( " subglyphs = %u, contours = %hd, points = %hd,"
" flags = 0x%.3x\n",
loader.gloader->base.num_subglyphs,
glyph->outline.n_contours,
diff --git a/src/truetype/ttgload.h b/src/truetype/ttgload.h
index 22ea967..f18637d 100644
--- a/src/truetype/ttgload.h
+++ b/src/truetype/ttgload.h
@@ -4,7 +4,7 @@
*
* TrueType Glyph Loader (specification).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/truetype/ttgxvar.c b/src/truetype/ttgxvar.c
index 4f0083c..ad4f266 100644
--- a/src/truetype/ttgxvar.c
+++ b/src/truetype/ttgxvar.c
@@ -4,7 +4,7 @@
*
* TrueType GX Font Variation loader
*
- * Copyright (C) 2004-2024 by
+ * Copyright (C) 2004-2023 by
* David Turner, Robert Wilhelm, Werner Lemberg, and George Williams.
*
* This file is part of the FreeType project, and may only be used,
@@ -129,6 +129,9 @@
* stream ::
* The data stream.
*
+ * size ::
+ * The size of the table holding the data.
+ *
* @Output:
* point_cnt ::
* The number of points read. A zero value means that
@@ -141,14 +144,14 @@
*/
static FT_UShort*
ft_var_readpackedpoints( FT_Stream stream,
+ FT_ULong size,
FT_UInt *point_cnt )
{
FT_UShort *points = NULL;
FT_UInt n;
- FT_UInt runcnt, cnt;
+ FT_UInt runcnt;
FT_UInt i, j;
FT_UShort first;
- FT_Byte* p;
FT_Memory memory = stream->memory;
FT_Error error;
@@ -166,60 +169,56 @@
n |= FT_GET_BYTE();
}
- if ( FT_QNEW_ARRAY( points, n ) )
+ if ( n > size )
+ {
+ FT_TRACE1(( "ft_var_readpackedpoints: number of points too large\n" ));
+ return NULL;
+ }
+
+ /* in the nested loops below we increase `i' twice; */
+ /* it is faster to simply allocate one more slot */
+ /* than to add another test within the loop */
+ if ( FT_QNEW_ARRAY( points, n + 1 ) )
return NULL;
- p = stream->cursor;
+ *point_cnt = n;
+
first = 0;
i = 0;
while ( i < n )
{
- if ( p >= stream->limit )
- goto Fail;
-
- runcnt = FT_NEXT_BYTE( p );
- cnt = runcnt & GX_PT_POINT_RUN_COUNT_MASK;
-
- /* first point not included in run count */
- cnt++;
- if ( cnt > n - i )
- cnt = n - i;
-
+ runcnt = FT_GET_BYTE();
if ( runcnt & GX_PT_POINTS_ARE_WORDS )
{
- if ( 2 * cnt > (FT_UInt)( stream->limit - p ) )
- goto Fail;
+ runcnt &= GX_PT_POINT_RUN_COUNT_MASK;
+ first += FT_GET_USHORT();
+ points[i++] = first;
- for ( j = 0; j < cnt; j++ )
+ /* first point not included in run count */
+ for ( j = 0; j < runcnt; j++ )
{
- first += FT_NEXT_USHORT( p );
+ first += FT_GET_USHORT();
points[i++] = first;
+ if ( i >= n )
+ break;
}
}
else
{
- if ( cnt > (FT_UInt)( stream->limit - p ) )
- goto Fail;
+ first += FT_GET_BYTE();
+ points[i++] = first;
- for ( j = 0; j < cnt; j++ )
+ for ( j = 0; j < runcnt; j++ )
{
- first += FT_NEXT_BYTE( p );
+ first += FT_GET_BYTE();
points[i++] = first;
+ if ( i >= n )
+ break;
}
}
}
- stream->cursor = p;
-
- *point_cnt = n;
-
return points;
-
- Fail:
- FT_TRACE1(( "ft_var_readpackedpoints: invalid table\n" ));
-
- FT_FREE( points );
- return NULL;
}
@@ -241,6 +240,9 @@
* stream ::
* The data stream.
*
+ * size ::
+ * The size of the table holding the data.
+ *
* delta_cnt ::
* The number of deltas to be read.
*
@@ -256,12 +258,13 @@
*/
static FT_Fixed*
ft_var_readpackeddeltas( FT_Stream stream,
+ FT_ULong size,
FT_UInt delta_cnt )
{
FT_Fixed *deltas = NULL;
FT_UInt runcnt, cnt;
FT_UInt i, j;
- FT_Byte* p;
+ FT_UInt bytes_used;
FT_Memory memory = stream->memory;
FT_Error error;
@@ -269,51 +272,68 @@
if ( FT_QNEW_ARRAY( deltas, delta_cnt ) )
return NULL;
- p = stream->cursor;
- i = 0;
- while ( i < delta_cnt )
- {
- if ( p >= stream->limit )
- goto Fail;
+ i = 0;
+ bytes_used = 0;
- runcnt = FT_NEXT_BYTE( p );
+ while ( i < delta_cnt && bytes_used < size )
+ {
+ runcnt = FT_GET_BYTE();
cnt = runcnt & GX_DT_DELTA_RUN_COUNT_MASK;
- /* first point not included in run count */
- cnt++;
- if ( cnt > delta_cnt - i )
- cnt = delta_cnt - i;
+ bytes_used++;
if ( runcnt & GX_DT_DELTAS_ARE_ZERO )
{
- for ( j = 0; j < cnt; j++ )
+ /* `cnt` + 1 zeroes get added */
+ for ( j = 0; j <= cnt && i < delta_cnt; j++ )
deltas[i++] = 0;
}
else if ( runcnt & GX_DT_DELTAS_ARE_WORDS )
{
- if ( 2 * cnt > (FT_UInt)( stream->limit - p ) )
+ /* `cnt` + 1 shorts from the stack */
+ bytes_used += 2 * ( cnt + 1 );
+ if ( bytes_used > size )
+ {
+ FT_TRACE1(( "ft_var_readpackeddeltas:"
+ " number of short deltas too large\n" ));
goto Fail;
+ }
- for ( j = 0; j < cnt; j++ )
- deltas[i++] = FT_intToFixed( FT_NEXT_SHORT( p ) );
+ for ( j = 0; j <= cnt && i < delta_cnt; j++ )
+ deltas[i++] = FT_intToFixed( FT_GET_SHORT() );
}
else
{
- if ( cnt > (FT_UInt)( stream->limit - p ) )
+ /* `cnt` + 1 signed bytes from the stack */
+ bytes_used += cnt + 1;
+ if ( bytes_used > size )
+ {
+ FT_TRACE1(( "ft_var_readpackeddeltas:"
+ " number of byte deltas too large\n" ));
goto Fail;
+ }
- for ( j = 0; j < cnt; j++ )
- deltas[i++] = FT_intToFixed( FT_NEXT_CHAR( p ) );
+ for ( j = 0; j <= cnt && i < delta_cnt; j++ )
+ deltas[i++] = FT_intToFixed( FT_GET_CHAR() );
+ }
+
+ if ( j <= cnt )
+ {
+ FT_TRACE1(( "ft_var_readpackeddeltas:"
+ " number of deltas too large\n" ));
+ goto Fail;
}
}
- stream->cursor = p;
+ if ( i < delta_cnt )
+ {
+ FT_TRACE1(( "ft_var_readpackeddeltas: not enough deltas\n" ));
+ goto Fail;
+ }
return deltas;
Fail:
- FT_TRACE1(( "ft_var_readpackeddeltas: invalid table\n" ));
-
FT_FREE( deltas );
return NULL;
}
@@ -576,7 +596,7 @@
for ( j = 0; j < itemStore->axisCount; j++ )
{
- FT_Int start, peak, end;
+ FT_Short start, peak, end;
if ( FT_READ_SHORT( start ) ||
@@ -584,10 +604,6 @@
FT_READ_SHORT( end ) )
goto Exit;
- /* immediately tag invalid ranges with special peak = 0 */
- if ( ( start < 0 && end > 0 ) || start > peak || peak > end )
- peak = 0;
-
axisCoords[j].startCoord = FT_fdot14ToFixed( start );
axisCoords[j].peakCoord = FT_fdot14ToFixed( peak );
axisCoords[j].endCoord = FT_fdot14ToFixed( end );
@@ -1008,9 +1024,6 @@
if ( innerIndex >= varData->itemCount )
return 0; /* Out of range. */
- if ( varData->regionIdxCount == 0 )
- return 0; /* Avoid "applying zero offset to null pointer". */
-
if ( varData->regionIdxCount < 16 )
{
deltaSet = deltaSetStack;
@@ -1061,32 +1074,43 @@
/* inner loop steps through axes in this region */
for ( j = 0; j < itemStore->axisCount; j++, axis++ )
{
- FT_Fixed ncv = ttface->blend->normalizedcoords[j];
+ /* compute the scalar contribution of this axis; */
+ /* ignore invalid ranges */
+ if ( axis->startCoord > axis->peakCoord ||
+ axis->peakCoord > axis->endCoord )
+ continue;
+ else if ( axis->startCoord < 0 &&
+ axis->endCoord > 0 &&
+ axis->peakCoord != 0 )
+ continue;
- /* compute the scalar contribution of this axis */
- /* with peak of 0 used for invalid axes */
- if ( axis->peakCoord == ncv ||
- axis->peakCoord == 0 )
+ /* peak of 0 means ignore this axis */
+ else if ( axis->peakCoord == 0 )
+ continue;
+
+ else if ( ttface->blend->normalizedcoords[j] == axis->peakCoord )
continue;
/* ignore this region if coords are out of range */
- else if ( ncv <= axis->startCoord ||
- ncv >= axis->endCoord )
+ else if ( ttface->blend->normalizedcoords[j] <= axis->startCoord ||
+ ttface->blend->normalizedcoords[j] >= axis->endCoord )
{
scalar = 0;
break;
}
/* cumulative product of all the axis scalars */
- else if ( ncv < axis->peakCoord )
- scalar = FT_MulDiv( scalar,
- ncv - axis->startCoord,
- axis->peakCoord - axis->startCoord );
- else /* ncv > axis->peakCoord */
- scalar = FT_MulDiv( scalar,
- axis->endCoord - ncv,
- axis->endCoord - axis->peakCoord );
+ else if ( ttface->blend->normalizedcoords[j] < axis->peakCoord )
+ scalar =
+ FT_MulDiv( scalar,
+ ttface->blend->normalizedcoords[j] - axis->startCoord,
+ axis->peakCoord - axis->startCoord );
+ else
+ scalar =
+ FT_MulDiv( scalar,
+ axis->endCoord - ttface->blend->normalizedcoords[j],
+ axis->endCoord - axis->peakCoord );
} /* per-axis loop */
@@ -1896,55 +1920,60 @@
for ( i = 0; i < blend->num_axis; i++ )
{
- FT_Fixed ncv = blend->normalizedcoords[i];
-
-
- FT_TRACE6(( " axis %d coordinate %.5f:\n", i, (double)ncv / 65536 ));
+ FT_TRACE6(( " axis %d coordinate %.5f:\n",
+ i, (double)blend->normalizedcoords[i] / 65536 ));
/* It's not clear why (for intermediate tuples) we don't need */
/* to check against start/end -- the documentation says we don't. */
/* Similarly, it's unclear why we don't need to scale along the */
/* axis. */
- if ( tuple_coords[i] == ncv )
- {
- FT_TRACE6(( " tuple coordinate %.5f fits perfectly\n",
- (double)tuple_coords[i] / 65536 ));
- /* `apply' does not change */
- continue;
- }
-
if ( tuple_coords[i] == 0 )
{
FT_TRACE6(( " tuple coordinate is zero, ignore\n" ));
continue;
}
+ if ( blend->normalizedcoords[i] == 0 )
+ {
+ FT_TRACE6(( " axis coordinate is zero, stop\n" ));
+ apply = 0;
+ break;
+ }
+
+ if ( blend->normalizedcoords[i] == tuple_coords[i] )
+ {
+ FT_TRACE6(( " tuple coordinate %.5f fits perfectly\n",
+ (double)tuple_coords[i] / 65536 ));
+ /* `apply' does not change */
+ continue;
+ }
+
if ( !( tupleIndex & GX_TI_INTERMEDIATE_TUPLE ) )
{
/* not an intermediate tuple */
- if ( ( tuple_coords[i] > ncv && ncv > 0 ) ||
- ( tuple_coords[i] < ncv && ncv < 0 ) )
- {
- FT_TRACE6(( " tuple coordinate %.5f fits\n",
- (double)tuple_coords[i] / 65536 ));
- apply = FT_MulDiv( apply, ncv, tuple_coords[i] );
- }
- else
+ if ( blend->normalizedcoords[i] < FT_MIN( 0, tuple_coords[i] ) ||
+ blend->normalizedcoords[i] > FT_MAX( 0, tuple_coords[i] ) )
{
FT_TRACE6(( " tuple coordinate %.5f is exceeded, stop\n",
(double)tuple_coords[i] / 65536 ));
apply = 0;
break;
}
+
+ FT_TRACE6(( " tuple coordinate %.5f fits\n",
+ (double)tuple_coords[i] / 65536 ));
+ apply = FT_MulDiv( apply,
+ blend->normalizedcoords[i],
+ tuple_coords[i] );
}
else
{
/* intermediate tuple */
- if ( ncv <= im_start_coords[i] ||
- ncv >= im_end_coords[i] )
+ if ( blend->normalizedcoords[i] <= im_start_coords[i] ||
+ blend->normalizedcoords[i] >= im_end_coords[i] )
{
FT_TRACE6(( " intermediate tuple range ]%.5f;%.5f[ is exceeded,"
" stop\n",
@@ -1957,13 +1986,13 @@
FT_TRACE6(( " intermediate tuple range ]%.5f;%.5f[ fits\n",
(double)im_start_coords[i] / 65536,
(double)im_end_coords[i] / 65536 ));
- if ( ncv < tuple_coords[i] )
+ if ( blend->normalizedcoords[i] < tuple_coords[i] )
apply = FT_MulDiv( apply,
- ncv - im_start_coords[i],
+ blend->normalizedcoords[i] - im_start_coords[i],
tuple_coords[i] - im_start_coords[i] );
- else /* ncv > tuple_coords[i] */
+ else
apply = FT_MulDiv( apply,
- im_end_coords[i] - ncv,
+ im_end_coords[i] - blend->normalizedcoords[i],
im_end_coords[i] - tuple_coords[i] );
}
}
@@ -2112,12 +2141,11 @@
outerIndex,
innerIndex );
- /* Convert delta in F2DOT14 to 16.16 before adding. */
- v += MUL_INT( delta, 4 );
+ v += delta << 2;
- /* Clamp value to range [-1, 1]. */
- v = v >= 0x10000L ? 0x10000 : v;
- v = v <= -0x10000L ? -0x10000 : v;
+ /* Clamp value range. */
+ v = v >= 0x10000L ? 0x10000 : v;
+ v = v <= -0x10000L ? -0x10000 : v;
new_normalized[i] = v;
}
@@ -2693,8 +2721,9 @@
FT_UInt n;
- if ( FT_DUP( mmvar, ttface->blend->mmvar, ttface->blend->mmvar_len ) )
+ if ( FT_ALLOC( mmvar, ttface->blend->mmvar_len ) )
goto Exit;
+ FT_MEM_COPY( mmvar, ttface->blend->mmvar, ttface->blend->mmvar_len );
axis_flags =
(FT_UShort*)( (char*)mmvar + mmvar_size );
@@ -3504,10 +3533,9 @@
FT_ULong here;
FT_UInt i, j;
- FT_Fixed* peak_coords = NULL;
- FT_Fixed* tuple_coords;
- FT_Fixed* im_start_coords;
- FT_Fixed* im_end_coords;
+ FT_Fixed* tuple_coords = NULL;
+ FT_Fixed* im_start_coords = NULL;
+ FT_Fixed* im_end_coords = NULL;
GX_Blend blend = face->blend;
@@ -3528,16 +3556,16 @@
{
FT_TRACE2(( "\n" ));
FT_TRACE2(( "tt_face_vary_cvt: no blend specified\n" ));
-
- return FT_Err_Ok;
+ error = FT_Err_Ok;
+ goto Exit;
}
if ( !face->cvt )
{
FT_TRACE2(( "\n" ));
FT_TRACE2(( "tt_face_vary_cvt: no `cvt ' table\n" ));
-
- return FT_Err_Ok;
+ error = FT_Err_Ok;
+ goto Exit;
}
error = face->goto_table( face, TTAG_cvar, stream, &table_len );
@@ -3545,11 +3573,15 @@
{
FT_TRACE2(( "is missing\n" ));
- return FT_Err_Ok;
+ error = FT_Err_Ok;
+ goto Exit;
}
if ( FT_FRAME_ENTER( table_len ) )
- return FT_Err_Ok;
+ {
+ error = FT_Err_Ok;
+ goto Exit;
+ }
table_start = FT_Stream_FTell( stream );
if ( FT_GET_LONG() != 0x00010000L )
@@ -3562,6 +3594,11 @@
FT_TRACE2(( "loaded\n" ));
+ if ( FT_NEW_ARRAY( tuple_coords, blend->num_axis ) ||
+ FT_NEW_ARRAY( im_start_coords, blend->num_axis ) ||
+ FT_NEW_ARRAY( im_end_coords, blend->num_axis ) )
+ goto FExit;
+
tupleCount = FT_GET_USHORT();
offsetToData = FT_GET_USHORT();
@@ -3584,8 +3621,9 @@
FT_Stream_SeekSet( stream, offsetToData );
- sharedpoints = ft_var_readpackedpoints( stream, &spoint_count );
-
+ sharedpoints = ft_var_readpackedpoints( stream,
+ table_len,
+ &spoint_count );
offsetToData = FT_Stream_FTell( stream );
FT_Stream_SeekSet( stream, here );
@@ -3596,12 +3634,8 @@
tupleCount & GX_TC_TUPLE_COUNT_MASK,
( tupleCount & GX_TC_TUPLE_COUNT_MASK ) == 1 ? "" : "s" ));
- if ( FT_QNEW_ARRAY( peak_coords, 3 * blend->num_axis ) ||
- FT_NEW_ARRAY( cvt_deltas, face->cvt_size ) )
- goto Exit;
-
- im_start_coords = peak_coords + blend->num_axis;
- im_end_coords = im_start_coords + blend->num_axis;
+ if ( FT_NEW_ARRAY( cvt_deltas, face->cvt_size ) )
+ goto FExit;
for ( i = 0; i < ( tupleCount & GX_TC_TUPLE_COUNT_MASK ); i++ )
{
@@ -3618,19 +3652,32 @@
if ( tupleIndex & GX_TI_EMBEDDED_TUPLE_COORD )
{
for ( j = 0; j < blend->num_axis; j++ )
- peak_coords[j] = FT_fdot14ToFixed( FT_GET_SHORT() );
- tuple_coords = peak_coords;
+ tuple_coords[j] = FT_fdot14ToFixed( FT_GET_SHORT() );
}
- else if ( ( tupleIndex & GX_TI_TUPLE_INDEX_MASK ) < blend->tuplecount )
- tuple_coords = blend->tuplecoords +
- ( tupleIndex & GX_TI_TUPLE_INDEX_MASK ) * blend->num_axis;
- else
+ else if ( ( tupleIndex & GX_TI_TUPLE_INDEX_MASK ) >= blend->tuplecount )
{
FT_TRACE2(( "tt_face_vary_cvt:"
" invalid tuple index\n" ));
error = FT_THROW( Invalid_Table );
- goto Exit;
+ goto FExit;
+ }
+ else
+ {
+ if ( !blend->tuplecoords )
+ {
+ FT_TRACE2(( "tt_face_vary_cvt:"
+ " no valid tuple coordinates available\n" ));
+
+ error = FT_THROW( Invalid_Table );
+ goto FExit;
+ }
+
+ FT_MEM_COPY(
+ tuple_coords,
+ blend->tuplecoords +
+ ( tupleIndex & GX_TI_TUPLE_INDEX_MASK ) * blend->num_axis,
+ blend->num_axis * sizeof ( FT_Fixed ) );
}
if ( tupleIndex & GX_TI_INTERMEDIATE_TUPLE )
@@ -3659,7 +3706,9 @@
if ( tupleIndex & GX_TI_PRIVATE_POINT_NUMBERS )
{
- localpoints = ft_var_readpackedpoints( stream, &point_count );
+ localpoints = ft_var_readpackedpoints( stream,
+ table_len,
+ &point_count );
points = localpoints;
}
else
@@ -3670,6 +3719,7 @@
}
deltas = ft_var_readpackeddeltas( stream,
+ table_len,
point_count == 0 ? face->cvt_size
: point_count );
@@ -3770,20 +3820,22 @@
for ( i = 0; i < face->cvt_size; i++ )
face->cvt[i] += FT_fixedToFdot6( cvt_deltas[i] );
- /* Iterate over all `FT_Size` objects and set `cvt_ready` to -1 */
- /* to trigger rescaling of all CVT values. */
- FT_List_Iterate( &root->sizes_list,
- tt_cvt_ready_iterator,
- NULL );
+ FExit:
+ FT_FRAME_EXIT();
Exit:
if ( sharedpoints != ALL_POINTS )
FT_FREE( sharedpoints );
+ FT_FREE( tuple_coords );
+ FT_FREE( im_start_coords );
+ FT_FREE( im_end_coords );
FT_FREE( cvt_deltas );
- FT_FREE( peak_coords );
- FExit:
- FT_FRAME_EXIT();
+ /* iterate over all FT_Size objects and set `cvt_ready' to -1 */
+ /* to trigger rescaling of all CVT values */
+ FT_List_Iterate( &root->sizes_list,
+ tt_cvt_ready_iterator,
+ NULL );
return error;
@@ -4047,10 +4099,9 @@
FT_ULong here;
FT_UInt i, j;
- FT_Fixed* peak_coords = NULL;
- FT_Fixed* tuple_coords;
- FT_Fixed* im_start_coords;
- FT_Fixed* im_end_coords;
+ FT_Fixed* tuple_coords = NULL;
+ FT_Fixed* im_start_coords = NULL;
+ FT_Fixed* im_end_coords = NULL;
GX_Blend blend = face->blend;
@@ -4085,17 +4136,27 @@
return FT_Err_Ok;
}
+ if ( FT_NEW_ARRAY( points_org, n_points ) ||
+ FT_NEW_ARRAY( points_out, n_points ) ||
+ FT_NEW_ARRAY( has_delta, n_points ) )
+ goto Fail1;
+
dataSize = blend->glyphoffsets[glyph_index + 1] -
blend->glyphoffsets[glyph_index];
if ( FT_STREAM_SEEK( blend->glyphoffsets[glyph_index] ) ||
FT_FRAME_ENTER( dataSize ) )
- return error;
+ goto Fail1;
glyph_start = FT_Stream_FTell( stream );
/* each set of glyph variation data is formatted similarly to `cvar' */
+ if ( FT_NEW_ARRAY( tuple_coords, blend->num_axis ) ||
+ FT_NEW_ARRAY( im_start_coords, blend->num_axis ) ||
+ FT_NEW_ARRAY( im_end_coords, blend->num_axis ) )
+ goto Fail2;
+
tupleCount = FT_GET_USHORT();
offsetToData = FT_GET_USHORT();
@@ -4107,7 +4168,7 @@
" invalid glyph variation array header\n" ));
error = FT_THROW( Invalid_Table );
- goto FExit;
+ goto Fail2;
}
offsetToData += glyph_start;
@@ -4118,8 +4179,9 @@
FT_Stream_SeekSet( stream, offsetToData );
- sharedpoints = ft_var_readpackedpoints( stream, &spoint_count );
-
+ sharedpoints = ft_var_readpackedpoints( stream,
+ blend->gvar_size,
+ &spoint_count );
offsetToData = FT_Stream_FTell( stream );
FT_Stream_SeekSet( stream, here );
@@ -4130,16 +4192,9 @@
tupleCount & GX_TC_TUPLE_COUNT_MASK,
( tupleCount & GX_TC_TUPLE_COUNT_MASK ) == 1 ? "" : "s" ));
- if ( FT_QNEW_ARRAY( peak_coords, 3 * blend->num_axis ) ||
- FT_NEW_ARRAY( point_deltas_x, 2 * n_points ) ||
- FT_QNEW_ARRAY( points_org, n_points ) ||
- FT_QNEW_ARRAY( points_out, n_points ) ||
- FT_QNEW_ARRAY( has_delta, n_points ) )
- goto Exit;
-
- im_start_coords = peak_coords + blend->num_axis;
- im_end_coords = im_start_coords + blend->num_axis;
- point_deltas_y = point_deltas_x + n_points;
+ if ( FT_NEW_ARRAY( point_deltas_x, n_points ) ||
+ FT_NEW_ARRAY( point_deltas_y, n_points ) )
+ goto Fail3;
for ( j = 0; j < n_points; j++ )
{
@@ -4162,20 +4217,22 @@
if ( tupleIndex & GX_TI_EMBEDDED_TUPLE_COORD )
{
for ( j = 0; j < blend->num_axis; j++ )
- peak_coords[j] = FT_fdot14ToFixed( FT_GET_SHORT() );
- tuple_coords = peak_coords;
+ tuple_coords[j] = FT_fdot14ToFixed( FT_GET_SHORT() );
}
- else if ( ( tupleIndex & GX_TI_TUPLE_INDEX_MASK ) < blend->tuplecount )
- tuple_coords = blend->tuplecoords +
- ( tupleIndex & GX_TI_TUPLE_INDEX_MASK ) * blend->num_axis;
- else
+ else if ( ( tupleIndex & GX_TI_TUPLE_INDEX_MASK ) >= blend->tuplecount )
{
FT_TRACE2(( "TT_Vary_Apply_Glyph_Deltas:"
" invalid tuple index\n" ));
error = FT_THROW( Invalid_Table );
- goto Exit;
+ goto Fail3;
}
+ else
+ FT_MEM_COPY(
+ tuple_coords,
+ blend->tuplecoords +
+ ( tupleIndex & GX_TI_TUPLE_INDEX_MASK ) * blend->num_axis,
+ blend->num_axis * sizeof ( FT_Fixed ) );
if ( tupleIndex & GX_TI_INTERMEDIATE_TUPLE )
{
@@ -4203,7 +4260,9 @@
if ( tupleIndex & GX_TI_PRIVATE_POINT_NUMBERS )
{
- localpoints = ft_var_readpackedpoints( stream, &point_count );
+ localpoints = ft_var_readpackedpoints( stream,
+ blend->gvar_size,
+ &point_count );
points = localpoints;
}
else
@@ -4213,9 +4272,11 @@
}
deltas_x = ft_var_readpackeddeltas( stream,
+ blend->gvar_size,
point_count == 0 ? n_points
: point_count );
deltas_y = ft_var_readpackeddeltas( stream,
+ blend->gvar_size,
point_count == 0 ? n_points
: point_count );
@@ -4399,17 +4460,23 @@
unrounded[n_points - 2].y ) / 64;
}
- Exit:
+ Fail3:
+ FT_FREE( point_deltas_x );
+ FT_FREE( point_deltas_y );
+
+ Fail2:
if ( sharedpoints != ALL_POINTS )
FT_FREE( sharedpoints );
+ FT_FREE( tuple_coords );
+ FT_FREE( im_start_coords );
+ FT_FREE( im_end_coords );
+
+ FT_FRAME_EXIT();
+
+ Fail1:
FT_FREE( points_org );
FT_FREE( points_out );
FT_FREE( has_delta );
- FT_FREE( peak_coords );
- FT_FREE( point_deltas_x );
-
- FExit:
- FT_FRAME_EXIT();
return error;
}
diff --git a/src/truetype/ttgxvar.h b/src/truetype/ttgxvar.h
index 9326011..e3da6d1 100644
--- a/src/truetype/ttgxvar.h
+++ b/src/truetype/ttgxvar.h
@@ -4,7 +4,7 @@
*
* TrueType GX Font Variation loader (specification)
*
- * Copyright (C) 2004-2024 by
+ * Copyright (C) 2004-2023 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/src/truetype/ttinterp.c b/src/truetype/ttinterp.c
index 951891d..79df455 100644
--- a/src/truetype/ttinterp.c
+++ b/src/truetype/ttinterp.c
@@ -4,7 +4,7 @@
*
* TrueType bytecode interpreter (body).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -5270,11 +5270,11 @@
FT_UShort refp;
FT_F26Dot6 dx, dy;
- FT_UShort contour, bounds;
+ FT_Short contour, bounds;
FT_UShort start, limit, i;
- contour = (FT_UShort)args[0];
+ contour = (FT_Short)args[0];
bounds = ( exc->GS.gep2 == 0 ) ? 1 : exc->zp2.n_contours;
if ( BOUNDS( contour, bounds ) )
@@ -5290,13 +5290,15 @@
if ( contour == 0 )
start = 0;
else
- start = exc->zp2.contours[contour - 1] + 1 - exc->zp2.first_point;
+ start = (FT_UShort)( exc->zp2.contours[contour - 1] + 1 -
+ exc->zp2.first_point );
/* we use the number of points if in the twilight zone */
if ( exc->GS.gep2 == 0 )
limit = exc->zp2.n_points;
else
- limit = exc->zp2.contours[contour] + 1 - exc->zp2.first_point;
+ limit = (FT_UShort)( exc->zp2.contours[contour] -
+ exc->zp2.first_point + 1 );
for ( i = start; i < limit; i++ )
{
@@ -5339,9 +5341,9 @@
/* Normal zone's `n_points' includes phantoms, so must */
/* use end of last contour. */
if ( exc->GS.gep2 == 0 )
- limit = exc->zp2.n_points;
+ limit = (FT_UShort)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;
+ limit = (FT_UShort)( exc->zp2.contours[exc->zp2.n_contours - 1] + 1 );
else
limit = 0;
diff --git a/src/truetype/ttinterp.h b/src/truetype/ttinterp.h
index 4f1a9bb..e98e258 100644
--- a/src/truetype/ttinterp.h
+++ b/src/truetype/ttinterp.h
@@ -4,7 +4,7 @@
*
* TrueType bytecode interpreter (specification).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/truetype/ttobjs.c b/src/truetype/ttobjs.c
index d0ac318..5b56af7 100644
--- a/src/truetype/ttobjs.c
+++ b/src/truetype/ttobjs.c
@@ -4,7 +4,7 @@
*
* Objects manager (body).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -115,7 +115,7 @@
FT_LOCAL_DEF( FT_Error )
tt_glyphzone_new( FT_Memory memory,
FT_UShort maxPoints,
- FT_UShort maxContours,
+ FT_Short maxContours,
TT_GlyphZone zone )
{
FT_Error error;
@@ -152,20 +152,18 @@
static const FT_String*
tt_skip_pdffont_random_tag( const FT_String* name )
{
- if ( ft_isupper( name[0] ) &&
- ft_isupper( name[1] ) &&
- ft_isupper( name[2] ) &&
- ft_isupper( name[3] ) &&
- ft_isupper( name[4] ) &&
- ft_isupper( name[5] ) &&
- '+' == name[6] &&
- name[7] )
- {
- FT_TRACE7(( "name without randomization tag: %s\n", name + 7 ));
- return name + 7;
- }
+ unsigned int i;
- return name;
+
+ if ( ft_strlen( name ) < 8 || name[6] != '+' )
+ return name;
+
+ for ( i = 0; i < 6; i++ )
+ if ( !ft_isupper( name[i] ) )
+ return name;
+
+ FT_TRACE7(( "name without randomization tag: %s\n", name + 7 ));
+ return name + 7;
}
@@ -256,20 +254,17 @@
{
FT_Error error;
FT_UInt32 checksum = 0;
- FT_Byte* p;
- FT_Int shift;
+ FT_UInt i;
if ( FT_FRAME_ENTER( length ) )
return 0;
- p = (FT_Byte*)stream->cursor;
-
for ( ; length > 3; length -= 4 )
- checksum += FT_NEXT_ULONG( p );
+ checksum += (FT_UInt32)FT_GET_ULONG();
- for ( shift = 24; length > 0; length--, shift -=8 )
- checksum += (FT_UInt32)FT_NEXT_BYTE( p ) << shift;
+ for ( i = 3; length > 0; length--, i-- )
+ checksum += (FT_UInt32)FT_GET_BYTE() << ( i * 8 );
FT_FRAME_EXIT();
@@ -787,7 +782,8 @@
FT_UInt instance_index = (FT_UInt)face_index >> 16;
- if ( FT_HAS_MULTIPLE_MASTERS( ttface ) )
+ if ( FT_HAS_MULTIPLE_MASTERS( ttface ) &&
+ instance_index > 0 )
{
error = FT_Set_Named_Instance( ttface, instance_index );
if ( error )
@@ -994,16 +990,16 @@
FT_Error error;
FT_UInt i;
+ /* unscaled CVT values are already stored in 26.6 format */
+ FT_Fixed scale = size->ttmetrics.scale >> 6;
+
/* Scale the cvt values to the new ppem. */
/* By default, we use the y ppem value for scaling. */
FT_TRACE6(( "CVT values:\n" ));
for ( i = 0; i < size->cvt_size; i++ )
{
- /* Unscaled CVT values are already stored in 26.6 format. */
- /* Note that this scaling operation is very sensitive to rounding; */
- /* the integer division by 64 must be applied to the first argument. */
- size->cvt[i] = FT_MulFix( face->cvt[i] / 64, size->ttmetrics.scale );
+ size->cvt[i] = FT_MulFix( face->cvt[i], scale );
FT_TRACE6(( " %3d: %f (%f)\n",
i, (double)face->cvt[i] / 64, (double)size->cvt[i] / 64 ));
}
diff --git a/src/truetype/ttobjs.h b/src/truetype/ttobjs.h
index 9c36ca7..40eb37b 100644
--- a/src/truetype/ttobjs.h
+++ b/src/truetype/ttobjs.h
@@ -4,7 +4,7 @@
*
* Objects manager (specification).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -105,7 +105,7 @@
FT_LOCAL( FT_Error )
tt_glyphzone_new( FT_Memory memory,
FT_UShort maxPoints,
- FT_UShort maxContours,
+ FT_Short maxContours,
TT_GlyphZone zone );
#endif /* TT_USE_BYTECODE_INTERPRETER */
diff --git a/src/truetype/ttpload.c b/src/truetype/ttpload.c
index 9505b5f..54a64c7 100644
--- a/src/truetype/ttpload.c
+++ b/src/truetype/ttpload.c
@@ -4,7 +4,7 @@
*
* TrueType-specific tables loader (body).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/truetype/ttpload.h b/src/truetype/ttpload.h
index bc32b58..ed229fa 100644
--- a/src/truetype/ttpload.h
+++ b/src/truetype/ttpload.h
@@ -4,7 +4,7 @@
*
* TrueType-specific tables loader (specification).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/type1/module.mk b/src/type1/module.mk
index 97d6111..33bceff 100644
--- a/src/type1/module.mk
+++ b/src/type1/module.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 1996-2024 by
+# Copyright (C) 1996-2023 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/src/type1/rules.mk b/src/type1/rules.mk
index 7cabd14..efe744b 100644
--- a/src/type1/rules.mk
+++ b/src/type1/rules.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 1996-2024 by
+# Copyright (C) 1996-2023 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/src/type1/t1afm.c b/src/type1/t1afm.c
index a63cd4d..d9b9398 100644
--- a/src/type1/t1afm.c
+++ b/src/type1/t1afm.c
@@ -4,7 +4,7 @@
*
* AFM support for Type 1 fonts (body).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/type1/t1afm.h b/src/type1/t1afm.h
index 7f5cdda..e0d5aa5 100644
--- a/src/type1/t1afm.h
+++ b/src/type1/t1afm.h
@@ -4,7 +4,7 @@
*
* AFM support for Type 1 fonts (specification).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/type1/t1driver.c b/src/type1/t1driver.c
index 8ed0191..a4cdf37 100644
--- a/src/type1/t1driver.c
+++ b/src/type1/t1driver.c
@@ -4,7 +4,7 @@
*
* Type 1 driver interface (body).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -312,7 +312,10 @@
{
retval = ft_strlen( type1->glyph_names[idx] ) + 1;
if ( value && value_len >= retval )
+ {
ft_memcpy( value, (void *)( type1->glyph_names[idx] ), retval );
+ ((FT_Char *)value)[retval - 1] = (FT_Char)'\0';
+ }
}
break;
@@ -341,8 +344,11 @@
{
retval = ft_strlen( type1->encoding.char_name[idx] ) + 1;
if ( value && value_len >= retval )
+ {
ft_memcpy( value, (void *)( type1->encoding.char_name[idx] ),
- retval );
+ retval - 1 );
+ ((FT_Char *)value)[retval - 1] = (FT_Char)'\0';
+ }
}
break;
diff --git a/src/type1/t1driver.h b/src/type1/t1driver.h
index 5ff52b5..ee7fcf4 100644
--- a/src/type1/t1driver.h
+++ b/src/type1/t1driver.h
@@ -4,7 +4,7 @@
*
* High-level Type 1 driver interface (specification).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/type1/t1errors.h b/src/type1/t1errors.h
index 8aeb24a..2fbd1e5 100644
--- a/src/type1/t1errors.h
+++ b/src/type1/t1errors.h
@@ -4,7 +4,7 @@
*
* Type 1 error codes (specification only).
*
- * Copyright (C) 2001-2024 by
+ * Copyright (C) 2001-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/type1/t1gload.c b/src/type1/t1gload.c
index c29e682..a32a464 100644
--- a/src/type1/t1gload.c
+++ b/src/type1/t1gload.c
@@ -4,7 +4,7 @@
*
* Type 1 Glyph Loader (body).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/type1/t1gload.h b/src/type1/t1gload.h
index 17a6a59..c064847 100644
--- a/src/type1/t1gload.h
+++ b/src/type1/t1gload.h
@@ -4,7 +4,7 @@
*
* Type 1 Glyph Loader (specification).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/type1/t1load.c b/src/type1/t1load.c
index ee7fb42..be7cd0f 100644
--- a/src/type1/t1load.c
+++ b/src/type1/t1load.c
@@ -4,7 +4,7 @@
*
* Type 1 font loader (body).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
@@ -751,7 +751,6 @@
PS_DesignMap dmap = blend->design_map + n;
- FT_FREE( dmap->blend_points );
FT_FREE( dmap->design_points );
dmap->num_points = 0;
}
@@ -1044,9 +1043,9 @@
}
/* allocate design map data */
- if ( FT_QNEW_ARRAY( map->design_points, num_points ) ||
- FT_QNEW_ARRAY( map->blend_points, num_points ) )
+ if ( FT_QNEW_ARRAY( map->design_points, num_points * 2 ) )
goto Exit;
+ map->blend_points = map->design_points + num_points;
map->num_points = (FT_Byte)num_points;
for ( p = 0; p < num_points; p++ )
@@ -1877,8 +1876,9 @@
}
/* t1_decrypt() shouldn't write to base -- make temporary copy */
- if ( FT_DUP( temp, base, size ) )
+ if ( FT_QALLOC( temp, size ) )
goto Fail;
+ FT_MEM_COPY( temp, base, size );
psaux->t1_decrypt( temp, size, 4330 );
size -= (FT_ULong)t1face->type1.private_dict.lenIV;
error = T1_Add_Table( table,
@@ -2090,8 +2090,9 @@
}
/* t1_decrypt() shouldn't write to base -- make temporary copy */
- if ( FT_DUP( temp, base, size ) )
+ if ( FT_QALLOC( temp, size ) )
goto Fail;
+ FT_MEM_COPY( temp, base, size );
psaux->t1_decrypt( temp, size, 4330 );
size -= (FT_ULong)t1face->type1.private_dict.lenIV;
error = T1_Add_Table( code_table,
@@ -2283,7 +2284,7 @@
T1_FIELD_DICT_PRIVATE )
#endif
- T1_FIELD_ZERO
+ { 0, T1_FIELD_LOCATION_CID_INFO, T1_FIELD_TYPE_NONE, 0, 0, 0, 0, 0, 0 }
};
@@ -2391,13 +2392,18 @@
T1_Field keyword = (T1_Field)t1_keywords;
- while ( keyword->len )
+ for (;;)
{
- FT_Byte* name = (FT_Byte*)keyword->ident;
+ FT_Byte* name;
- if ( keyword->len == len &&
- ft_memcmp( cur, name, len ) == 0 )
+ name = (FT_Byte*)keyword->ident;
+ if ( !name )
+ break;
+
+ if ( cur[0] == name[0] &&
+ len == ft_strlen( (const char *)name ) &&
+ ft_memcmp( cur, name, len ) == 0 )
{
/* We found it -- run the parsing callback! */
/* We record every instance of every field */
diff --git a/src/type1/t1load.h b/src/type1/t1load.h
index a45efa7..d8c9d2d 100644
--- a/src/type1/t1load.h
+++ b/src/type1/t1load.h
@@ -4,7 +4,7 @@
*
* Type 1 font loader (specification).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/type1/t1objs.c b/src/type1/t1objs.c
index b1b27c3..69e4fd5 100644
--- a/src/type1/t1objs.c
+++ b/src/type1/t1objs.c
@@ -4,7 +4,7 @@
*
* Type 1 objects manager (body).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/type1/t1objs.h b/src/type1/t1objs.h
index 3809370..03847b2 100644
--- a/src/type1/t1objs.h
+++ b/src/type1/t1objs.h
@@ -4,7 +4,7 @@
*
* Type 1 objects manager (specification).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/type1/t1parse.c b/src/type1/t1parse.c
index 3717ea7..6dec6c1 100644
--- a/src/type1/t1parse.c
+++ b/src/type1/t1parse.c
@@ -4,7 +4,7 @@
*
* Type 1 parser (body).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/type1/t1parse.h b/src/type1/t1parse.h
index a0a2134..0d9a286 100644
--- a/src/type1/t1parse.h
+++ b/src/type1/t1parse.h
@@ -4,7 +4,7 @@
*
* Type 1 parser (specification).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/type1/t1tokens.h b/src/type1/t1tokens.h
index 5a3d2f1..40f3609 100644
--- a/src/type1/t1tokens.h
+++ b/src/type1/t1tokens.h
@@ -4,7 +4,7 @@
*
* Type 1 tokenizer (specification).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/type1/type1.c b/src/type1/type1.c
index d7ff53c..d9bd8ca 100644
--- a/src/type1/type1.c
+++ b/src/type1/type1.c
@@ -4,7 +4,7 @@
*
* FreeType Type 1 driver component (body only).
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/type42/module.mk b/src/type42/module.mk
index 7895f48..d98b123 100644
--- a/src/type42/module.mk
+++ b/src/type42/module.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 2002-2024 by
+# Copyright (C) 2002-2023 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/src/type42/rules.mk b/src/type42/rules.mk
index 87f62a2..41cb358 100644
--- a/src/type42/rules.mk
+++ b/src/type42/rules.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 2002-2024 by
+# Copyright (C) 2002-2023 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/src/type42/t42drivr.c b/src/type42/t42drivr.c
index 25f507f..ee5fd44 100644
--- a/src/type42/t42drivr.c
+++ b/src/type42/t42drivr.c
@@ -4,7 +4,7 @@
*
* High-level Type 42 driver interface (body).
*
- * Copyright (C) 2002-2024 by
+ * Copyright (C) 2002-2023 by
* Roberto Alameda.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/type42/t42drivr.h b/src/type42/t42drivr.h
index 5b3852b..ec7da18 100644
--- a/src/type42/t42drivr.h
+++ b/src/type42/t42drivr.h
@@ -4,7 +4,7 @@
*
* High-level Type 42 driver interface (specification).
*
- * Copyright (C) 2002-2024 by
+ * Copyright (C) 2002-2023 by
* Roberto Alameda.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/type42/t42error.h b/src/type42/t42error.h
index f52205e..dcea9c4 100644
--- a/src/type42/t42error.h
+++ b/src/type42/t42error.h
@@ -4,7 +4,7 @@
*
* Type 42 error codes (specification only).
*
- * Copyright (C) 2002-2024 by
+ * Copyright (C) 2002-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/type42/t42objs.c b/src/type42/t42objs.c
index 7010ba8..bf4028e 100644
--- a/src/type42/t42objs.c
+++ b/src/type42/t42objs.c
@@ -4,7 +4,7 @@
*
* Type 42 objects manager (body).
*
- * Copyright (C) 2002-2024 by
+ * Copyright (C) 2002-2023 by
* Roberto Alameda.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/type42/t42objs.h b/src/type42/t42objs.h
index 3ca83bc..33e6215 100644
--- a/src/type42/t42objs.h
+++ b/src/type42/t42objs.h
@@ -4,7 +4,7 @@
*
* Type 42 objects manager (specification).
*
- * Copyright (C) 2002-2024 by
+ * Copyright (C) 2002-2023 by
* Roberto Alameda.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/type42/t42parse.c b/src/type42/t42parse.c
index e53d352..f96a43b 100644
--- a/src/type42/t42parse.c
+++ b/src/type42/t42parse.c
@@ -4,7 +4,7 @@
*
* Type 42 font parser (body).
*
- * Copyright (C) 2002-2024 by
+ * Copyright (C) 2002-2023 by
* Roberto Alameda.
*
* This file is part of the FreeType project, and may only be used,
@@ -99,7 +99,7 @@
T1_FIELD_CALLBACK( "CharStrings", t42_parse_charstrings, 0 )
T1_FIELD_CALLBACK( "sfnts", t42_parse_sfnts, 0 )
- T1_FIELD_ZERO
+ { 0, T1_FIELD_LOCATION_CID_INFO, T1_FIELD_TYPE_NONE, 0, 0, 0, 0, 0, 0 }
};
@@ -1195,6 +1195,8 @@
{
T42_Parser parser = &loader->parser;
FT_Byte* limit;
+ FT_Int n_keywords = (FT_Int)( sizeof ( t42_keywords ) /
+ sizeof ( t42_keywords[0] ) );
parser->root.cursor = base;
@@ -1271,20 +1273,24 @@
if ( len > 0 && len < 22 && parser->root.cursor < limit )
{
- T1_Field keyword = (T1_Field)t42_keywords;
+ int i;
/* now compare the immediate name to the keyword table */
- while ( keyword->len )
+
+ /* loop through all known keywords */
+ for ( i = 0; i < n_keywords; i++ )
{
- FT_Byte* name = (FT_Byte*)keyword->ident;
+ T1_Field keyword = (T1_Field)&t42_keywords[i];
+ FT_Byte *name = (FT_Byte*)keyword->ident;
if ( !name )
continue;
- if ( keyword->len == len &&
- ft_memcmp( cur, name, len ) == 0 )
+ if ( cur[0] == name[0] &&
+ len == ft_strlen( (const char *)name ) &&
+ ft_memcmp( cur, name, len ) == 0 )
{
/* we found it -- run the parsing callback! */
parser->root.error = t42_load_keyword( face,
@@ -1294,8 +1300,6 @@
return parser->root.error;
break;
}
-
- keyword++;
}
}
}
diff --git a/src/type42/t42parse.h b/src/type42/t42parse.h
index e977861..5741c54 100644
--- a/src/type42/t42parse.h
+++ b/src/type42/t42parse.h
@@ -4,7 +4,7 @@
*
* Type 42 font parser (specification).
*
- * Copyright (C) 2002-2024 by
+ * Copyright (C) 2002-2023 by
* Roberto Alameda.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/type42/t42types.h b/src/type42/t42types.h
index 550cc07..0bfe14e 100644
--- a/src/type42/t42types.h
+++ b/src/type42/t42types.h
@@ -4,7 +4,7 @@
*
* Type 42 font data types (specification only).
*
- * Copyright (C) 2002-2024 by
+ * Copyright (C) 2002-2023 by
* Roberto Alameda.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/type42/type42.c b/src/type42/type42.c
index a9444f0..8d2302c 100644
--- a/src/type42/type42.c
+++ b/src/type42/type42.c
@@ -4,7 +4,7 @@
*
* FreeType Type 42 driver component.
*
- * Copyright (C) 2002-2024 by
+ * Copyright (C) 2002-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/winfonts/fnterrs.h b/src/winfonts/fnterrs.h
index 7ca6592..dafdb07 100644
--- a/src/winfonts/fnterrs.h
+++ b/src/winfonts/fnterrs.h
@@ -4,7 +4,7 @@
*
* Win FNT/FON error codes (specification only).
*
- * Copyright (C) 2001-2024 by
+ * Copyright (C) 2001-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* This file is part of the FreeType project, and may only be used,
diff --git a/src/winfonts/module.mk b/src/winfonts/module.mk
index f2d8ace..78a2900 100644
--- a/src/winfonts/module.mk
+++ b/src/winfonts/module.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 1996-2024 by
+# Copyright (C) 1996-2023 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/src/winfonts/rules.mk b/src/winfonts/rules.mk
index 1a0b87a..b39c519 100644
--- a/src/winfonts/rules.mk
+++ b/src/winfonts/rules.mk
@@ -3,7 +3,7 @@
#
-# Copyright (C) 1996-2024 by
+# Copyright (C) 1996-2023 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/src/winfonts/winfnt.c b/src/winfonts/winfnt.c
index 74a0641..1160e4e 100644
--- a/src/winfonts/winfnt.c
+++ b/src/winfonts/winfnt.c
@@ -4,7 +4,7 @@
*
* FreeType font driver for Windows FNT/FON files
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
* Copyright 2003 Huw D M Davies for Codeweavers
* Copyright 2007 Dmitry Timoshkov for Codeweavers
@@ -359,8 +359,8 @@
if ( type_id == 0x8008U )
{
font_count = count;
- font_offset = FT_STREAM_POS() + 4 -
- (FT_ULong)( stream->limit - stream->cursor );
+ font_offset = FT_STREAM_POS() + 4 +
+ (FT_ULong)( stream->cursor - stream->limit );
break;
}
@@ -1006,7 +1006,7 @@
FT_UInt glyph_index,
FT_Int32 load_flags )
{
- FNT_Face face = (FNT_Face)size->face;
+ FNT_Face face = (FNT_Face)FT_SIZE_FACE( size );
FNT_Font font;
FT_Error error = FT_Err_Ok;
FT_Byte* p;
diff --git a/src/winfonts/winfnt.h b/src/winfonts/winfnt.h
index 7813749..2f75b9e 100644
--- a/src/winfonts/winfnt.h
+++ b/src/winfonts/winfnt.h
@@ -4,7 +4,7 @@
*
* FreeType font driver for Windows FNT/FON files
*
- * Copyright (C) 1996-2024 by
+ * Copyright (C) 1996-2023 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
* Copyright 2007 Dmitry Timoshkov for Codeweavers
*
diff --git a/subprojects/libpng.wrap b/subprojects/libpng.wrap
index 2c5f9c6..eb0785d 100644
--- a/subprojects/libpng.wrap
+++ b/subprojects/libpng.wrap
@@ -1,13 +1,13 @@
[wrap-file]
-directory = libpng-1.6.43
-source_url = https://github.com/glennrp/libpng/archive/v1.6.43.tar.gz
-source_filename = libpng-1.6.43.tar.gz
-source_hash = fecc95b46cf05e8e3fc8a414750e0ba5aad00d89e9fdf175e94ff041caf1a03a
-patch_filename = libpng_1.6.43-2_patch.zip
-patch_url = https://wrapdb.mesonbuild.com/v2/libpng_1.6.43-2/get_patch
-patch_hash = 49951297edf03e81d925ab03726555f09994ad1ed78fb539a269216430eef3da
-source_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/libpng_1.6.43-2/libpng-1.6.43.tar.gz
-wrapdb_version = 1.6.43-2
+directory = libpng-1.6.40
+source_url = https://github.com/glennrp/libpng/archive/v1.6.40.tar.gz
+source_filename = libpng-1.6.40.tar.gz
+source_hash = 62d25af25e636454b005c93cae51ddcd5383c40fa14aa3dae8f6576feb5692c2
+patch_filename = libpng_1.6.40-1_patch.zip
+patch_url = https://wrapdb.mesonbuild.com/v2/libpng_1.6.40-1/get_patch
+patch_hash = bad558070e0a82faa5c0ae553bcd12d49021fc4b628f232a8e58c3fbd281aae1
+source_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/libpng_1.6.40-1/libpng-1.6.40.tar.gz
+wrapdb_version = 1.6.40-1
[provide]
libpng = libpng_dep
diff --git a/subprojects/zlib.wrap b/subprojects/zlib.wrap
index aa14de1..f9f1180 100644
--- a/subprojects/zlib.wrap
+++ b/subprojects/zlib.wrap
@@ -1,13 +1,13 @@
[wrap-file]
-directory = zlib-1.3.1
-source_url = http://zlib.net/fossils/zlib-1.3.1.tar.gz
-source_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/zlib_1.3.1-1/zlib-1.3.1.tar.gz
-source_filename = zlib-1.3.1.tar.gz
-source_hash = 9a93b2b7dfdac77ceba5a558a580e74667dd6fede4585b91eefb60f03b72df23
-patch_filename = zlib_1.3.1-1_patch.zip
-patch_url = https://wrapdb.mesonbuild.com/v2/zlib_1.3.1-1/get_patch
-patch_hash = e79b98eb24a75392009cec6f99ca5cdca9881ff20bfa174e8b8926d5c7a47095
-wrapdb_version = 1.3.1-1
+directory = zlib-1.3
+source_url = http://zlib.net/fossils/zlib-1.3.tar.gz
+source_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/zlib_1.3-1/zlib-1.3.tar.gz
+source_filename = zlib-1.3.tar.gz
+source_hash = ff0ba4c292013dbc27530b3a81e1f9a813cd39de01ca5e0f8bf355702efa593e
+patch_filename = zlib_1.3-1_patch.zip
+patch_url = https://wrapdb.mesonbuild.com/v2/zlib_1.3-1/get_patch
+patch_hash = ab9d6b8167bb34a7c52b60b0cd6138aa4e0c2d31f997343a5f506f3b97b32008
+wrapdb_version = 1.3-1
[provide]
zlib = zlib_dep
diff --git a/vms_make.com b/vms_make.com
index 65d2eb5..2c85a01 100644
--- a/vms_make.com
+++ b/vms_make.com
@@ -1,6 +1,6 @@
$! make FreeType 2 under OpenVMS
$!
-$! Copyright (C) 2003-2024 by
+$! Copyright (C) 2003-2023 by
$! David Turner, Robert Wilhelm, and Werner Lemberg.
$!
$! This file is part of the FreeType project, and may only be used, modified,
@@ -55,7 +55,7 @@
$!
$ Make = ""
$ ccopt = "/name=(as_is,short)/float=ieee"
-$ if ( x86_64 ) then cxxopt = " -names2=shortened "
+$ if ( x86_64 ) then cxxopt = "/name=(as_is,short)"
$ lopts = ""
$ dnsrl = ""
$ aconf_in_file = "config.hin"
@@ -108,15 +108,10 @@
$ if ( have_png ) then libdefs=libdefs+",FT_CONFIG_OPTION_USE_PNG=1"
$ if ( have_z ) then libdefs=libdefs+",FT_CONFIG_OPTION_SYSTEM_ZLIB=1"
$ if ( have_harfbuzz ) then libdefs=libdefs+",FT_CONFIG_OPTION_USE_HARFBUZZ=1"
-$ libdefs_cxx = "-DFT2_BUILD_LIBRARY -DFT_CONFIG_OPTION_OLD_INTERNALS"
-$ if ( have_bz2 ) then libdefs_cxx=libdefs_cxx+" -DFT_CONFIG_OPTION_USE_BZIP2=1"
-$ if ( have_png ) then libdefs_cxx=libdefs_cxx+" -DFT_CONFIG_OPTION_USE_PNG=1"
-$ if ( have_z ) then libdefs_cxx=libdefs_cxx+" -DFT_CONFIG_OPTION_SYSTEM_ZLIB=1"
-$ if ( have_harfbuzz ) then libdefs_cxx=libdefs_cxx+" -DFT_CONFIG_OPTION_USE_HARFBUZZ=1"
$ if libdefs .nes. ""
$ then
$ ccopt = ccopt + "/define=(" + libdefs + ")"
-$ if ( x86_64 ) then cxxopt = cxxopt + libdefs_cxx
+$ if ( x86_64 ) then cxxopt = cxxopt + "/define=(" + libdefs + ")"
$ endif
$!
$ if f$locate("AS_IS",f$edit(ccopt,"UPCASE")) .lt. f$length(ccopt) -
@@ -318,18 +313,18 @@
CFLAGS=$(COMP_FLAGS)$(DEBUG)/list/show=all/include=([],[--.include],[--.src.base])
.ifdef X86
-CXXFLAGS=$(CXXCOMP_FLAGS) -I[] -I[--.include] -I[--.src.base]
+CXXFLAGS=$(CXXCOMP_FLAGS)$(DEBUG)/list/show=all/include=([],[--.include],[--.src.base])
.endif
.ifdef X86
.c.obj :
- clang $(CXXFLAGS) -o $(MMS$TARGET_NAME)_cxx.obj $(MMS$TARGET_NAME).c
+ cxx$(CXXFLAGS)/warn=noinfo/obj=$(MMS$TARGET_NAME)_cxx.obj $(MMS$TARGET_NAME).c
cc$(CFLAGS)/warn=noinfo/point=32/list/show=all $(MMS$TARGET_NAME).c
pipe link/map/full/exec=nl: $(MMS$TARGET_NAME).obj | copy sys$input nl:
mc sys$library:vms_auto64 $(MMS$TARGET_NAME).map
- cc$(CFLAGS)/warn=(noinfo,disable=(MAYLOSEDATA3))/point=64/obj=$(MMS$TARGET_NAME)_64.obj\
+ cc$(CFLAGS)/warn=noinfo/point=64/obj=$(MMS$TARGET_NAME)_64.obj\
$(MMS$TARGET_NAME)_64.c
- clang $(CXXFLAGS) -o $(MMS$TARGET_NAME)_64_cxx.obj $(MMS$TARGET_NAME)_64.c
+ cxx$(CXXFLAGS)/warn=noinfo/obj=$(MMS$TARGET_NAME)_64_cxx.obj $(MMS$TARGET_NAME)_64.c
delete $(MMS$TARGET_NAME)_64.c;*
.else
.c.obj :
@@ -381,18 +376,18 @@
CFLAGS=$(COMP_FLAGS)$(DEBUG)/include=([--.include],[--.src.autofit])
.ifdef X86
-CXXFLAGS=$(CXXCOMP_FLAGS) -I[] -I[--.include] -I[--.src.base] -Isys$library
+CXXFLAGS=$(CXXCOMP_FLAGS)$(DEBUG)/list/show=all/include=([],[--.include],[--.src.base])
.endif
.ifdef X86
.c.obj :
- clang $(CXXFLAGS) -o $(MMS$TARGET_NAME)_cxx.obj $(MMS$TARGET_NAME).c
+ cxx$(CXXFLAGS)/warn=noinfo/obj=$(MMS$TARGET_NAME)_cxx.obj $(MMS$TARGET_NAME).c
cc$(CFLAGS)/warn=noinfo/point=32/list/show=all $(MMS$TARGET_NAME).c
pipe link/map/full/exec=nl: $(MMS$TARGET_NAME).obj | copy sys$input nl:
mc sys$library:vms_auto64 $(MMS$TARGET_NAME).map nl: exclude hb_
- cc$(CFLAGS)/warn=(noinfo,disable=(MAYLOSEDATA3))/point=64/obj=$(MMS$TARGET_NAME)_64.obj\
- $(MMS$TARGET_NAME)_64.c
- clang $(CXXFLAGS) -o $(MMS$TARGET_NAME)_64_cxx.obj $(MMS$TARGET_NAME)_64.c
+ cc$(CFLAGS)/warn=(noinfo,disable=(MAYLOSEDATA3))/point=64\
+ /obj=$(MMS$TARGET_NAME)_64.obj $(MMS$TARGET_NAME)_64.c
+ cxx$(CXXFLAGS)/warn=noinfo/obj=$(MMS$TARGET_NAME)_64_cxx.obj $(MMS$TARGET_NAME)_64.c
delete $(MMS$TARGET_NAME)_64.c;*
.else
.c.obj :
@@ -443,18 +438,18 @@
CFLAGS=$(COMP_FLAGS)$(DEBUG)/include=([--.builds.vms],[--.include],[--.src.base])
.ifdef X86
-CXXFLAGS=$(CXXCOMP_FLAGS) -I[] -I[--.include] -I[--.src.base]
+CXXFLAGS=$(CXXCOMP_FLAGS)$(DEBUG)/list/show=all/include=([],[--.include],[--.src.base])
.endif
.ifdef X86
.c.obj :
- clang $(CXXFLAGS) -o $(MMS$TARGET_NAME)_cxx.obj $(MMS$TARGET_NAME).c
+ cxx$(CXXFLAGS)/warn=noinfo/obj=$(MMS$TARGET_NAME)_cxx.obj $(MMS$TARGET_NAME).c
cc$(CFLAGS)/warn=noinfo/point=32/list/show=all $(MMS$TARGET_NAME).c
pipe link/map/full/exec=nl: $(MMS$TARGET_NAME).obj | copy sys$input nl:
mc sys$library:vms_auto64 $(MMS$TARGET_NAME).map
- cc$(CFLAGS)/warn=(noinfo,disable=(MAYLOSEDATA3))/point=64/obj=$(MMS$TARGET_NAME)_64.obj\
- $(MMS$TARGET_NAME)_64.c
- clang $(CXXFLAGS) -o $(MMS$TARGET_NAME)_64_cxx.obj $(MMS$TARGET_NAME)_64.c
+ cc$(CFLAGS)/warn=(noinfo,disable=(MAYLOSEDATA3))/point=64\
+ /obj=$(MMS$TARGET_NAME)_64.obj $(MMS$TARGET_NAME)_64.c
+ cxx$(CXXFLAGS)/warn=noinfo/obj=$(MMS$TARGET_NAME)_64_cxx.obj $(MMS$TARGET_NAME)_64.c
delete $(MMS$TARGET_NAME)_64.c;*
.else
.c.obj :
@@ -555,18 +550,18 @@
CFLAGS=$(COMP_FLAGS)$(DEBUG)/include=([--.include],[--.src.bdf])
.ifdef X86
-CXXFLAGS=$(CXXCOMP_FLAGS) -I[] -I[--.include] -I[--.src.base])
+CXXFLAGS=$(CXXCOMP_FLAGS)$(DEBUG)/list/show=all/include=([],[--.include],[--.src.base])
.endif
.ifdef X86
.c.obj :
- clang $(CXXFLAGS) -o $(MMS$TARGET_NAME)_cxx.obj $(MMS$TARGET_NAME).c
+ cxx$(CXXFLAGS)/warn=noinfo/obj=$(MMS$TARGET_NAME)_cxx.obj $(MMS$TARGET_NAME).c
cc$(CFLAGS)/warn=noinfo/point=32/list/show=all $(MMS$TARGET_NAME).c
pipe link/map/full/exec=nl: $(MMS$TARGET_NAME).obj | copy sys$input nl:
mc sys$library:vms_auto64 $(MMS$TARGET_NAME).map
- cc$(CFLAGS)/warn=(noinfo,disable=(MAYLOSEDATA3))/point=64/obj=$(MMS$TARGET_NAME)_64.obj\
+ cc$(CFLAGS)/warn=noinfo/point=64/obj=$(MMS$TARGET_NAME)_64.obj\
$(MMS$TARGET_NAME)_64.c
- clang $(CXXFLAGS) -o $(MMS$TARGET_NAME)_64_cxx.obj $(MMS$TARGET_NAME)_64.c
+ cxx$(CXXFLAGS)/warn=noinfo/obj=$(MMS$TARGET_NAME)_64_cxx.obj $(MMS$TARGET_NAME)_64.c
delete $(MMS$TARGET_NAME)_64.c;*
.else
.c.obj :
@@ -617,18 +612,18 @@
CFLAGS=$(COMP_FLAGS)$(DEBUG)/include=([--.include],[--.src.cache])/nowarn
.ifdef X86
-CXXFLAGS=$(CXXCOMP_FLAGS) -I[] -I[--.include] -I[--.src.base]
+CXXFLAGS=$(CXXCOMP_FLAGS)$(DEBUG)/list/show=all/include=([],[--.include],[--.src.base])
.endif
.ifdef X86
.c.obj :
- clang $(CXXFLAGS) -o $(MMS$TARGET_NAME)_cxx.obj $(MMS$TARGET_NAME).c
+ cxx$(CXXFLAGS)/warn=noinfo/obj=$(MMS$TARGET_NAME)_cxx.obj $(MMS$TARGET_NAME).c
cc$(CFLAGS)/warn=noinfo/point=32/list/show=all $(MMS$TARGET_NAME).c
pipe link/map/full/exec=nl: $(MMS$TARGET_NAME).obj | copy sys$input nl:
mc sys$library:vms_auto64 $(MMS$TARGET_NAME).map
- cc$(CFLAGS)/warn=(noinfo,disable=(MAYLOSEDATA3))/point=64/obj=$(MMS$TARGET_NAME)_64.obj\
+ cc$(CFLAGS)/warn=noinfo/point=64/obj=$(MMS$TARGET_NAME)_64.obj\
$(MMS$TARGET_NAME)_64.c
- clang $(CXXFLAGS) -o $(MMS$TARGET_NAME)_64_cxx.obj $(MMS$TARGET_NAME)_64.c
+ cxx$(CXXFLAGS)/warn=noinfo/obj=$(MMS$TARGET_NAME)_64_cxx.obj $(MMS$TARGET_NAME)_64.c
delete $(MMS$TARGET_NAME)_64.c;*
.else
.c.obj :
@@ -682,18 +677,18 @@
CFLAGS=$(COMP_FLAGS)$(DEBUG)/include=([--.include],[--.src.cff])
.ifdef X86
-CXXFLAGS=$(CXXCOMP_FLAGS) -I[] -I[--.include] -I[--.src.base]
+CXXFLAGS=$(CXXCOMP_FLAGS)$(DEBUG)/list/show=all/include=([],[--.include],[--.src.base])
.endif
.ifdef X86
.c.obj :
- clang $(CXXFLAGS) -o $(MMS$TARGET_NAME)_cxx.obj $(MMS$TARGET_NAME).c
+ cxx$(CXXFLAGS)/warn=noinfo/obj=$(MMS$TARGET_NAME)_cxx.obj $(MMS$TARGET_NAME).c
cc$(CFLAGS)/warn=noinfo/point=32/list/show=all $(MMS$TARGET_NAME).c
pipe link/map/full/exec=nl: $(MMS$TARGET_NAME).obj | copy sys$input nl:
mc sys$library:vms_auto64 $(MMS$TARGET_NAME).map
cc$(CFLAGS)/warn=(noinfo,disable=(MAYLOSEDATA3))/point=64/obj=$(MMS$TARGET_NAME)_64.obj\
$(MMS$TARGET_NAME)_64.c
- clang $(CXXFLAGS) -o $(MMS$TARGET_NAME)_64_cxx.obj $(MMS$TARGET_NAME)_64.c
+ cxx$(CXXFLAGS)/warn=noinfo/obj=$(MMS$TARGET_NAME)_64_cxx.obj $(MMS$TARGET_NAME)_64.c
delete $(MMS$TARGET_NAME)_64.c;*
.else
.c.obj :
@@ -744,18 +739,18 @@
CFLAGS=$(COMP_FLAGS)$(DEBUG)/include=([--.include],[--.src.cid])
.ifdef X86
-CXXFLAGS=$(CXXCOMP_FLAGS) -I[] -I[--.include] -I[--.src.base]
+CXXFLAGS=$(CXXCOMP_FLAGS)$(DEBUG)/list/show=all/include=([],[--.include],[--.src.base])
.endif
.ifdef X86
.c.obj :
- clang $(CXXFLAGS) -o $(MMS$TARGET_NAME)_cxx.obj $(MMS$TARGET_NAME).c
+ cxx$(CXXFLAGS)/warn=noinfo/obj=$(MMS$TARGET_NAME)_cxx.obj $(MMS$TARGET_NAME).c
cc$(CFLAGS)/warn=noinfo/point=32/list/show=all $(MMS$TARGET_NAME).c
pipe link/map/full/exec=nl: $(MMS$TARGET_NAME).obj | copy sys$input nl:
mc sys$library:vms_auto64 $(MMS$TARGET_NAME).map
cc$(CFLAGS)/warn=(noinfo,disable=(MAYLOSEDATA3))/point=64/obj=$(MMS$TARGET_NAME)_64.obj\
$(MMS$TARGET_NAME)_64.c
- clang $(CXXFLAGS) -o $(MMS$TARGET_NAME)_64_cxx.obj $(MMS$TARGET_NAME)_64.c
+ cxx$(CXXFLAGS)/warn=noinfo/obj=$(MMS$TARGET_NAME)_64_cxx.obj $(MMS$TARGET_NAME)_64.c
delete $(MMS$TARGET_NAME)_64.c;*
.else
.c.obj :
@@ -806,18 +801,18 @@
CFLAGS=$(COMP_FLAGS)$(DEBUG)/include=([--.include],[--.src.gxvalid])
.ifdef X86
-CXXFLAGS=$(CXXCOMP_FLAGS) -I[] -I[--.include] -I[--.src.base]
+CXXFLAGS=$(CXXCOMP_FLAGS)$(DEBUG)/list/show=all/include=([],[--.include],[--.src.base])
.endif
.ifdef X86
.c.obj :
- clang $(CXXFLAGS) -o $(MMS$TARGET_NAME)_cxx.obj $(MMS$TARGET_NAME).c
+ cxx$(CXXFLAGS)/warn=noinfo/obj=$(MMS$TARGET_NAME)_cxx.obj $(MMS$TARGET_NAME).c
cc$(CFLAGS)/warn=noinfo/point=32/list/show=all $(MMS$TARGET_NAME).c
pipe link/map/full/exec=nl: $(MMS$TARGET_NAME).obj | copy sys$input nl:
mc sys$library:vms_auto64 $(MMS$TARGET_NAME).map
cc$(CFLAGS)/warn=(noinfo,disable=(MAYLOSEDATA3))/point=64/obj=$(MMS$TARGET_NAME)_64.obj\
$(MMS$TARGET_NAME)_64.c
- clang $(CXXFLAGS) -o $(MMS$TARGET_NAME)_64_cxx.obj $(MMS$TARGET_NAME)_64.c
+ cxx$(CXXFLAGS)/warn=noinfo/obj=$(MMS$TARGET_NAME)_64_cxx.obj $(MMS$TARGET_NAME)_64.c
delete $(MMS$TARGET_NAME)_64.c;*
.else
.c.obj :
@@ -864,21 +859,26 @@
# LICENSE.TXT. By continuing to use, modify, or distribute this file you
# indicate that you have read the license and understand and accept it
# fully.
+$EOD
+$ write out "COMP_FLAGS = ", ccopt
+$ if x86_64 then write out "CXXFLAGS = ", cxxopt
+$ copy sys$input: out
+$ deck
CFLAGS=$(COMP_FLAGS)$(DEBUG)/include=([--.include],[--.src.gzip])
.ifdef X86
-CXXFLAGS=$(CXXCOMP_FLAGS) -I[] -I[--.include] -I[--.src.base]
+CXXFLAGS=$(CXXCOMP_FLAGS)$(DEBUG)/list/show=all/include=([],[--.include],[--.src.base])
.endif
.ifdef X86
.c.obj :
- clang $(CXXFLAGS) -o $(MMS$TARGET_NAME)_cxx.obj $(MMS$TARGET_NAME).c
+ cxx$(CXXFLAGS)/warn=noinfo/obj=$(MMS$TARGET_NAME)_cxx.obj $(MMS$TARGET_NAME).c
cc$(CFLAGS)/warn=noinfo/point=32/list/show=all $(MMS$TARGET_NAME).c
pipe link/map/full/exec=nl: $(MMS$TARGET_NAME).obj | copy sys$input nl:
mc sys$library:vms_auto64 $(MMS$TARGET_NAME).map
cc$(CFLAGS)/warn=(noinfo,disable=(MAYLOSEDATA3))/point=64/obj=$(MMS$TARGET_NAME)_64.obj\
$(MMS$TARGET_NAME)_64.c
- clang $(CXXFLAGS) -o $(MMS$TARGET_NAME)_64_cxx.obj $(MMS$TARGET_NAME)_64.c
+ cxx$(CXXFLAGS)/warn=noinfo/obj=$(MMS$TARGET_NAME)_64_cxx.obj $(MMS$TARGET_NAME)_64.c
delete $(MMS$TARGET_NAME)_64.c;*
.else
.c.obj :
@@ -927,21 +927,26 @@
# LICENSE.TXT. By continuing to use, modify, or distribute this file you
# indicate that you have read the license and understand and accept it
# fully.
+$EOD
+$ write out "COMP_FLAGS = ", ccopt
+$ if x86_64 then write out "CXXFLAGS = ", cxxopt
+$ copy sys$input: out
+$ deck
CFLAGS=$(COMP_FLAGS)$(DEBUG)/include=([--.include],[--.src.bzip2])
.ifdef X86
-CXXFLAGS=$(CXXCOMP_FLAGS) -I[] -I[--.include] -I[--.src.base] -Isys$library
+CXXFLAGS=$(CXXCOMP_FLAGS)$(DEBUG)/list/show=all/include=([],[--.include],[--.src.base])
.endif
.ifdef X86
.c.obj :
- clang $(CXXFLAGS) -o $(MMS$TARGET_NAME)_cxx.obj $(MMS$TARGET_NAME).c
+ cxx$(CXXFLAGS)/warn=noinfo/obj=$(MMS$TARGET_NAME)_cxx.obj $(MMS$TARGET_NAME).c
cc$(CFLAGS)/warn=noinfo/point=32/list/show=all $(MMS$TARGET_NAME).c
pipe link/map/full/exec=nl: $(MMS$TARGET_NAME).obj | copy sys$input nl:
mc sys$library:vms_auto64 $(MMS$TARGET_NAME).map
cc$(CFLAGS)/warn=(noinfo,disable=(MAYLOSEDATA3))/point=64/obj=$(MMS$TARGET_NAME)_64.obj\
$(MMS$TARGET_NAME)_64.c
- clang $(CXXFLAGS) -o $(MMS$TARGET_NAME)_64_cxx.obj $(MMS$TARGET_NAME)_64.c
+ cxx$(CXXFLAGS)/warn=noinfo/obj=$(MMS$TARGET_NAME)_64_cxx.obj $(MMS$TARGET_NAME)_64.c
delete $(MMS$TARGET_NAME)_64.c;*
.else
.c.obj :
@@ -988,21 +993,26 @@
# LICENSE.TXT. By continuing to use, modify, or distribute this file you
# indicate that you have read the license and understand and accept it
# fully.
+$EOD
+$ write out "COMP_FLAGS = ", ccopt
+$ if x86_64 then write out "CXXFLAGS = ", cxxopt
+$ copy sys$input: out
+$ deck
CFLAGS=$(COMP_FLAGS)$(DEBUG)/include=([--.include],[--.src.lzw])
.ifdef X86
-CXXFLAGS=$(CXXCOMP_FLAGS) -I[] -I[--.include] -I[--.src.base]
+CXXFLAGS=$(CXXCOMP_FLAGS)$(DEBUG)/list/show=all/include=([],[--.include],[--.src.base])
.endif
.ifdef X86
.c.obj :
- clang $(CXXFLAGS) -o $(MMS$TARGET_NAME)_cxx.obj $(MMS$TARGET_NAME).c
+ cxx$(CXXFLAGS)/warn=noinfo/obj=$(MMS$TARGET_NAME)_cxx.obj $(MMS$TARGET_NAME).c
cc$(CFLAGS)/warn=noinfo/point=32/list/show=all $(MMS$TARGET_NAME).c
pipe link/map/full/exec=nl: $(MMS$TARGET_NAME).obj | copy sys$input nl:
mc sys$library:vms_auto64 $(MMS$TARGET_NAME).map
cc$(CFLAGS)/warn=(noinfo,disable=(MAYLOSEDATA3))/point=64/obj=$(MMS$TARGET_NAME)_64.obj\
$(MMS$TARGET_NAME)_64.c
- clang $(CXXFLAGS) -o $(MMS$TARGET_NAME)_64_cxx.obj $(MMS$TARGET_NAME)_64.c
+ cxx$(CXXFLAGS)/warn=noinfo/obj=$(MMS$TARGET_NAME)_64_cxx.obj $(MMS$TARGET_NAME)_64.c
delete $(MMS$TARGET_NAME)_64.c;*
.else
.c.obj :
@@ -1053,18 +1063,18 @@
CFLAGS=$(COMP_FLAGS)$(DEBUG)/include=([--.include],[--.src.otvalid])
.ifdef X86
-CXXFLAGS=$(CXXCOMP_FLAGS) -I[] -I[--.include] -I[--.src.base]
+CXXFLAGS=$(CXXCOMP_FLAGS)$(DEBUG)/list/show=all/include=([],[--.include],[--.src.base])
.endif
.ifdef X86
.c.obj :
- clang $(CXXFLAGS) -o $(MMS$TARGET_NAME)_cxx.obj $(MMS$TARGET_NAME).c
+ cxx$(CXXFLAGS)/warn=noinfo/obj=$(MMS$TARGET_NAME)_cxx.obj $(MMS$TARGET_NAME).c
cc$(CFLAGS)/warn=noinfo/point=32/list/show=all $(MMS$TARGET_NAME).c
pipe link/map/full/exec=nl: $(MMS$TARGET_NAME).obj | copy sys$input nl:
mc sys$library:vms_auto64 $(MMS$TARGET_NAME).map
cc$(CFLAGS)/warn=(noinfo,disable=(MAYLOSEDATA3))/point=64/obj=$(MMS$TARGET_NAME)_64.obj\
$(MMS$TARGET_NAME)_64.c
- clang $(CXXFLAGS) -o $(MMS$TARGET_NAME)_64_cxx.obj $(MMS$TARGET_NAME)_64.c
+ cxx$(CXXFLAGS)/warn=noinfo/obj=$(MMS$TARGET_NAME)_64_cxx.obj $(MMS$TARGET_NAME)_64.c
delete $(MMS$TARGET_NAME)_64.c;*
.else
.c.obj :
@@ -1127,18 +1137,18 @@
CFLAGS=$(COMP_FLAGS)$(DEBUG)/include=([--.include],[--.src.pcf])
.ifdef X86
-CXXFLAGS=$(CXXCOMP_FLAGS) -I[] -I[--.include] -I[--.src.base]
+CXXFLAGS=$(CXXCOMP_FLAGS)$(DEBUG)/list/show=all/include=([],[--.include],[--.src.base])
.endif
.ifdef X86
.c.obj :
- clang $(CXXFLAGS) -o $(MMS$TARGET_NAME)_cxx.obj $(MMS$TARGET_NAME).c
+ cxx$(CXXFLAGS)/warn=noinfo/obj=$(MMS$TARGET_NAME)_cxx.obj $(MMS$TARGET_NAME).c
cc$(CFLAGS)/warn=noinfo/point=32/list/show=all $(MMS$TARGET_NAME).c
pipe link/map/full/exec=nl: $(MMS$TARGET_NAME).obj | copy sys$input nl:
mc sys$library:vms_auto64 $(MMS$TARGET_NAME).map
- cc$(CFLAGS)/warn=(noinfo,disable=(MAYLOSEDATA3))/point=64/obj=$(MMS$TARGET_NAME)_64.obj\
+ cc$(CFLAGS)/warn=noinfo/point=64/obj=$(MMS$TARGET_NAME)_64.obj\
$(MMS$TARGET_NAME)_64.c
- clang $(CXXFLAGS) -o $(MMS$TARGET_NAME)_64_cxx.obj $(MMS$TARGET_NAME)_64.c
+ cxx$(CXXFLAGS)/warn=noinfo/obj=$(MMS$TARGET_NAME)_64_cxx.obj $(MMS$TARGET_NAME)_64.c
delete $(MMS$TARGET_NAME)_64.c;*
.else
.c.obj :
@@ -1189,18 +1199,18 @@
CFLAGS=$(COMP_FLAGS)$(DEBUG)/include=([--.include],[--.src.pfr])
.ifdef X86
-CXXFLAGS=$(CXXCOMP_FLAGS) -I[] -I[--.include] -I[--.src.base]
+CXXFLAGS=$(CXXCOMP_FLAGS)$(DEBUG)/list/show=all/include=([],[--.include],[--.src.base])
.endif
.ifdef X86
.c.obj :
- clang $(CXXFLAGS) -o $(MMS$TARGET_NAME)_cxx.obj $(MMS$TARGET_NAME).c
+ cxx$(CXXFLAGS)/warn=noinfo/obj=$(MMS$TARGET_NAME)_cxx.obj $(MMS$TARGET_NAME).c
cc$(CFLAGS)/warn=noinfo/point=32/list/show=all $(MMS$TARGET_NAME).c
pipe link/map/full/exec=nl: $(MMS$TARGET_NAME).obj | copy sys$input nl:
mc sys$library:vms_auto64 $(MMS$TARGET_NAME).map
cc$(CFLAGS)/warn=(noinfo,disable=(MAYLOSEDATA3))/point=64/obj=$(MMS$TARGET_NAME)_64.obj\
$(MMS$TARGET_NAME)_64.c
- clang $(CXXFLAGS) -o $(MMS$TARGET_NAME)_64_cxx.obj $(MMS$TARGET_NAME)_64.c
+ cxx$(CXXFLAGS)/warn=noinfo/obj=$(MMS$TARGET_NAME)_64_cxx.obj $(MMS$TARGET_NAME)_64.c
delete $(MMS$TARGET_NAME)_64.c;*
.else
.c.obj :
@@ -1251,18 +1261,18 @@
CFLAGS=$(COMP_FLAGS)$(DEBUG)/include=([--.include],[--.src.psaux])
.ifdef X86
-CXXFLAGS=$(CXXCOMP_FLAGS) -I[] -I[--.include] -I[--.src.base]
+CXXFLAGS=$(CXXCOMP_FLAGS)$(DEBUG)/list/show=all/include=([],[--.include],[--.src.base])
.endif
.ifdef X86
.c.obj :
- clang $(CXXFLAGS) -o $(MMS$TARGET_NAME)_cxx.obj $(MMS$TARGET_NAME).c
+ cxx$(CXXFLAGS)/warn=noinfo/obj=$(MMS$TARGET_NAME)_cxx.obj $(MMS$TARGET_NAME).c
cc$(CFLAGS)/warn=noinfo/point=32/list/show=all $(MMS$TARGET_NAME).c
pipe link/map/full/exec=nl: $(MMS$TARGET_NAME).obj | copy sys$input nl:
mc sys$library:vms_auto64 $(MMS$TARGET_NAME).map
cc$(CFLAGS)/warn=(noinfo,disable=(MAYLOSEDATA3))/point=64/obj=$(MMS$TARGET_NAME)_64.obj\
$(MMS$TARGET_NAME)_64.c
- clang $(CXXFLAGS) -o $(MMS$TARGET_NAME)_64_cxx.obj $(MMS$TARGET_NAME)_64.c
+ cxx$(CXXFLAGS)/warn=noinfo/obj=$(MMS$TARGET_NAME)_64_cxx.obj $(MMS$TARGET_NAME)_64.c
delete $(MMS$TARGET_NAME)_64.c;*
.else
.c.obj :
@@ -1313,18 +1323,18 @@
CFLAGS=$(COMP_FLAGS)$(DEBUG)/include=([--.include],[--.src.psnames])
.ifdef X86
-CXXFLAGS=$(CXXCOMP_FLAGS) -I[] -I[--.include] -I[--.src.base]
+CXXFLAGS=$(CXXCOMP_FLAGS)$(DEBUG)/list/show=all/include=([],[--.include],[--.src.base])
.endif
.ifdef X86
.c.obj :
- clang $(CXXFLAGS) -o $(MMS$TARGET_NAME)_cxx.obj $(MMS$TARGET_NAME).c
+ cxx$(CXXFLAGS)/warn=noinfo/obj=$(MMS$TARGET_NAME)_cxx.obj $(MMS$TARGET_NAME).c
cc$(CFLAGS)/warn=noinfo/point=32/list/show=all $(MMS$TARGET_NAME).c
pipe link/map/full/exec=nl: $(MMS$TARGET_NAME).obj | copy sys$input nl:
mc sys$library:vms_auto64 $(MMS$TARGET_NAME).map
cc$(CFLAGS)/warn=(noinfo,disable=(MAYLOSEDATA3))/point=64/obj=$(MMS$TARGET_NAME)_64.obj\
$(MMS$TARGET_NAME)_64.c
- clang $(CXXFLAGS) -o $(MMS$TARGET_NAME)_64_cxx.obj $(MMS$TARGET_NAME)_64.c
+ cxx$(CXXFLAGS)/warn=noinfo/obj=$(MMS$TARGET_NAME)_64_cxx.obj $(MMS$TARGET_NAME)_64.c
delete $(MMS$TARGET_NAME)_64.c;*
.else
.c.obj :
@@ -1375,18 +1385,18 @@
CFLAGS=$(COMP_FLAGS)$(DEBUG)/include=([--.include],[--.src.psnames])
.ifdef X86
-CXXFLAGS=$(CXXCOMP_FLAGS) -I[] -I[--.include] -I[--.src.base]
+CXXFLAGS=$(CXXCOMP_FLAGS)$(DEBUG)/list/show=all/include=([],[--.include],[--.src.base])
.endif
.ifdef X86
.c.obj :
- clang $(CXXFLAGS) -o $(MMS$TARGET_NAME)_cxx.obj $(MMS$TARGET_NAME).c
+ cxx$(CXXFLAGS)/warn=noinfo/obj=$(MMS$TARGET_NAME)_cxx.obj $(MMS$TARGET_NAME).c
cc$(CFLAGS)/warn=noinfo/point=32/list/show=all $(MMS$TARGET_NAME).c
pipe link/map/full/exec=nl: $(MMS$TARGET_NAME).obj | copy sys$input nl:
mc sys$library:vms_auto64 $(MMS$TARGET_NAME).map
cc$(CFLAGS)/warn=(noinfo,disable=(MAYLOSEDATA3))/point=64/obj=$(MMS$TARGET_NAME)_64.obj\
$(MMS$TARGET_NAME)_64.c
- clang $(CXXFLAGS) -o $(MMS$TARGET_NAME)_64_cxx.obj $(MMS$TARGET_NAME)_64.c
+ cxx$(CXXFLAGS)/warn=noinfo/obj=$(MMS$TARGET_NAME)_64_cxx.obj $(MMS$TARGET_NAME)_64.c
delete $(MMS$TARGET_NAME)_64.c;*
.else
.c.obj :
@@ -1437,18 +1447,18 @@
CFLAGS=$(COMP_FLAGS)$(DEBUG)/include=([--.include],[--.src.raster])
.ifdef X86
-CXXFLAGS=$(CXXCOMP_FLAGS) -I[] -I[--.include] -I[--.src.base]
+CXXFLAGS=$(CXXCOMP_FLAGS)$(DEBUG)/list/show=all/include=([],[--.include],[--.src.base])
.endif
.ifdef X86
.c.obj :
- clang $(CXXFLAGS) -o $(MMS$TARGET_NAME)_cxx.obj $(MMS$TARGET_NAME).c
+ cxx$(CXXFLAGS)/warn=noinfo/obj=$(MMS$TARGET_NAME)_cxx.obj $(MMS$TARGET_NAME).c
cc$(CFLAGS)/warn=noinfo/point=32/list/show=all $(MMS$TARGET_NAME).c
pipe link/map/full/exec=nl: $(MMS$TARGET_NAME).obj | copy sys$input nl:
mc sys$library:vms_auto64 $(MMS$TARGET_NAME).map
cc$(CFLAGS)/warn=(noinfo,disable=(MAYLOSEDATA3))/point=64/obj=$(MMS$TARGET_NAME)_64.obj\
$(MMS$TARGET_NAME)_64.c
- clang $(CXXFLAGS) -o $(MMS$TARGET_NAME)_64_cxx.obj $(MMS$TARGET_NAME)_64.c
+ cxx$(CXXFLAGS)/warn=noinfo/obj=$(MMS$TARGET_NAME)_64_cxx.obj $(MMS$TARGET_NAME)_64.c
delete $(MMS$TARGET_NAME)_64.c;*
.else
.c.obj :
@@ -1499,18 +1509,18 @@
CFLAGS=$(COMP_FLAGS)$(DEBUG)/include=([--.include],[--.src.sfnt])
.ifdef X86
-CXXFLAGS=$(CXXCOMP_FLAGS) -I[] -I[--.include] -I[--.src.base] -Isys$library
+CXXFLAGS=$(CXXCOMP_FLAGS)$(DEBUG)/list/show=all/include=([],[--.include],[--.src.base])
.endif
.ifdef X86
.c.obj :
- clang $(CXXFLAGS) -o $(MMS$TARGET_NAME)_cxx.obj $(MMS$TARGET_NAME).c
+ cxx$(CXXFLAGS)/warn=noinfo/obj=$(MMS$TARGET_NAME)_cxx.obj $(MMS$TARGET_NAME).c
cc$(CFLAGS)/warn=noinfo/point=32/list/show=all $(MMS$TARGET_NAME).c
pipe link/map/full/exec=nl: $(MMS$TARGET_NAME).obj | copy sys$input nl:
mc sys$library:vms_auto64 $(MMS$TARGET_NAME).map
cc$(CFLAGS)/warn=(noinfo,disable=(MAYLOSEDATA3))/point=64/obj=$(MMS$TARGET_NAME)_64.obj\
$(MMS$TARGET_NAME)_64.c
- clang $(CXXFLAGS) -o $(MMS$TARGET_NAME)_64_cxx.obj $(MMS$TARGET_NAME)_64.c
+ cxx$(CXXFLAGS)/warn=noinfo/obj=$(MMS$TARGET_NAME)_64_cxx.obj $(MMS$TARGET_NAME)_64.c
delete $(MMS$TARGET_NAME)_64.c;*
.else
.c.obj :
@@ -1561,18 +1571,18 @@
CFLAGS=$(COMP_FLAGS)$(DEBUG)/include=([--.include],[--.src.smooth])
.ifdef X86
-CXXFLAGS=$(CXXCOMP_FLAGS) -I [] -I[--.include] -I[--.src.base]
+CXXFLAGS=$(CXXCOMP_FLAGS)$(DEBUG)/list/show=all/include=([],[--.include],[--.src.base])
.endif
.ifdef X86
.c.obj :
- clang $(CXXFLAGS) -o $(MMS$TARGET_NAME)_cxx.obj $(MMS$TARGET_NAME).c
+ cxx$(CXXFLAGS)/warn=noinfo/obj=$(MMS$TARGET_NAME)_cxx.obj $(MMS$TARGET_NAME).c
cc$(CFLAGS)/warn=noinfo/point=32/list/show=all $(MMS$TARGET_NAME).c
pipe link/map/full/exec=nl: $(MMS$TARGET_NAME).obj | copy sys$input nl:
mc sys$library:vms_auto64 $(MMS$TARGET_NAME).map
- cc$(CFLAGS)/warn=(noinfo,disable=(MAYLOSEDATA3))/point=64/obj=$(MMS$TARGET_NAME)_64.obj\
+ cc$(CFLAGS)/warn=noinfo/point=64/obj=$(MMS$TARGET_NAME)_64.obj\
$(MMS$TARGET_NAME)_64.c
- clang $(CXXFLAGS) -o $(MMS$TARGET_NAME)_64_cxx.obj $(MMS$TARGET_NAME)_64.c
+ cxx$(CXXFLAGS)/warn=noinfo/obj=$(MMS$TARGET_NAME)_64_cxx.obj $(MMS$TARGET_NAME)_64.c
delete $(MMS$TARGET_NAME)_64.c;*
.else
.c.obj :
@@ -1623,18 +1633,18 @@
CFLAGS=$(COMP_FLAGS)$(DEBUG)/include=([--.include],[--.src.svg])
.ifdef X86
-CXXFLAGS=$(CXXCOMP_FLAGS) -I[] -I[--.include] -I[--.src.base]
+CXXFLAGS=$(CXXCOMP_FLAGS)$(DEBUG)/list/show=all/include=([],[--.include],[--.src.base])
.endif
.ifdef X86
.c.obj :
- clang $(CXXFLAGS) -o $(MMS$TARGET_NAME)_cxx.obj $(MMS$TARGET_NAME).c
+ cxx$(CXXFLAGS)/warn=noinfo/obj=$(MMS$TARGET_NAME)_cxx.obj $(MMS$TARGET_NAME).c
cc$(CFLAGS)/warn=noinfo/point=32/list/show=all $(MMS$TARGET_NAME).c
pipe link/map/full/exec=nl: $(MMS$TARGET_NAME).obj | copy sys$input nl:
mc sys$library:vms_auto64 $(MMS$TARGET_NAME).map
- cc$(CFLAGS)/warn=(noinfo,disable=(MAYLOSEDATA3))/point=64/obj=$(MMS$TARGET_NAME)_64.obj\
+ cc$(CFLAGS)/warn=noinfo/point=64/obj=$(MMS$TARGET_NAME)_64.obj\
$(MMS$TARGET_NAME)_64.c
- clang $(CXXFLAGS) -o $(MMS$TARGET_NAME)_64_cxx.obj $(MMS$TARGET_NAME)_64.c
+ cxx$(CXXFLAGS)/warn=noinfo/obj=$(MMS$TARGET_NAME)_64_cxx.obj $(MMS$TARGET_NAME)_64.c
delete $(MMS$TARGET_NAME)_64.c;*
.else
.c.obj :
@@ -1685,18 +1695,18 @@
CFLAGS=$(COMP_FLAGS)$(DEBUG)/include=([--.include],[--.src.truetype])
.ifdef X86
-CXXFLAGS=$(CXXCOMP_FLAGS) -I[] -I[--.include] -I[--.src.base]
+CXXFLAGS=$(CXXCOMP_FLAGS)$(DEBUG)/list/show=all/include=([],[--.include],[--.src.base])
.endif
.ifdef X86
.c.obj :
- clang $(CXXFLAGS) -o $(MMS$TARGET_NAME)_cxx.obj $(MMS$TARGET_NAME).c
+ cxx$(CXXFLAGS)/warn=noinfo/obj=$(MMS$TARGET_NAME)_cxx.obj $(MMS$TARGET_NAME).c
cc$(CFLAGS)/warn=noinfo/point=32/list/show=all $(MMS$TARGET_NAME).c
pipe link/map/full/exec=nl: $(MMS$TARGET_NAME).obj | copy sys$input nl:
mc sys$library:vms_auto64 $(MMS$TARGET_NAME).map
cc$(CFLAGS)/warn=(noinfo,disable=(MAYLOSEDATA3))/point=64/obj=$(MMS$TARGET_NAME)_64.obj\
$(MMS$TARGET_NAME)_64.c
- clang $(CXXFLAGS) -o $(MMS$TARGET_NAME)_64_cxx.obj $(MMS$TARGET_NAME)_64.c
+ cxx$(CXXFLAGS)/warn=noinfo/obj=$(MMS$TARGET_NAME)_64_cxx.obj $(MMS$TARGET_NAME)_64.c
delete $(MMS$TARGET_NAME)_64.c;*
.else
.c.obj :
@@ -1747,18 +1757,18 @@
CFLAGS=$(COMP_FLAGS)$(DEBUG)/include=([--.include],[--.src.type1])
.ifdef X86
-CXXFLAGS=$(CXXCOMP_FLAGS) -I[] -I[--.include] -I[--.src.base]
+CXXFLAGS=$(CXXCOMP_FLAGS)$(DEBUG)/list/show=all/include=([],[--.include],[--.src.base])
.endif
.ifdef X86
.c.obj :
- clang $(CXXFLAGS) -o $(MMS$TARGET_NAME)_cxx.obj $(MMS$TARGET_NAME).c
+ cxx$(CXXFLAGS)/warn=noinfo/obj=$(MMS$TARGET_NAME)_cxx.obj $(MMS$TARGET_NAME).c
cc$(CFLAGS)/warn=noinfo/point=32/list/show=all $(MMS$TARGET_NAME).c
pipe link/map/full/exec=nl: $(MMS$TARGET_NAME).obj | copy sys$input nl:
mc sys$library:vms_auto64 $(MMS$TARGET_NAME).map
cc$(CFLAGS)/warn=(noinfo,disable=(MAYLOSEDATA3))/point=64/obj=$(MMS$TARGET_NAME)_64.obj\
$(MMS$TARGET_NAME)_64.c
- clang $(CXXFLAGS) -o $(MMS$TARGET_NAME)_64_cxx.obj $(MMS$TARGET_NAME)_64.c
+ cxx$(CXXFLAGS)/warn=noinfo/obj=$(MMS$TARGET_NAME)_64_cxx.obj $(MMS$TARGET_NAME)_64.c
delete $(MMS$TARGET_NAME)_64.c;*
.else
.c.obj :
@@ -1811,18 +1821,18 @@
CFLAGS=$(COMP_FLAGS)$(DEBUG)/include=([--.include],[--.src.type1])
.ifdef X86
-CXXFLAGS=$(CXXCOMP_FLAGS) -I[] -I[--.include] -I[--.src.base]
+CXXFLAGS=$(CXXCOMP_FLAGS)$(DEBUG)/list/show=all/include=([],[--.include],[--.src.base])
.endif
.ifdef X86
.c.obj :
- clang $(CXXFLAGS) -o $(MMS$TARGET_NAME)_cxx.obj $(MMS$TARGET_NAME).c
+ cxx$(CXXFLAGS)/warn=noinfo/obj=$(MMS$TARGET_NAME)_cxx.obj $(MMS$TARGET_NAME).c
cc$(CFLAGS)/warn=noinfo/point=32/list/show=all $(MMS$TARGET_NAME).c
pipe link/map/full/exec=nl: $(MMS$TARGET_NAME).obj | copy sys$input nl:
mc sys$library:vms_auto64 $(MMS$TARGET_NAME).map
- cc$(CFLAGS)/warn=(noinfo,disable=(MAYLOSEDATA3))/point=64/obj=$(MMS$TARGET_NAME)_64.obj\
+ cc$(CFLAGS)/warn=noinfo/point=64/obj=$(MMS$TARGET_NAME)_64.obj\
$(MMS$TARGET_NAME)_64.c
- clang $(CXXFLAGS) -o $(MMS$TARGET_NAME)_64_cxx.obj $(MMS$TARGET_NAME)_64.c
+ cxx$(CXXFLAGS)/warn=noinfo/obj=$(MMS$TARGET_NAME)_64_cxx.obj $(MMS$TARGET_NAME)_64.c
delete $(MMS$TARGET_NAME)_64.c;*
.else
.c.obj :
@@ -1875,18 +1885,18 @@
CFLAGS=$(COMP_FLAGS)$(DEBUG)/include=([--.include],[--.src.type42])
.ifdef X86
-CXXFLAGS=$(CXXCOMP_FLAGS) -I[] -I[--.include] -I[--.src.base]
+CXXFLAGS=$(CXXCOMP_FLAGS)$(DEBUG)/list/show=all/include=([],[--.include],[--.src.base])
.endif
.ifdef X86
.c.obj :
- clang $(CXXFLAGS) -o $(MMS$TARGET_NAME)_cxx.obj $(MMS$TARGET_NAME).c
+ cxx$(CXXFLAGS)/warn=noinfo/obj=$(MMS$TARGET_NAME)_cxx.obj $(MMS$TARGET_NAME).c
cc$(CFLAGS)/warn=noinfo/point=32/list/show=all $(MMS$TARGET_NAME).c
pipe link/map/full/exec=nl: $(MMS$TARGET_NAME).obj | copy sys$input nl:
mc sys$library:vms_auto64 $(MMS$TARGET_NAME).map
cc$(CFLAGS)/warn=(noinfo,disable=(MAYLOSEDATA3))/point=64/obj=$(MMS$TARGET_NAME)_64.obj\
$(MMS$TARGET_NAME)_64.c
- clang $(CXXFLAGS) -o $(MMS$TARGET_NAME)_64_cxx.obj $(MMS$TARGET_NAME)_64.c
+ cxx$(CXXFLAGS)/warn=noinfo/obj=$(MMS$TARGET_NAME)_64_cxx.obj $(MMS$TARGET_NAME)_64.c
delete $(MMS$TARGET_NAME)_64.c;*
.else
.c.obj :
@@ -1937,18 +1947,18 @@
CFLAGS=$(COMP_FLAGS)$(DEBUG)/include=([--.include],[--.src.winfonts])
.ifdef X86
-CXXFLAGS=$(CXXCOMP_FLAGS) -I[] -I[--.include] -I[--.src.base]
+CXXFLAGS=$(CXXCOMP_FLAGS)$(DEBUG)/list/show=all/include=([],[--.include],[--.src.base])
.endif
.ifdef X86
.c.obj :
- clang $(CXXFLAGS) -o $(MMS$TARGET_NAME)_cxx.obj $(MMS$TARGET_NAME).c
+ cxx$(CXXFLAGS)/warn=noinfo/obj=$(MMS$TARGET_NAME)_cxx.obj $(MMS$TARGET_NAME).c
cc$(CFLAGS)/warn=noinfo/point=32/list/show=all $(MMS$TARGET_NAME).c
pipe link/map/full/exec=nl: $(MMS$TARGET_NAME).obj | copy sys$input nl:
mc sys$library:vms_auto64 $(MMS$TARGET_NAME).map
cc$(CFLAGS)/warn=(noinfo,disable=(MAYLOSEDATA3))/point=64/obj=$(MMS$TARGET_NAME)_64.obj\
$(MMS$TARGET_NAME)_64.c
- clang $(CXXFLAGS) -o $(MMS$TARGET_NAME)_64_cxx.obj $(MMS$TARGET_NAME)_64.c
+ cxx$(CXXFLAGS)/warn=noinfo/obj=$(MMS$TARGET_NAME)_64_cxx.obj $(MMS$TARGET_NAME)_64.c
delete $(MMS$TARGET_NAME)_64.c;*
.else
.c.obj :
@@ -1991,6 +2001,7 @@
$ if cparm .eqs. "DEBUG"
$ then
$ ccopt = ccopt + "/noopt/deb"
+$ if x86_64 then cxxopt = cxxopt + "/noopt/deb"
$ lopts = lopts + "/deb"
$ endif
$ if f$locate("CCOPT=",cparm) .lt. f$length(cparm)