Update Freetype to 2.14.0

[ChangeLog][Third-Party Code] Updated bundled Freetype to
2.14.0.

Task-number: QTBUG-140079
Pick-to: 6.8 6.5 5.15
Change-Id: I6b72136a77d2870bc9618ca5dac84f875023d2f7
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
(cherry picked from commit 47975226ac)
(cherry picked from commit 9cc32c2490)
(cherry picked from commit 05287da820)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
Eskil Abrahamsen Blomfeldt 2025-09-11 08:16:21 +02:00 committed by Qt Cherry-pick Bot
parent 0b96e51148
commit 076a68e945
533 changed files with 12071 additions and 6960 deletions

View File

@ -1,6 +1,8 @@
# From freetype CMakeLists.txt # From freetype CMakeLists.txt
set(BASE_SRCS set(BASE_SRCS
src/autofit/afadjust.c
src/autofit/afgsub.c
src/autofit/autofit.c src/autofit/autofit.c
src/base/ftbase.c src/base/ftbase.c
src/base/ftbbox.c src/base/ftbbox.c

View File

@ -1,7 +1,7 @@
FreeType 2.13.3 FreeType 2.14.0
=============== ===============
Homepage: https://www.freetype.org Homepage: https://freetype.org
FreeType is a freely available software library to render fonts. FreeType is a freely available software library to render fonts.
@ -13,7 +13,7 @@ Please read the `docs/CHANGES` file, it contains IMPORTANT
INFORMATION. INFORMATION.
Read the files `docs/INSTALL*` for installation instructions; see the Read the files `docs/INSTALL*` for installation instructions; see the
file `docs/LICENSE.TXT` for the available licenses. file `LICENSE.TXT` for the available licenses.
For using FreeType's git repository instead of a distribution bundle, For using FreeType's git repository instead of a distribution bundle,
please read file `README.git`. Note that you have to actually clone please read file `README.git`. Note that you have to actually clone
@ -32,13 +32,13 @@ sites. Go to
and download one of the following files. and download one of the following files.
freetype-doc-2.13.3.tar.xz freetype-doc-2.14.0.tar.xz
freetype-doc-2.13.3.tar.gz freetype-doc-2.14.0.tar.gz
ftdoc2133.zip ftdoc2140.zip
To view the documentation online, go to To view the documentation online, go to
https://www.freetype.org/freetype2/docs/ https://freetype.org/freetype2/docs/
Mailing Lists Mailing Lists
@ -54,7 +54,7 @@ e-mail lists.
The lists are moderated; see The lists are moderated; see
https://www.freetype.org/contact.html https://freetype.org/contact.html
how to subscribe. how to subscribe.
@ -85,7 +85,7 @@ FreeType!
Details on the process can be found here: Details on the process can be found here:
https://www.freetype.org/developer.html#patches https://freetype.org/developer.html#patches
Enjoy! Enjoy!
@ -94,7 +94,7 @@ Enjoy!
---------------------------------------------------------------------- ----------------------------------------------------------------------
Copyright (C) 2006-2024 by Copyright (C) 2006-2025 by
David Turner, Robert Wilhelm, and Werner Lemberg. David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used, This file is part of the FreeType project, and may only be used,

File diff suppressed because it is too large Load Diff

View File

@ -4,7 +4,7 @@
* *
* Unix-specific FreeType low-level system interface (body). * Unix-specific FreeType low-level system interface (body).
* *
* Copyright (C) 1996-2024 by * Copyright (C) 1996-2025 by
* David Turner, Robert Wilhelm, and Werner Lemberg. * David Turner, Robert Wilhelm, and Werner Lemberg.
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,

View File

@ -4,7 +4,7 @@
* *
* Debugging and logging component for Win32 (body). * Debugging and logging component for Win32 (body).
* *
* Copyright (C) 1996-2024 by * Copyright (C) 1996-2025 by
* David Turner, Robert Wilhelm, and Werner Lemberg. * David Turner, Robert Wilhelm, and Werner Lemberg.
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,
@ -64,7 +64,7 @@
* with the actual log message if set to true. * with the actual log message if set to true.
* *
* 5. The flag `ft_timestamp_flag` prints time along with the actual log * 5. The flag `ft_timestamp_flag` prints time along with the actual log
* message if set to ture. * message if set to true.
* *
* 6. `ft_have_newline_char` is used to differentiate between a log * 6. `ft_have_newline_char` is used to differentiate between a log
* message with and without a trailing newline character. * message with and without a trailing newline character.

View File

@ -1,3 +1,95 @@
CHANGES BETWEEN 2.13.3 and 2.14.0 (2025-Sep-06)
I. IMPORTANT CHANGES
- A new configuration macro `FT_CONFIG_OPTION_USE_HARFBUZZ_DYNAMIC`
is available to load the HarfBuzz library dynamically (in addition
to the standard static and dynamic linking modes); cmake, meson,
and autotools support have been updated accordingly. Using this
new feature makes it possible to avoid the circular dependency
between HarfBuzz and FreeType.
A side effect of this change is that FreeType no longer uses
HarfBuzz header files (if HarfBuzz support is activated).
This code was contributed by Behdad Esfahbod.
- The auto-hinter got new abilities.
. It can now better separate diacritic glyphs from base glyphs at
small sizes by artificially moving diacritics up (or down) if
necessary.
. Tilde accent glyphs get vertically stretched at small sizes so
that they don't degenerate to horizontal lines.
. Diacritics directly attached to a base glyph (like the ogonek in
character 'ę') no longer distort the shape of the base glyph.
These features use a database (which currently has entries for
Unicode characters up to U+FFFF, based on Unicode 17.0), handling
scripts like Latin, Cyrillic, or Greek, but not Arabic or Indic
scripts. FreeType needs to access a proper Unicode character map
(or must be able to construct such a cmap) of a given font to make
this work.
The central algorithm and the foundation of this feature was Craig
White's GSoC 2023 project.
- Bitmap-only TrueType fonts now ignore the `FT_LOAD_NO_BITMAP` flag
and proceed loading bitmaps instead of giving an error. This
behavior is documented and implemented for other bitmap-only
fonts. The flag was always meant to suppress the bitmap strikes
in favor of outlines, not to ban them completely.
II. IMPORTANT BUG FIXES
- Users of the `TT_CONFIG_OPTION_GPOS_KERNING` configuration option
should update; the 'GPOS' table wasn't correctly validated before
access, which could lead to crashes with malformed font files.
III. MISCELLANEOUS
- `FT_Set_Var_Design_Coordinates` and `FT_Set_MM_Blend_Coordinates`
now set the `FT_FACE_FLAG_VARIATION` bit in the `face_flag` field
of `FT_Face` (i.e., the macro `FT_IS_VARIATION` returns true) also
if any of the provided coordinates is different from the face's
default value for the corresponding axis, that is, the set up face
is not at its default position.
- `FT_Load_Sfnt_Table` can now also load a font's table directory.
- The TrueType instruction interpreter was optimized to produce a
15% gain in the glyph loading speed.
- Handling of Variation Fonts is now considerably faster, thanks to
contributions by Behdad Esfahbod.
- TrueType and CFF glyph loading speed has been improved by 5-10% on
modern 64-bit platforms as a result of better handling of fixed-
point multiplication.
- The BDF driver now loads fonts 75% faster.
- 'GPOS' kern table handling (if the `TT_CONFIG_OPTION_GPOS_KERNING`
configuration option is active) is now about 3.5 times faster than
before.
- Support for the (currently undocumented) 'flip' graphic type in
the 'sbix' SFNT table as used in the `Apple Color Emoji.ttc` font
(code provided by Andrew Murray).
- `ftmulti` can now scroll through named instances and gracefully
show static fonts.
- The build file on OpenVMS now also creates a 32-bit version of the
library.
======================================================================
CHANGES BETWEEN 2.13.2 and 2.13.3 (2024-Aug-11) CHANGES BETWEEN 2.13.2 and 2.13.3 (2024-Aug-11)
I. IMPORTANT CHANGES I. IMPORTANT CHANGES
@ -103,7 +195,7 @@ CHANGES BETWEEN 2.12.1 and 2.13.0 (2023-Feb-09)
- The 'COLR' v1 API is now considered as stable. - The 'COLR' v1 API is now considered as stable.
https://learn.microsoft.com/en-us/typography/opentype/spec/colr https://learn.microsoft.com/typography/opentype/spec/colr
II. MISCELLANEOUS II. MISCELLANEOUS
@ -333,6 +425,10 @@ CHANGES BETWEEN 2.10.4 and 2.11.0 (2021-Jul-18)
corresponding `FT_COLR_Paint` object, which contains details corresponding `FT_COLR_Paint` object, which contains details
on how to draw the respective 'COLR' v1 `Paint` table. on how to draw the respective 'COLR' v1 `Paint` table.
Please note that FreeType does *not* provide rendering support for
'COLR' v1 but only parsing of this table. You need a dedicated
graphics library like Skia or Cairo for rendering.
II. MISCELLANEOUS II. MISCELLANEOUS
@ -579,7 +675,7 @@ CHANGES BETWEEN 2.9.1 and 2.10.0 (2019-Mar-15)
Set text foreground color for palette index 0xFFFF. Set text foreground color for palette index 0xFFFF.
FT_Get_Color_Glyph_Layer FT_Get_Color_Glyph_Layer
Get color layers for a given glyph (using an interator Get color layers for a given glyph (using an iterator
object). object).
FT_Bitmap_Blend FT_Bitmap_Blend
@ -2012,7 +2108,7 @@ CHANGES BETWEEN 2.4.10 and 2.4.11 (2012-Dec-20)
- Subpixel hinting support has been contributed by Infinality, - Subpixel hinting support has been contributed by Infinality,
based on Greg Hitchcock's whitepaper at based on Greg Hitchcock's whitepaper at
https://www.microsoft.com/typography/cleartype/truetypecleartype.aspx https://learn.microsoft.com/typography/cleartype/truetypecleartype
Originally, it was a separate patch available from Originally, it was a separate patch available from
@ -2985,7 +3081,7 @@ CHANGES BETWEEN 2.2 and 2.1.10
We provide patches for most of those rogue clients. See the We provide patches for most of those rogue clients. See the
following page for more information: following page for more information:
https://www.freetype.org/freetype2/patches/rogue-patches.html https://freetype.org/freetype2/patches/rogue-patches.html
Note that, as a convenience to our Unix desktop users, version Note that, as a convenience to our Unix desktop users, version
2.2 is *binary* compatible with FreeType 2.1.7, which means that 2.2 is *binary* compatible with FreeType 2.1.7, which means that
@ -3774,7 +3870,7 @@ CHANGES BETWEEN 2.1.3 and 2.1.2
quality since many nasty defaults have been suppressed. Please quality since many nasty defaults have been suppressed. Please
visit the web page: visit the web page:
https://www.freetype.org/hinting/smooth-hinting.html https://freetype.org/hinting/smooth-hinting.html
for additional details on this topic. for additional details on this topic.
@ -4022,7 +4118,7 @@ CHANGES BETWEEN 2.1.0 and 2.0.9
""" """
Portions of this software are copyright © 1996-2002 The Portions of this software are copyright © 1996-2002 The
FreeType Project (www.freetype.org). All rights reserved. FreeType Project (https://freetype.org). All rights reserved.
""" """
- The default size of the render pool has been reduced to 16kByte. - The default size of the render pool has been reduced to 16kByte.
@ -4033,7 +4129,7 @@ CHANGES BETWEEN 2.1.0 and 2.0.9
- The FreeType 2 redesign has begun. More information can be - The FreeType 2 redesign has begun. More information can be
found at this URL: found at this URL:
https://www.freetype.org/freetype2/redesign.html https://freetype.org/freetype2/redesign.html
The following internal changes have been performed within the The following internal changes have been performed within the
sources of this release: sources of this release:
@ -4624,7 +4720,7 @@ CHANGES BETWEEN 2.0.2 and 2.0.1
For more information, see section I of the following document: For more information, see section I of the following document:
https://www.freetype.org/freetype2/docs/tutorial/step1.html https://freetype.org/freetype2/docs/tutorial/step1.html
- Many, many comments have been added to the public source file in - Many, many comments have been added to the public source file in
order to automatically generate the API Reference through the order to automatically generate the API Reference through the
@ -4633,7 +4729,7 @@ CHANGES BETWEEN 2.0.2 and 2.0.1
The latter has been updated to support the grouping of sections The latter has been updated to support the grouping of sections
in chapters and better index sort. See: in chapters and better index sort. See:
https://www.freetype.org/freetype2/docs/reference/ft2-toc.html https://freetype.org/freetype2/docs/reference/ft2-toc.html
III. CHANGES TO THE BUILD PROCESS III. CHANGES TO THE BUILD PROCESS
@ -5708,7 +5804,7 @@ Extensions support:
------------------------------------------------------------------------ ------------------------------------------------------------------------
Copyright (C) 2000-2024 by Copyright (C) 2000-2025 by
David Turner, Robert Wilhelm, and Werner Lemberg. David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used, This file is part of the FreeType project, and may only be used,

View File

@ -139,7 +139,7 @@ IV. Overriding default configuration and module headers
---------------------------------------------------------------------- ----------------------------------------------------------------------
Copyright (C) 2003-2024 by Copyright (C) 2003-2025 by
David Turner, Robert Wilhelm, and Werner Lemberg. David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used, This file is part of the FreeType project, and may only be used,

View File

@ -297,7 +297,7 @@ to access them.
------------------------------------------------------------------------ ------------------------------------------------------------------------
Copyright (C) 2002-2024 by Copyright (C) 2002-2025 by
David Turner, Robert Wilhelm, and Werner Lemberg. David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used, This file is part of the FreeType project, and may only be used,

View File

@ -49,7 +49,7 @@ Introduction
""" """
Portions of this software are copyright © <year> The FreeType Portions of this software are copyright © <year> The FreeType
Project (www.freetype.org). All rights reserved. Project (https://freetype.org). All rights reserved.
""" """
Please replace <year> with the value from the FreeType version you Please replace <year> with the value from the FreeType version you
@ -163,7 +163,7 @@ Legal Terms
Our home page can be found at Our home page can be found at
https://www.freetype.org https://freetype.org
--- end of FTL.TXT --- --- end of FTL.TXT ---

View File

@ -27,7 +27,7 @@ Other bugs have been registered at the savannah bugzilla of FreeType.
------------------------------------------------------------------------ ------------------------------------------------------------------------
Copyright (C) 2001-2024 by Copyright (C) 2001-2025 by
David Turner, Robert Wilhelm, and Werner Lemberg. David Turner, Robert Wilhelm, and Werner Lemberg.
This file is part of the FreeType project, and may only be used, This file is part of the FreeType project, and may only be used,

View File

@ -1,8 +0,0 @@
version = 1
[[annotations]]
path = "ft2build.h"
comment = "Copyright continuation line ignored by reuse for lack of word Copyright at start."
precedence = "override"
SPDX-FileCopyrightText = "Copyright (c) 2001, 2012 David Turner, Robert Wilhelm, and Werner Lemberg"
SPDX-License-Identifier = "FTL OR GPL-2.0-only"

View File

@ -1,7 +0,0 @@
version = 1
[[annotations]]
path = "*"
precedence = "closest"
SPDX-FileCopyrightText = "Copyright (c) 2019 nyorain"
SPDX-License-Identifier = "BSL-1.0"

View File

@ -1,123 +0,0 @@
version = 1
[[annotations]]
path = "ftbzip2.h"
comment = "Copyright continuation line ignored by reuse for lack of word Copyright at start."
precedence = "override"
SPDX-FileCopyrightText = "Copyright (C) 2010-2023 by Joel Klinghed."
SPDX-License-Identifier = "FTL OR GPL-2.0-only"
[[annotations]]
path = "ftmac.h"
comment = "Copyright continuation line ignored by reuse for lack of word Copyright at start."
precedence = "override"
SPDX-FileCopyrightText = "Copyright (C) 1996-2023 by Just van Rossum, David Turner, Robert Wilhelm, and Werner Lemberg."
SPDX-License-Identifier = "FTL OR GPL-2.0-only"
[[annotations]]
path = "ftgxval.h"
comment = "Copyright continuation line ignored by reuse for lack of word Copyright at start."
precedence = "override"
SPDX-FileCopyrightText = "Copyright (C) 2004-2023 by Masatake YAMATO, Redhat K.K, David Turner, Robert Wilhelm, and Werner Lemberg."
SPDX-License-Identifier = "FTL OR GPL-2.0-only"
[[annotations]]
path = "otsvg.h"
comment = "Copyright continuation line ignored by reuse for lack of word Copyright at start."
precedence = "override"
SPDX-FileCopyrightText = "Copyright (C) 2022-2023 by David Turner, Robert Wilhelm, Werner Lemberg, and Moazin Khatti."
SPDX-License-Identifier = "FTL OR GPL-2.0-only"
[[annotations]]
path = "ftcid.h"
comment = "Copyright continuation line ignored by reuse for lack of word Copyright at start."
precedence = "override"
SPDX-FileCopyrightText = "Copyright (C) 2007-2023 by Dereg Clegg and Michael Toftdal."
SPDX-License-Identifier = "FTL OR GPL-2.0-only"
[[annotations]]
path = ["freetype.h", "ftbbox.h", "ftcache.h", "fterrors.h", "ftglyph.h",
"ftimage.h", "ftlist.h", "ftmac.h", "ftmm.h", "ftmodapi.h", "ftoutln.h",
"ftrender.h", "ftsizes.h", "ftsnames.h", "ftsystem.h", "fttypes.h",
"t1tables.h", "ttnameid.h", "tttables.h", "tttags.h","ftchapters.h"]
comment = "Copyright continuation line ignored by reuse for lack of word Copyright at start."
precedence = "override"
SPDX-FileCopyrightText = "Copyright (C) 1996-2023 by David Turner, Robert Wilhelm, and Werner Lemberg."
SPDX-License-Identifier = "FTL OR GPL-2.0-only"
[[annotations]]
path = "ftsynth.h"
comment = "Copyright continuation line ignored by reuse for lack of word Copyright at start."
precedence = "override"
SPDX-FileCopyrightText = "Copyright (C) 2000-2023 by David Turner, Robert Wilhelm, and Werner Lemberg."
SPDX-License-Identifier = "FTL OR GPL-2.0-only"
[[annotations]]
path = ["ftmoderr.h", "fttrigon.h"]
comment = "Copyright continuation line ignored by reuse for lack of word Copyright at start."
precedence = "override"
SPDX-FileCopyrightText = "Copyright (C) 2001-2023 by David Turner, Robert Wilhelm, and Werner Lemberg."
SPDX-License-Identifier = "FTL OR GPL-2.0-only"
[[annotations]]
path = ["ftbdf.h", "fterrdef.h", "ftfntfmt.h", "ftgzip.h", "ftincrem.h", "ftpfr.h", "ftstroke.h"]
comment = "Copyright continuation line ignored by reuse for lack of word Copyright at start."
precedence = "override"
SPDX-FileCopyrightText = "Copyright (C) 2002-2023 by David Turner, Robert Wilhelm, and Werner Lemberg."
SPDX-License-Identifier = "FTL OR GPL-2.0-only"
[[annotations]]
path = "ftwinfnt.h"
comment = "Copyright continuation line ignored by reuse for lack of word Copyright at start."
precedence = "override"
SPDX-FileCopyrightText = "Copyright (C) 2003-2023 by David Turner, Robert Wilhelm, and Werner Lemberg."
SPDX-License-Identifier = "FTL OR GPL-2.0-only"
[[annotations]]
path = ["ftbitmap.h", "ftlzw.h", "ftotval.h"]
comment = "Copyright continuation line ignored by reuse for lack of word Copyright at start."
precedence = "override"
SPDX-FileCopyrightText = "Copyright (C) 2004-2023 by David Turner, Robert Wilhelm, and Werner Lemberg."
SPDX-License-Identifier = "FTL OR GPL-2.0-only"
[[annotations]]
path = "ftlcdfil.h"
comment = "Copyright continuation line ignored by reuse for lack of word Copyright at start."
precedence = "override"
SPDX-FileCopyrightText = "Copyright (C) 2006-2023 by David Turner, Robert Wilhelm, and Werner Lemberg."
SPDX-License-Identifier = "FTL OR GPL-2.0-only"
[[annotations]]
path = "ftgasp.h"
comment = "Copyright continuation line ignored by reuse for lack of word Copyright at start."
precedence = "override"
SPDX-FileCopyrightText = "Copyright (C) 2007-2023 by David Turner, Robert Wilhelm, and Werner Lemberg."
SPDX-License-Identifier = "FTL OR GPL-2.0-only"
[[annotations]]
path = "ftadvanc.h"
comment = "Copyright continuation line ignored by reuse for lack of word Copyright at start."
precedence = "override"
SPDX-FileCopyrightText = "Copyright (C) 2008-2023 by David Turner, Robert Wilhelm, and Werner Lemberg."
SPDX-License-Identifier = "FTL OR GPL-2.0-only"
[[annotations]]
path = ["ftdriver.h", "ftparams.h"]
comment = "Copyright continuation line ignored by reuse for lack of word Copyright at start."
precedence = "override"
SPDX-FileCopyrightText = "Copyright (C) 2017-2023 by David Turner, Robert Wilhelm, and Werner Lemberg."
SPDX-License-Identifier = "FTL OR GPL-2.0-only"
[[annotations]]
path = "ftcolor.h"
comment = "Copyright continuation line ignored by reuse for lack of word Copyright at start."
precedence = "override"
SPDX-FileCopyrightText = "Copyright (C) 2018-2023 by David Turner, Robert Wilhelm, and Werner Lemberg."
SPDX-License-Identifier = "FTL OR GPL-2.0-only"
[[annotations]]
path = "ftlogging.h"
comment = "Copyright continuation line ignored by reuse for lack of word Copyright at start."
precedence = "override"
SPDX-FileCopyrightText = "Copyright (C) 2020-2023 by David Turner, Robert Wilhelm, and Werner Lemberg."
SPDX-License-Identifier = "FTL OR GPL-2.0-only"

View File

@ -1,28 +0,0 @@
version = 1
[[annotations]]
path = "ftmodule.h"
precedence = "override"
SPDX-FileCopyrightText = "None"
SPDX-License-Identifier = "FTL OR GPL-2.0-only"
[[annotations]]
path = ["mac-support.h", "integer-types.h", "ftoption.h", "ftheader.h", "ftconfig.h"]
comment = "Copyright continuation line ignored by reuse for lack of word Copyright at start."
precedence = "override"
SPDX-FileCopyrightText = "Copyright (C) 1996-2023 by Just van Rossum, David Turner, Robert Wilhelm, and Werner Lemberg."
SPDX-License-Identifier = "FTL OR GPL-2.0-only"
[[annotations]]
path = "ftstdlib.h"
comment = "Copyright continuation line ignored by reuse for lack of word Copyright at start."
precedence = "override"
SPDX-FileCopyrightText = "Copyright (C) 2002-2023 by David Turner, Robert Wilhelm, and Werner Lemberg."
SPDX-License-Identifier = "FTL OR GPL-2.0-only"
[[annotations]]
path = "public-macros.h"
comment = "Copyright continuation line ignored by reuse for lack of word Copyright at start."
precedence = "override"
SPDX-FileCopyrightText = "Copyright (C) 2020-2023 by David Turner, Robert Wilhelm, and Werner Lemberg."
SPDX-License-Identifier = "FTL OR GPL-2.0-only"

View File

@ -4,7 +4,7 @@
* *
* ANSI-specific configuration file (specification only). * ANSI-specific configuration file (specification only).
* *
* Copyright (C) 1996-2024 by * Copyright (C) 1996-2025 by
* David Turner, Robert Wilhelm, and Werner Lemberg. * David Turner, Robert Wilhelm, and Werner Lemberg.
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,

View File

@ -4,7 +4,7 @@
* *
* Build macros of the FreeType 2 library. * Build macros of the FreeType 2 library.
* *
* Copyright (C) 1996-2024 by * Copyright (C) 1996-2025 by
* David Turner, Robert Wilhelm, and Werner Lemberg. * David Turner, Robert Wilhelm, and Werner Lemberg.
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,

View File

@ -4,7 +4,7 @@
* *
* User-selectable configuration macros (specification only). * User-selectable configuration macros (specification only).
* *
* Copyright (C) 1996-2024 by * Copyright (C) 1996-2025 by
* David Turner, Robert Wilhelm, and Werner Lemberg. * David Turner, Robert Wilhelm, and Werner Lemberg.
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,
@ -158,12 +158,12 @@ FT_BEGIN_HEADER
/************************************************************************** /**************************************************************************
* *
* If this macro is defined, try to use an inlined assembler version of the * If this macro is defined, try to use an inlined 64-bit or assembler
* @FT_MulFix function, which is a 'hotspot' when loading and hinting * version of the @FT_MulFix function, which is a 'hotspot' when loading
* glyphs, and which should be executed as fast as possible. * and hinting glyphs, and which should be executed as fast as possible.
* *
* Note that if your compiler or CPU is not supported, this will default to * If your compiler is not C99-compliant or CPU assembly is not supported,
* the standard and portable implementation found in `ftcalc.c`. * you can disable this option.
*/ */
#define FT_CONFIG_OPTION_INLINE_MULFIX #define FT_CONFIG_OPTION_INLINE_MULFIX
@ -293,6 +293,31 @@ FT_BEGIN_HEADER
/* #define FT_CONFIG_OPTION_USE_HARFBUZZ */ /* #define FT_CONFIG_OPTION_USE_HARFBUZZ */
/**************************************************************************
*
* HarfBuzz dynamic support.
*
* Define this macro if you want the HarfBuzz library to be loaded at
* runtime instead of being linked to FreeType.
*
* This option has no effect if `FT_CONFIG_OPTION_USE_HARFBUZZ` is not
* defined.
*
* When this option is enabled, FreeType will try to load the HarfBuzz
* library at runtime, using `dlopen` or `LoadLibrary`, depending on the
* platform. On Microsoft platforms, the library name looked up is
* `libharfbuzz-0.dll`. On Apple platforms, the library name looked up
* is `libharfbuzz.0.dylib`. On all other platforms, the library name
* looked up is `libharfbuzz.so.0`. This name can be overridden by
* defining the macro `FT_LIBHARFBUZZ` at FreeType compilation time.
*
* If you use a build system like cmake or the `configure` script,
* options set by those programs have precedence, overwriting the value
* here with the configured one.
*/
/* #define FT_CONFIG_OPTION_USE_HARFBUZZ_DYNAMIC */
/************************************************************************** /**************************************************************************
* *
* Brotli support. * Brotli support.
@ -679,7 +704,7 @@ FT_BEGIN_HEADER
* defined. * defined.
* *
* [1] * [1]
* https://www.microsoft.com/typography/cleartype/truetypecleartype.aspx * https://learn.microsoft.com/typography/cleartype/truetypecleartype
*/ */
#define TT_CONFIG_OPTION_SUBPIXEL_HINTING #define TT_CONFIG_OPTION_SUBPIXEL_HINTING
@ -697,7 +722,7 @@ FT_BEGIN_HEADER
* flags array which can be used to disambiguate, but old fonts will not * flags array which can be used to disambiguate, but old fonts will not
* have them. * have them.
* *
* https://www.microsoft.com/typography/otspec/glyf.htm * https://learn.microsoft.com/typography/opentype/spec/glyf
* https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6glyf.html * https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6glyf.html
*/ */
#undef TT_CONFIG_OPTION_COMPONENT_OFFSET_SCALED #undef TT_CONFIG_OPTION_COMPONENT_OFFSET_SCALED
@ -760,10 +785,10 @@ FT_BEGIN_HEADER
/************************************************************************** /**************************************************************************
* *
* Option `TT_CONFIG_OPTION_GPOS_KERNING` enables a basic GPOS kerning * Option `TT_CONFIG_OPTION_GPOS_KERNING` enables a basic GPOS kerning
* implementation (for TrueType fonts only). With this defined, FreeType * implementation (for TrueType and OpenType fonts only). With this
* is able to get kerning pair data from the GPOS 'kern' feature as well as * defined, FreeType is able to get kerning pair data from the GPOS 'kern'
* legacy 'kern' tables; without this defined, FreeType will only be able * feature as well as legacy 'kern' tables; without this defined, FreeType
* to use legacy 'kern' tables. * will only be able to use legacy 'kern' tables.
* *
* Note that FreeType does not support more advanced GPOS layout features; * Note that FreeType does not support more advanced GPOS layout features;
* even the 'kern' feature implemented here doesn't handle more * even the 'kern' feature implemented here doesn't handle more

View File

@ -5,7 +5,7 @@
* ANSI-specific library and header configuration file (specification * ANSI-specific library and header configuration file (specification
* only). * only).
* *
* Copyright (C) 2002-2024 by * Copyright (C) 2002-2025 by
* David Turner, Robert Wilhelm, and Werner Lemberg. * David Turner, Robert Wilhelm, and Werner Lemberg.
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,

View File

@ -4,7 +4,7 @@
* *
* FreeType integer types definitions. * FreeType integer types definitions.
* *
* Copyright (C) 1996-2024 by * Copyright (C) 1996-2025 by
* David Turner, Robert Wilhelm, and Werner Lemberg. * David Turner, Robert Wilhelm, and Werner Lemberg.
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,
@ -17,6 +17,8 @@
#ifndef FREETYPE_CONFIG_INTEGER_TYPES_H_ #ifndef FREETYPE_CONFIG_INTEGER_TYPES_H_
#define FREETYPE_CONFIG_INTEGER_TYPES_H_ #define FREETYPE_CONFIG_INTEGER_TYPES_H_
FT_BEGIN_HEADER
/* There are systems (like the Texas Instruments 'C54x) where a `char` */ /* There are systems (like the Texas Instruments 'C54x) where a `char` */
/* has 16~bits. ANSI~C says that `sizeof(char)` is always~1. Since an */ /* has 16~bits. ANSI~C says that `sizeof(char)` is always~1. Since an */
/* `int` has 16~bits also for this system, `sizeof(int)` gives~1 which */ /* `int` has 16~bits also for this system, `sizeof(int)` gives~1 which */
@ -242,9 +244,34 @@
#endif /* FT_SIZEOF_LONG == (64 / FT_CHAR_BIT) */ #endif /* FT_SIZEOF_LONG == (64 / FT_CHAR_BIT) */
#ifdef FT_INT64 #ifdef FT_INT64
typedef FT_INT64 FT_Int64; typedef FT_INT64 FT_Int64;
typedef FT_UINT64 FT_UInt64; typedef FT_UINT64 FT_UInt64;
#endif
# define FT_INT64_ZERO 0
#else /* !FT_INT64 */
/* we need to emulate 64-bit data types if none are available */
typedef struct FT_Int64_
{
FT_UInt32 lo;
FT_UInt32 hi;
} FT_Int64;
typedef struct FT_UInt64_
{
FT_UInt32 lo;
FT_UInt32 hi;
} FT_UInt64;
# define FT_INT64_ZERO { 0, 0 }
#endif /* !FT_INT64 */
FT_END_HEADER
#endif /* FREETYPE_CONFIG_INTEGER_TYPES_H_ */ #endif /* FREETYPE_CONFIG_INTEGER_TYPES_H_ */

View File

@ -4,7 +4,7 @@
* *
* Mac/OS X support configuration header. * Mac/OS X support configuration header.
* *
* Copyright (C) 1996-2024 by * Copyright (C) 1996-2025 by
* David Turner, Robert Wilhelm, and Werner Lemberg. * David Turner, Robert Wilhelm, and Werner Lemberg.
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,

View File

@ -4,7 +4,7 @@
* *
* Define a set of compiler macros used in public FreeType headers. * Define a set of compiler macros used in public FreeType headers.
* *
* Copyright (C) 2020-2024 by * Copyright (C) 2020-2025 by
* David Turner, Robert Wilhelm, and Werner Lemberg. * David Turner, Robert Wilhelm, and Werner Lemberg.
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,
@ -62,8 +62,8 @@ FT_BEGIN_HEADER
* because it is needed by `FT_EXPORT`. * because it is needed by `FT_EXPORT`.
*/ */
/* Visual C, mingw */ /* Visual C, MinGW, Cygwin */
#if defined( _WIN32 ) #if defined( _WIN32 ) || defined( __CYGWIN__ )
#if defined( FT2_BUILD_LIBRARY ) && defined( DLL_EXPORT ) #if defined( FT2_BUILD_LIBRARY ) && defined( DLL_EXPORT )
#define FT_PUBLIC_FUNCTION_ATTRIBUTE __declspec( dllexport ) #define FT_PUBLIC_FUNCTION_ATTRIBUTE __declspec( dllexport )

View File

@ -4,7 +4,7 @@
* *
* FreeType high-level API and common types (specification only). * FreeType high-level API and common types (specification only).
* *
* Copyright (C) 1996-2024 by * Copyright (C) 1996-2025 by
* David Turner, Robert Wilhelm, and Werner Lemberg. * David Turner, Robert Wilhelm, and Werner Lemberg.
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,
@ -811,7 +811,7 @@ FT_BEGIN_HEADER
* FT_ENCODING_MS_SYMBOL :: * FT_ENCODING_MS_SYMBOL ::
* Microsoft Symbol encoding, used to encode mathematical symbols and * Microsoft Symbol encoding, used to encode mathematical symbols and
* wingdings. For more information, see * wingdings. For more information, see
* 'https://www.microsoft.com/typography/otspec/recom.htm#non-standard-symbol-fonts', * 'https://learn.microsoft.com/typography/opentype/spec/recom#non-standard-symbol-fonts',
* 'http://www.kostis.net/charsets/symbol.htm', and * 'http://www.kostis.net/charsets/symbol.htm', and
* 'http://www.kostis.net/charsets/wingding.htm'. * 'http://www.kostis.net/charsets/wingding.htm'.
* *
@ -1068,12 +1068,12 @@ FT_BEGIN_HEADER
* the face in the font file (starting with value~0). They are set * the face in the font file (starting with value~0). They are set
* to~0 if there is only one face in the font file. * to~0 if there is only one face in the font file.
* *
* [Since 2.6.1] Bits 16-30 are relevant to GX and OpenType variation * [Since 2.6.1] Bits 16-30 are relevant to TrueType GX and OpenType
* fonts only, holding the named instance index for the current face * Font Variations only, holding the named instance index for the
* index (starting with value~1; value~0 indicates font access without * current face index (starting with value~1; value~0 indicates font
* a named instance). For non-variation fonts, bits 16-30 are ignored. * access without a named instance). For non-variation fonts, bits
* If we have the third named instance of face~4, say, `face_index` is * 16-30 are ignored. If we have the third named instance of face~4,
* set to 0x00030004. * say, `face_index` is set to 0x00030004.
* *
* Bit 31 is always zero (that is, `face_index` is always a positive * Bit 31 is always zero (that is, `face_index` is always a positive
* value). * value).
@ -1092,10 +1092,10 @@ FT_BEGIN_HEADER
* the face; see @FT_STYLE_FLAG_XXX for the details. * the face; see @FT_STYLE_FLAG_XXX for the details.
* *
* [Since 2.6.1] Bits 16-30 hold the number of named instances * [Since 2.6.1] Bits 16-30 hold the number of named instances
* available for the current face if we have a GX or OpenType variation * available for the current face if we have a TrueType GX or OpenType
* (sub)font. Bit 31 is always zero (that is, `style_flags` is always * Font Variation. Bit 31 is always zero (that is, `style_flags` is
* a positive value). Note that a variation font has always at least * always a positive value). Note that a variation font has always at
* one named instance, namely the default instance. * least one named instance, namely the default instance.
* *
* num_glyphs :: * num_glyphs ::
* The number of glyphs in the face. If the face is scalable and has * The number of glyphs in the face. If the face is scalable and has
@ -1159,7 +1159,7 @@ FT_BEGIN_HEADER
* Note that the bounding box might be off by (at least) one pixel for * Note that the bounding box might be off by (at least) one pixel for
* hinted fonts. See @FT_Size_Metrics for further discussion. * hinted fonts. See @FT_Size_Metrics for further discussion.
* *
* Note that the bounding box does not vary in OpenType variation fonts * Note that the bounding box does not vary in OpenType Font Variations
* and should only be used in relation to the default instance. * and should only be used in relation to the default instance.
* *
* units_per_EM :: * units_per_EM ::
@ -1218,7 +1218,7 @@ FT_BEGIN_HEADER
* Fields may be changed after a call to @FT_Attach_File or * Fields may be changed after a call to @FT_Attach_File or
* @FT_Attach_Stream. * @FT_Attach_Stream.
* *
* For an OpenType variation font, the values of the following fields can * For OpenType Font Variations, the values of the following fields can
* change after a call to @FT_Set_Var_Design_Coordinates (and friends) if * change after a call to @FT_Set_Var_Design_Coordinates (and friends) if
* the font contains an 'MVAR' table: `ascender`, `descender`, `height`, * the font contains an 'MVAR' table: `ascender`, `descender`, `height`,
* `underline_position`, and `underline_thickness`. * `underline_position`, and `underline_thickness`.
@ -1336,7 +1336,7 @@ FT_BEGIN_HEADER
* FT_FACE_FLAG_MULTIPLE_MASTERS :: * FT_FACE_FLAG_MULTIPLE_MASTERS ::
* The face contains multiple masters and is capable of interpolating * The face contains multiple masters and is capable of interpolating
* between them. Supported formats are Adobe MM, TrueType GX, and * between them. Supported formats are Adobe MM, TrueType GX, and
* OpenType variation fonts. * OpenType Font Variations.
* *
* See section @multiple_masters for API details. * See section @multiple_masters for API details.
* *
@ -1609,7 +1609,7 @@ FT_BEGIN_HEADER
* *
* @description: * @description:
* A macro that returns true whenever a face object is a named instance * A macro that returns true whenever a face object is a named instance
* of a GX or OpenType variation font. * of a TrueType GX or OpenType Font Variations.
* *
* [Since 2.9] Changing the design coordinates with * [Since 2.9] Changing the design coordinates with
* @FT_Set_Var_Design_Coordinates or @FT_Set_Var_Blend_Coordinates does * @FT_Set_Var_Design_Coordinates or @FT_Set_Var_Blend_Coordinates does
@ -2147,7 +2147,7 @@ FT_BEGIN_HEADER
* freed. * freed.
* *
* [Since 2.10.1] If @FT_LOAD_NO_SCALE is set, outline coordinates of * [Since 2.10.1] If @FT_LOAD_NO_SCALE is set, outline coordinates of
* OpenType variation fonts for a selected instance are internally * OpenType Font Variations for a selected instance are internally
* handled as 26.6 fractional font units but returned as (rounded) * handled as 26.6 fractional font units but returned as (rounded)
* integers, as expected. To get unrounded font units, don't use * integers, as expected. To get unrounded font units, don't use
* @FT_LOAD_NO_SCALE but load the glyph with @FT_LOAD_NO_HINTING and * @FT_LOAD_NO_SCALE but load the glyph with @FT_LOAD_NO_HINTING and
@ -2640,14 +2640,14 @@ FT_BEGIN_HEADER
* the face in the font file (starting with value~0). Set it to~0 if * the face in the font file (starting with value~0). Set it to~0 if
* there is only one face in the font file. * there is only one face in the font file.
* *
* [Since 2.6.1] Bits 16-30 are relevant to GX and OpenType variation * [Since 2.6.1] Bits 16-30 are relevant to TrueType GX and OpenType
* fonts only, specifying the named instance index for the current face * Font Variations only, specifying the named instance index for the
* index (starting with value~1; value~0 makes FreeType ignore named * current face index (starting with value~1; value~0 makes FreeType
* instances). For non-variation fonts, bits 16-30 are ignored. * ignore named instances). For non-variation fonts, bits 16-30 are
* Assuming that you want to access the third named instance in face~4, * ignored. Assuming that you want to access the third named instance
* `face_index` should be set to 0x00030004. If you want to access * in face~4, `face_index` should be set to 0x00030004. If you want
* face~4 without variation handling, simply set `face_index` to * to access face~4 without variation handling, simply set
* value~4. * `face_index` to value~4.
* *
* `FT_Open_Face` and its siblings can be used to quickly check whether * `FT_Open_Face` and its siblings can be used to quickly check whether
* the font format of a given font resource is supported by FreeType. * the font format of a given font resource is supported by FreeType.
@ -2914,11 +2914,11 @@ FT_BEGIN_HEADER
* of the available glyphs at a given ppem value is available. FreeType * of the available glyphs at a given ppem value is available. FreeType
* silently uses outlines if there is no bitmap for a given glyph index. * silently uses outlines if there is no bitmap for a given glyph index.
* *
* For GX and OpenType variation fonts, a bitmap strike makes sense only * For TrueType GX and OpenType Font Variations, a bitmap strike makes
* if the default instance is active (that is, no glyph variation takes * sense only if the default instance is active (that is, no glyph
* place); otherwise, FreeType simply ignores bitmap strikes. The same * variation takes place); otherwise, FreeType simply ignores bitmap
* is true for all named instances that are different from the default * strikes. The same is true for all named instances that are different
* instance. * from the default instance.
* *
* Don't use this function if you are using the FreeType cache API. * Don't use this function if you are using the FreeType cache API.
*/ */
@ -3078,7 +3078,7 @@ FT_BEGIN_HEADER
* is dependent entirely on how the size is defined in the source face. * is dependent entirely on how the size is defined in the source face.
* The font designer chooses the final size of each glyph relative to * The font designer chooses the final size of each glyph relative to
* this size. For more information refer to * this size. For more information refer to
* 'https://www.freetype.org/freetype2/docs/glyphs/glyphs-2.html'. * 'https://freetype.org/freetype2/docs/glyphs/glyphs-2.html'.
* *
* Contrary to @FT_Set_Char_Size, this function doesn't have special code * Contrary to @FT_Set_Char_Size, this function doesn't have special code
* to normalize zero-valued widths, heights, or resolutions, which are * to normalize zero-valued widths, heights, or resolutions, which are
@ -3441,8 +3441,10 @@ FT_BEGIN_HEADER
* blending of the color glyph layers associated with the glyph index, * blending of the color glyph layers associated with the glyph index,
* using the same bitmap format as embedded color bitmap images. This * using the same bitmap format as embedded color bitmap images. This
* is mainly for convenience and works only for glyphs in 'COLR' v0 * is mainly for convenience and works only for glyphs in 'COLR' v0
* tables (or glyphs in 'COLR' v1 tables that exclusively use v0 * tables. **There is no rendering support for 'COLR' v1** (with the
* features). For full control of color layers use * exception of v1 tables that exclusively use v0 features)! You need
* a graphics library like Skia or Cairo to interpret the graphics
* commands stored in v1 tables. For full control of color layers use
* @FT_Get_Color_Glyph_Layer and FreeType's color functions like * @FT_Get_Color_Glyph_Layer and FreeType's color functions like
* @FT_Palette_Select instead of setting @FT_LOAD_COLOR for rendering * @FT_Palette_Select instead of setting @FT_LOAD_COLOR for rendering
* so that the client application can handle blending by itself. * so that the client application can handle blending by itself.
@ -3895,8 +3897,10 @@ FT_BEGIN_HEADER
* *
* This process can cost performance. There is an approximation that * This process can cost performance. There is an approximation that
* does not need to know about the background color; see * does not need to know about the background color; see
* https://bel.fi/alankila/lcd/ and * https://web.archive.org/web/20211019204945/https://bel.fi/alankila/lcd/
* https://bel.fi/alankila/lcd/alpcor.html for details. * and
* https://web.archive.org/web/20210211002939/https://bel.fi/alankila/lcd/alpcor.html
* for details.
* *
* **ATTENTION**: Linear blending is even more important when dealing * **ATTENTION**: Linear blending is even more important when dealing
* with subpixel-rendered glyphs to prevent color-fringing! A * with subpixel-rendered glyphs to prevent color-fringing! A
@ -3993,13 +3997,13 @@ FT_BEGIN_HEADER
* out of the scope of this API function -- they can be implemented * out of the scope of this API function -- they can be implemented
* through format-specific interfaces. * through format-specific interfaces.
* *
* Note that, for TrueType fonts only, this can extract data from both * Note that, for TrueType and OpenType fonts only, this can extract data
* the 'kern' table and the basic, pair-wise kerning feature from the * from both the 'kern' table and the basic, pair-wise kerning feature
* GPOS table (with `TT_CONFIG_OPTION_GPOS_KERNING` enabled), though * from the GPOS table (with `TT_CONFIG_OPTION_GPOS_KERNING` enabled),
* FreeType does not support the more advanced GPOS layout features; use * though FreeType does not support the more advanced GPOS layout
* a library like HarfBuzz for those instead. If a font has both a * features; use a library like HarfBuzz for those instead. If a font
* 'kern' table and kern features of a GPOS table, the 'kern' table will * has both a 'kern' table and kern features of a GPOS table, the 'kern'
* be used. * table will be used.
* *
* Also note for right-to-left scripts, the functionality may differ for * 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 with GPOS tables vs. 'kern' tables. For GPOS, right-to-left
@ -4530,7 +4534,7 @@ FT_BEGIN_HEADER
* table description in the OpenType specification for the meaning of the * table description in the OpenType specification for the meaning of the
* various flags (which get synthesized for non-OpenType subglyphs). * various flags (which get synthesized for non-OpenType subglyphs).
* *
* https://docs.microsoft.com/en-us/typography/opentype/spec/glyf#composite-glyph-description * https://learn.microsoft.com/typography/opentype/spec/glyf#composite-glyph-description
* *
* @values: * @values:
* FT_SUBGLYPH_FLAG_ARGS_ARE_WORDS :: * FT_SUBGLYPH_FLAG_ARGS_ARE_WORDS ::
@ -4593,7 +4597,7 @@ FT_BEGIN_HEADER
* interpreted depending on the flags returned in `*p_flags`. See the * interpreted depending on the flags returned in `*p_flags`. See the
* OpenType specification for details. * OpenType specification for details.
* *
* https://docs.microsoft.com/en-us/typography/opentype/spec/glyf#composite-glyph-description * https://learn.microsoft.com/typography/opentype/spec/glyf#composite-glyph-description
* *
*/ */
FT_EXPORT( FT_Error ) FT_EXPORT( FT_Error )
@ -4619,7 +4623,7 @@ FT_BEGIN_HEADER
* associated with a font. * associated with a font.
* *
* See * See
* https://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/FontPolicies.pdf * https://adobe-type-tools.github.io/font-tech-notes/pdfs/AcrobatDC_FontPolicies.pdf
* for more details. * for more details.
* *
* @values: * @values:
@ -5173,8 +5177,8 @@ FT_BEGIN_HEADER
* *
*/ */
#define FREETYPE_MAJOR 2 #define FREETYPE_MAJOR 2
#define FREETYPE_MINOR 13 #define FREETYPE_MINOR 14
#define FREETYPE_PATCH 3 #define FREETYPE_PATCH 0
/************************************************************************** /**************************************************************************

View File

@ -4,7 +4,7 @@
* *
* Quick computation of advance widths (specification only). * Quick computation of advance widths (specification only).
* *
* Copyright (C) 2008-2024 by * Copyright (C) 2008-2025 by
* David Turner, Robert Wilhelm, and Werner Lemberg. * David Turner, Robert Wilhelm, and Werner Lemberg.
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,

View File

@ -4,7 +4,7 @@
* *
* FreeType exact bbox computation (specification). * FreeType exact bbox computation (specification).
* *
* Copyright (C) 1996-2024 by * Copyright (C) 1996-2025 by
* David Turner, Robert Wilhelm, and Werner Lemberg. * David Turner, Robert Wilhelm, and Werner Lemberg.
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,

View File

@ -4,7 +4,7 @@
* *
* FreeType API for accessing BDF-specific strings (specification). * FreeType API for accessing BDF-specific strings (specification).
* *
* Copyright (C) 2002-2024 by * Copyright (C) 2002-2025 by
* David Turner, Robert Wilhelm, and Werner Lemberg. * David Turner, Robert Wilhelm, and Werner Lemberg.
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,

View File

@ -4,7 +4,7 @@
* *
* FreeType utility functions for bitmaps (specification). * FreeType utility functions for bitmaps (specification).
* *
* Copyright (C) 2004-2024 by * Copyright (C) 2004-2025 by
* David Turner, Robert Wilhelm, and Werner Lemberg. * David Turner, Robert Wilhelm, and Werner Lemberg.
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,

View File

@ -4,7 +4,7 @@
* *
* Bzip2-compressed stream support. * Bzip2-compressed stream support.
* *
* Copyright (C) 2010-2024 by * Copyright (C) 2010-2025 by
* Joel Klinghed. * Joel Klinghed.
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,

View File

@ -4,7 +4,7 @@
* *
* FreeType Cache subsystem (specification). * FreeType Cache subsystem (specification).
* *
* Copyright (C) 1996-2024 by * Copyright (C) 1996-2025 by
* David Turner, Robert Wilhelm, and Werner Lemberg. * David Turner, Robert Wilhelm, and Werner Lemberg.
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,

View File

@ -4,7 +4,7 @@
* *
* FreeType API for accessing CID font information (specification). * FreeType API for accessing CID font information (specification).
* *
* Copyright (C) 2007-2024 by * Copyright (C) 2007-2025 by
* Dereg Clegg and Michael Toftdal. * Dereg Clegg and Michael Toftdal.
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,

View File

@ -4,7 +4,7 @@
* *
* FreeType's glyph color management (specification). * FreeType's glyph color management (specification).
* *
* Copyright (C) 2018-2024 by * Copyright (C) 2018-2025 by
* David Turner, Robert Wilhelm, and Werner Lemberg. * David Turner, Robert Wilhelm, and Werner Lemberg.
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,
@ -317,6 +317,15 @@ FT_BEGIN_HEADER
* @description: * @description:
* The functions described here allow access of colored glyph layer data * The functions described here allow access of colored glyph layer data
* in OpenType's 'COLR' tables. * in OpenType's 'COLR' tables.
*
* Note that FreeType does *not* provide rendering in general of glyphs
* that use a 'COLR' table! While FreeType has very limited rendering
* support for 'COLR' v0 tables (without a possibility to change the
* color palette) via @FT_Render_Glyph, there is no such convenience
* code for 'COLR' v1 tables -- while it appears that v1 is simply an
* 'improved' version of v0, this is not the case: it is a completely
* different color font format, and you need a dedicated graphics
* library like Skia or Cairo to handle a v1 table's drawing commands.
*/ */
@ -359,7 +368,7 @@ FT_BEGIN_HEADER
* iteratively retrieve the colored glyph layers associated with the * iteratively retrieve the colored glyph layers associated with the
* current glyph slot. * current glyph slot.
* *
* https://docs.microsoft.com/en-us/typography/opentype/spec/colr * https://learn.microsoft.com/typography/opentype/spec/colr
* *
* The glyph layer data for a given glyph index, if present, provides an * The glyph layer data for a given glyph index, if present, provides an
* alternative, multi-color glyph representation: Instead of rendering * alternative, multi-color glyph representation: Instead of rendering
@ -1518,7 +1527,7 @@ FT_BEGIN_HEADER
* *
* @return: * @return:
* Value~1 if a clip box is found. If no clip box is found or an error * Value~1 if a clip box is found. If no clip box is found or an error
* occured, value~0 is returned. * occurred, value~0 is returned.
* *
* @note: * @note:
* To retrieve the clip box in font units, reset scale to units-per-em * To retrieve the clip box in font units, reset scale to units-per-em
@ -1646,7 +1655,7 @@ FT_BEGIN_HEADER
* *
* @return: * @return:
* Value~1 if everything is OK. Value~0 if no details can be found for * Value~1 if everything is OK. Value~0 if no details can be found for
* this paint or any other error occured. * this paint or any other error occurred.
* *
* @since: * @since:
* 2.13 * 2.13

View File

@ -4,7 +4,7 @@
* *
* FreeType API for controlling driver modules (specification only). * FreeType API for controlling driver modules (specification only).
* *
* Copyright (C) 2017-2024 by * Copyright (C) 2017-2025 by
* David Turner, Robert Wilhelm, and Werner Lemberg. * David Turner, Robert Wilhelm, and Werner Lemberg.
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,
@ -282,7 +282,7 @@ FT_BEGIN_HEADER
* minimize hinting techniques that were problematic with the extra * minimize hinting techniques that were problematic with the extra
* resolution of ClearType; see * resolution of ClearType; see
* http://rastertragedy.com/RTRCh4.htm#Sec1 and * http://rastertragedy.com/RTRCh4.htm#Sec1 and
* https://www.microsoft.com/typography/cleartype/truetypecleartype.aspx. * https://learn.microsoft.com/typography/cleartype/truetypecleartype.
* This technique is not to be confused with ClearType compatible widths. * This technique is not to be confused with ClearType compatible widths.
* ClearType backward compatibility has no direct impact on changing * ClearType backward compatibility has no direct impact on changing
* advance widths, but there might be an indirect impact on disabling * advance widths, but there might be an indirect impact on disabling
@ -784,7 +784,7 @@ FT_BEGIN_HEADER
* *
* Details on subpixel hinting and some of the necessary tweaks can be * Details on subpixel hinting and some of the necessary tweaks can be
* found in Greg Hitchcock's whitepaper at * found in Greg Hitchcock's whitepaper at
* 'https://www.microsoft.com/typography/cleartype/truetypecleartype.aspx'. * 'https://learn.microsoft.com/typography/cleartype/truetypecleartype'.
* Note that FreeType currently doesn't really 'subpixel hint' (6x1, 6x2, * Note that FreeType currently doesn't really 'subpixel hint' (6x1, 6x2,
* or 6x5 supersampling) like discussed in the paper. Depending on the * or 6x5 supersampling) like discussed in the paper. Depending on the
* chosen interpreter, it simply ignores instructions on vertical stems * chosen interpreter, it simply ignores instructions on vertical stems

View File

@ -4,7 +4,7 @@
* *
* FreeType error codes (specification). * FreeType error codes (specification).
* *
* Copyright (C) 2002-2024 by * Copyright (C) 2002-2025 by
* David Turner, Robert Wilhelm, and Werner Lemberg. * David Turner, Robert Wilhelm, and Werner Lemberg.
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,

View File

@ -4,7 +4,7 @@
* *
* FreeType error code handling (specification). * FreeType error code handling (specification).
* *
* Copyright (C) 1996-2024 by * Copyright (C) 1996-2025 by
* David Turner, Robert Wilhelm, and Werner Lemberg. * David Turner, Robert Wilhelm, and Werner Lemberg.
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,

View File

@ -4,7 +4,7 @@
* *
* Support functions for font formats. * Support functions for font formats.
* *
* Copyright (C) 2002-2024 by * Copyright (C) 2002-2025 by
* David Turner, Robert Wilhelm, and Werner Lemberg. * David Turner, Robert Wilhelm, and Werner Lemberg.
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,

View File

@ -4,7 +4,7 @@
* *
* Access of TrueType's 'gasp' table (specification). * Access of TrueType's 'gasp' table (specification).
* *
* Copyright (C) 2007-2024 by * Copyright (C) 2007-2025 by
* David Turner, Robert Wilhelm, and Werner Lemberg. * David Turner, Robert Wilhelm, and Werner Lemberg.
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,

View File

@ -4,7 +4,7 @@
* *
* FreeType convenience functions to handle glyphs (specification). * FreeType convenience functions to handle glyphs (specification).
* *
* Copyright (C) 1996-2024 by * Copyright (C) 1996-2025 by
* David Turner, Robert Wilhelm, and Werner Lemberg. * David Turner, Robert Wilhelm, and Werner Lemberg.
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,

View File

@ -4,7 +4,7 @@
* *
* FreeType API for validating TrueTypeGX/AAT tables (specification). * FreeType API for validating TrueTypeGX/AAT tables (specification).
* *
* Copyright (C) 2004-2024 by * Copyright (C) 2004-2025 by
* Masatake YAMATO, Redhat K.K, * Masatake YAMATO, Redhat K.K,
* David Turner, Robert Wilhelm, and Werner Lemberg. * David Turner, Robert Wilhelm, and Werner Lemberg.
* *

View File

@ -4,7 +4,7 @@
* *
* Gzip-compressed stream support. * Gzip-compressed stream support.
* *
* Copyright (C) 2002-2024 by * Copyright (C) 2002-2025 by
* David Turner, Robert Wilhelm, and Werner Lemberg. * David Turner, Robert Wilhelm, and Werner Lemberg.
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,

View File

@ -5,7 +5,7 @@
* FreeType glyph image formats and default raster interface * FreeType glyph image formats and default raster interface
* (specification). * (specification).
* *
* Copyright (C) 1996-2024 by * Copyright (C) 1996-2025 by
* David Turner, Robert Wilhelm, and Werner Lemberg. * David Turner, Robert Wilhelm, and Werner Lemberg.
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,
@ -267,6 +267,10 @@ FT_BEGIN_HEADER
* *logical* one. For example, if @FT_Pixel_Mode is set to * *logical* one. For example, if @FT_Pixel_Mode is set to
* `FT_PIXEL_MODE_LCD`, the logical width is a just a third of the * `FT_PIXEL_MODE_LCD`, the logical width is a just a third of the
* physical one. * physical one.
*
* An empty bitmap with a NULL `buffer` is valid, with `rows` and/or
* `pitch` also set to 0. Such bitmaps might be produced while rendering
* empty or degenerate outlines.
*/ */
typedef struct FT_Bitmap_ typedef struct FT_Bitmap_
{ {
@ -439,7 +443,7 @@ FT_BEGIN_HEADER
* rasterizer; see the `tags` field in @FT_Outline. * rasterizer; see the `tags` field in @FT_Outline.
* *
* Please refer to the description of the 'SCANTYPE' instruction in the * 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) * [OpenType specification](https://learn.microsoft.com/typography/opentype/spec/tt_instructions#scantype)
* how simple drop-outs, smart drop-outs, and stubs are defined. * how simple drop-outs, smart drop-outs, and stubs are defined.
*/ */
#define FT_OUTLINE_NONE 0x0 #define FT_OUTLINE_NONE 0x0

View File

@ -4,7 +4,7 @@
* *
* FreeType incremental loading (specification). * FreeType incremental loading (specification).
* *
* Copyright (C) 2002-2024 by * Copyright (C) 2002-2025 by
* David Turner, Robert Wilhelm, and Werner Lemberg. * David Turner, Robert Wilhelm, and Werner Lemberg.
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,

View File

@ -5,7 +5,7 @@
* FreeType API for color filtering of subpixel bitmap glyphs * FreeType API for color filtering of subpixel bitmap glyphs
* (specification). * (specification).
* *
* Copyright (C) 2006-2024 by * Copyright (C) 2006-2025 by
* David Turner, Robert Wilhelm, and Werner Lemberg. * David Turner, Robert Wilhelm, and Werner Lemberg.
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,

View File

@ -4,7 +4,7 @@
* *
* Generic list support for FreeType (specification). * Generic list support for FreeType (specification).
* *
* Copyright (C) 1996-2024 by * Copyright (C) 1996-2025 by
* David Turner, Robert Wilhelm, and Werner Lemberg. * David Turner, Robert Wilhelm, and Werner Lemberg.
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,

View File

@ -4,7 +4,7 @@
* *
* Additional debugging APIs. * Additional debugging APIs.
* *
* Copyright (C) 2020-2024 by * Copyright (C) 2020-2025 by
* David Turner, Robert Wilhelm, and Werner Lemberg. * David Turner, Robert Wilhelm, and Werner Lemberg.
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,

View File

@ -4,7 +4,7 @@
* *
* LZW-compressed stream support. * LZW-compressed stream support.
* *
* Copyright (C) 2004-2024 by * Copyright (C) 2004-2025 by
* David Turner, Robert Wilhelm, and Werner Lemberg. * David Turner, Robert Wilhelm, and Werner Lemberg.
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,

View File

@ -4,7 +4,7 @@
* *
* Additional Mac-specific API. * Additional Mac-specific API.
* *
* Copyright (C) 1996-2024 by * Copyright (C) 1996-2025 by
* Just van Rossum, David Turner, Robert Wilhelm, and Werner Lemberg. * Just van Rossum, David Turner, Robert Wilhelm, and Werner Lemberg.
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,

View File

@ -2,9 +2,9 @@
* *
* ftmm.h * ftmm.h
* *
* FreeType Multiple Master font interface (specification). * FreeType variation font interface (specification).
* *
* Copyright (C) 1996-2024 by * Copyright (C) 1996-2025 by
* David Turner, Robert Wilhelm, and Werner Lemberg. * David Turner, Robert Wilhelm, and Werner Lemberg.
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,
@ -37,24 +37,79 @@ FT_BEGIN_HEADER
* multiple_masters * multiple_masters
* *
* @title: * @title:
* Multiple Masters * OpenType Font Variations, TrueType GX, and Adobe MM Fonts
* *
* @abstract: * @abstract:
* How to manage Multiple Masters fonts. * How to manage variable fonts with multiple design axes.
* *
* @description: * @description:
* The following types and functions are used to manage Multiple Master * The following types and functions manage OpenType Font Variations,
* fonts, i.e., the selection of specific design instances by setting * Adobe Multiple Master (MM) fonts, and Apple TrueType GX fonts. These
* design axis coordinates. * formats have in common that they allow the selection of specific
* design instances by setting design coordinates for one or more axes
* like font weight or width.
* *
* Besides Adobe MM fonts, the interface supports Apple's TrueType GX and * For historical reasons there are two interfaces. The first, older one
* OpenType variation fonts. Some of the routines only work with Adobe * can be used with Adobe MM fonts only, and the second, newer one is a
* MM fonts, others will work with all three types. They are similar * unified interface that handles all three font formats. However, some
* enough that a consistent interface makes sense. * differences remain and are documented accordingly; in particular,
* Adobe MM fonts don't have named instances (see below).
* *
* For Adobe MM fonts, macro @FT_IS_SFNT returns false. For GX and * For Adobe MM fonts, macro @FT_IS_SFNT returns false. For TrueType GX
* OpenType variation fonts, it returns true. * and OpenType Font Variations, it returns true.
* *
* We use mostly the terminology of the OpenType standard. Here are some
* important technical terms.
*
* * A 'named instance' is a tuple of design coordinates that has a
* string ID (i.e., an index into the font's 'name' table) associated
* with it. The font can tell the user that, for example,
* [Weight=700,Width=110] is 'Bold'. Another name for 'named instance'
* is 'named style'.
*
* Adobe MM fonts don't have named instances.
*
* * The 'default instance' of a variation font is that instance for
* which the nth axis coordinate is equal to the nth default axis
* coordinate (i.e., `axis[n].def` as specified in the @FT_MM_Var
* structure), with~n covering all axes. In TrueType GX and OpenType
* Font Variations, the default instance is explicitly given. In Adobe
* MM fonts, the `WeightVector` entry as found in the font file is
* taken as the default instance.
*
* For TrueType GX and OpenType Font Variations, FreeType synthesizes
* a named instance for the default instance if the font does not
* contain such an entry.
*
* * 'Design coordinates' are the axis values found in a variation font
* file. Their meaning is specified by the font designer and the
* values are rather arbitrary.
*
* For example, the 'weight' axis in design coordinates might vary
* between 100 (thin) and 900 (heavy) in font~A, while font~B
* contains values between 400 (normal) and 800 (extra bold).
*
* * 'Normalized coordinates' are design coordinates mapped to a standard
* range; they are also called 'blend coordinates'.
*
* For TrueType GX and OpenType Font Variations, the range is [-1;1],
* with the minimum mapped to value~-1, the default mapped to
* value~0, and the maximum mapped to value~1, and all other
* coordinates mapped to intervening points. Please look up the
* [OpenType
* specification](https://learn.microsoft.com/en-us/typography/opentype/spec/otvaroverview)
* on how this mapping works in detail.
*
* For Adobe MM fonts, this standard range is [0;1], with the minimum
* mapped to value~0 and the maximum mapped to value~1, and all other
* coordinates mapped to intervening points. Please look up [Adobe
* TechNote
* #5015](https://adobe-type-tools.github.io/font-tech-notes/pdfs/5015.Type1_Supp.pdf)
* on how this mapping works in detail.
*
* Assuming that the two fonts in the previous example are OpenType
* Font Variations, both font~A's [100;900] and font~B's [400;800]
* coordinate ranges get mapped to [-1;1].
*/ */
@ -64,14 +119,14 @@ FT_BEGIN_HEADER
* T1_MAX_MM_XXX * T1_MAX_MM_XXX
* *
* @description: * @description:
* Multiple Masters limits as defined in their specifications. * Adobe MM font limits as defined in their specifications.
* *
* @values: * @values:
* T1_MAX_MM_AXIS :: * T1_MAX_MM_AXIS ::
* The maximum number of Multiple Masters axes. * The maximum number of Adobe MM font axes.
* *
* T1_MAX_MM_DESIGNS :: * T1_MAX_MM_DESIGNS ::
* The maximum number of Multiple Masters designs. * The maximum number of Adobe MM font designs.
* *
* T1_MAX_MM_MAP_POINTS :: * T1_MAX_MM_MAP_POINTS ::
* The maximum number of elements in a design map. * The maximum number of elements in a design map.
@ -88,11 +143,10 @@ FT_BEGIN_HEADER
* FT_MM_Axis * FT_MM_Axis
* *
* @description: * @description:
* A structure to model a given axis in design space for Multiple Masters * A structure to model a given axis in design space for Adobe MM fonts.
* fonts.
* *
* This structure can't be used for TrueType GX or OpenType variation * This structure can't be used with TrueType GX or OpenType Font
* fonts. * Variations.
* *
* @fields: * @fields:
* name :: * name ::
@ -119,17 +173,17 @@ FT_BEGIN_HEADER
* FT_Multi_Master * FT_Multi_Master
* *
* @description: * @description:
* A structure to model the axes and space of a Multiple Masters font. * A structure to model the axes and space of an Adobe MM font.
* *
* This structure can't be used for TrueType GX or OpenType variation * This structure can't be used with TrueType GX or OpenType Font
* fonts. * Variations.
* *
* @fields: * @fields:
* num_axis :: * num_axis ::
* Number of axes. Cannot exceed~4. * Number of axes. Cannot exceed~4.
* *
* num_designs :: * num_designs ::
* Number of designs; should be normally 2^num_axis even though the * Number of designs; should be normally `2^num_axis` even though the
* Type~1 specification strangely allows for intermediate designs to be * Type~1 specification strangely allows for intermediate designs to be
* present. This number cannot exceed~16. * present. This number cannot exceed~16.
* *
@ -151,13 +205,13 @@ FT_BEGIN_HEADER
* FT_Var_Axis * FT_Var_Axis
* *
* @description: * @description:
* A structure to model a given axis in design space for Multiple * A structure to model a given axis in design space for Adobe MM fonts,
* Masters, TrueType GX, and OpenType variation fonts. * TrueType GX, and OpenType Font Variations.
* *
* @fields: * @fields:
* name :: * name ::
* The axis's name. Not always meaningful for TrueType GX or OpenType * The axis's name. Not always meaningful for TrueType GX or OpenType
* variation fonts. * Font Variations.
* *
* minimum :: * minimum ::
* The axis's minimum design coordinate. * The axis's minimum design coordinate.
@ -171,17 +225,17 @@ FT_BEGIN_HEADER
* *
* tag :: * tag ::
* The axis's tag (the equivalent to 'name' for TrueType GX and * The axis's tag (the equivalent to 'name' for TrueType GX and
* OpenType variation fonts). FreeType provides default values for * OpenType Font Variations). FreeType provides default values for
* Adobe MM fonts if possible. * Adobe MM fonts if possible.
* *
* strid :: * strid ::
* The axis name entry in the font's 'name' table. This is another * The axis name entry in the font's 'name' table. This is another
* (and often better) version of the 'name' field for TrueType GX or * (and often better) version of the 'name' field for TrueType GX or
* OpenType variation fonts. Not meaningful for Adobe MM fonts. * OpenType Font Variations. Not meaningful for Adobe MM fonts.
* *
* @note: * @note:
* The fields `minimum`, `def`, and `maximum` are 16.16 fractional values * The fields `minimum`, `def`, and `maximum` are 16.16 fractional values
* for TrueType GX and OpenType variation fonts. For Adobe MM fonts, the * for TrueType GX and OpenType Font Variations. For Adobe MM fonts, the
* values are whole numbers (i.e., the fractional part is zero). * values are whole numbers (i.e., the fractional part is zero).
*/ */
typedef struct FT_Var_Axis_ typedef struct FT_Var_Axis_
@ -205,7 +259,7 @@ FT_BEGIN_HEADER
* *
* @description: * @description:
* A structure to model a named instance in a TrueType GX or OpenType * A structure to model a named instance in a TrueType GX or OpenType
* variation font. * Font Variations.
* *
* This structure can't be used for Adobe MM fonts. * This structure can't be used for Adobe MM fonts.
* *
@ -215,11 +269,11 @@ FT_BEGIN_HEADER
* entry for each axis. * entry for each axis.
* *
* strid :: * strid ::
* The entry in 'name' table identifying this instance. * An index into the 'name' table identifying this instance.
* *
* psid :: * psid ::
* The entry in 'name' table identifying a PostScript name for this * An index into the 'name' table identifying a PostScript name for
* instance. Value 0xFFFF indicates a missing entry. * this instance. Value 0xFFFF indicates a missing entry.
*/ */
typedef struct FT_Var_Named_Style_ typedef struct FT_Var_Named_Style_
{ {
@ -236,39 +290,33 @@ FT_BEGIN_HEADER
* FT_MM_Var * FT_MM_Var
* *
* @description: * @description:
* A structure to model the axes and space of an Adobe MM, TrueType GX, * A structure to model the axes and space of Adobe MM fonts, TrueType
* or OpenType variation font. * GX, or OpenType Font Variations.
* *
* Some fields are specific to one format and not to the others. * Some fields are specific to one format and not to the others.
* *
* @fields: * @fields:
* num_axis :: * num_axis ::
* The number of axes. The maximum value is~4 for Adobe MM fonts; no * The number of axes. The maximum value is~4 for Adobe MM fonts; no
* limit in TrueType GX or OpenType variation fonts. * limit in TrueType GX or OpenType Font Variations.
* *
* num_designs :: * num_designs ::
* The number of designs; should be normally 2^num_axis for Adobe MM * The number of designs; should be normally `2^num_axis` for Adobe MM
* fonts. Not meaningful for TrueType GX or OpenType variation fonts * fonts. Not meaningful for TrueType GX or OpenType Font Variations
* (where every glyph could have a different number of designs). * (where every glyph could have a different number of designs).
* *
* num_namedstyles :: * num_namedstyles ::
* The number of named styles; a 'named style' is a tuple of design * The number of named instances. For Adobe MM fonts, this value is
* coordinates that has a string ID (in the 'name' table) associated * always zero.
* with it. The font can tell the user that, for example,
* [Weight=1.5,Width=1.1] is 'Bold'. Another name for 'named style' is
* 'named instance'.
*
* For Adobe Multiple Masters fonts, this value is always zero because
* the format does not support named styles.
* *
* axis :: * axis ::
* An axis descriptor table. TrueType GX and OpenType variation fonts * An axis descriptor table. TrueType GX and OpenType Font Variations
* contain slightly more data than Adobe MM fonts. Memory management * contain slightly more data than Adobe MM fonts. Memory management
* of this pointer is done internally by FreeType. * of this pointer is done internally by FreeType.
* *
* namedstyle :: * namedstyle ::
* A named style (instance) table. Only meaningful for TrueType GX and * An array of named instances. Only meaningful for TrueType GX and
* OpenType variation fonts. Memory management of this pointer is done * OpenType Font Variations. Memory management of this pointer is done
* internally by FreeType. * internally by FreeType.
*/ */
typedef struct FT_MM_Var_ typedef struct FT_MM_Var_
@ -290,8 +338,8 @@ FT_BEGIN_HEADER
* @description: * @description:
* Retrieve a variation descriptor of a given Adobe MM font. * Retrieve a variation descriptor of a given Adobe MM font.
* *
* This function can't be used with TrueType GX or OpenType variation * This function can't be used with TrueType GX or OpenType Font
* fonts. * Variations.
* *
* @input: * @input:
* face :: * face ::
@ -299,7 +347,7 @@ FT_BEGIN_HEADER
* *
* @output: * @output:
* amaster :: * amaster ::
* The Multiple Masters descriptor. * The Adobe MM font's variation descriptor.
* *
* @return: * @return:
* FreeType error code. 0~means success. * FreeType error code. 0~means success.
@ -366,8 +414,8 @@ FT_BEGIN_HEADER
* For Adobe MM fonts, choose an interpolated font design through design * For Adobe MM fonts, choose an interpolated font design through design
* coordinates. * coordinates.
* *
* This function can't be used with TrueType GX or OpenType variation * This function can't be used with TrueType GX or OpenType Font
* fonts. * Variations.
* *
* @inout: * @inout:
* face :: * face ::
@ -391,8 +439,8 @@ FT_BEGIN_HEADER
* *
* [Since 2.9] If `num_coords` is larger than zero, this function sets * [Since 2.9] If `num_coords` is larger than zero, this function sets
* the @FT_FACE_FLAG_VARIATION bit in @FT_Face's `face_flags` field * the @FT_FACE_FLAG_VARIATION bit in @FT_Face's `face_flags` field
* (i.e., @FT_IS_VARIATION will return true). If `num_coords` is zero, * (i.e., @FT_IS_VARIATION returns true). If `num_coords` is zero, this
* this bit flag gets unset. * bit flag gets unset.
*/ */
FT_EXPORT( FT_Error ) FT_EXPORT( FT_Error )
FT_Set_MM_Design_Coordinates( FT_Face face, FT_Set_MM_Design_Coordinates( FT_Face face,
@ -428,7 +476,7 @@ FT_BEGIN_HEADER
* *
* @note: * @note:
* The design coordinates are 16.16 fractional values for TrueType GX and * The design coordinates are 16.16 fractional values for TrueType GX and
* OpenType variation fonts. For Adobe MM fonts, the values are supposed * OpenType Font Variations. For Adobe MM fonts, the values are supposed
* to be whole numbers (i.e., the fractional part is zero). * to be whole numbers (i.e., the fractional part is zero).
* *
* [Since 2.8.1] To reset all axes to the default values, call the * [Since 2.8.1] To reset all axes to the default values, call the
@ -438,8 +486,14 @@ FT_BEGIN_HEADER
* *
* [Since 2.9] If `num_coords` is larger than zero, this function sets * [Since 2.9] If `num_coords` is larger than zero, this function sets
* the @FT_FACE_FLAG_VARIATION bit in @FT_Face's `face_flags` field * the @FT_FACE_FLAG_VARIATION bit in @FT_Face's `face_flags` field
* (i.e., @FT_IS_VARIATION will return true). If `num_coords` is zero, * (i.e., @FT_IS_VARIATION returns true). If `num_coords` is zero, this
* this bit flag gets unset. * bit flag gets unset.
*
* [Since 2.14] This function also sets the @FT_FACE_FLAG_VARIATION bit
* in @FT_Face's `face_flags` field (i.e., @FT_IS_VARIATION returns
* true) if any of the provided coordinates is different from the face's
* default value for the corresponding axis, that is, the set up face is
* not at its default position.
*/ */
FT_EXPORT( FT_Error ) FT_EXPORT( FT_Error )
FT_Set_Var_Design_Coordinates( FT_Face face, FT_Set_Var_Design_Coordinates( FT_Face face,
@ -468,14 +522,14 @@ FT_BEGIN_HEADER
* *
* @output: * @output:
* coords :: * coords ::
* The design coordinates array. * The design coordinates array, which must be allocated by the user.
* *
* @return: * @return:
* FreeType error code. 0~means success. * FreeType error code. 0~means success.
* *
* @note: * @note:
* The design coordinates are 16.16 fractional values for TrueType GX and * The design coordinates are 16.16 fractional values for TrueType GX and
* OpenType variation fonts. For Adobe MM fonts, the values are whole * OpenType Font Variations. For Adobe MM fonts, the values are whole
* numbers (i.e., the fractional part is zero). * numbers (i.e., the fractional part is zero).
* *
* @since: * @since:
@ -493,8 +547,7 @@ FT_BEGIN_HEADER
* FT_Set_MM_Blend_Coordinates * FT_Set_MM_Blend_Coordinates
* *
* @description: * @description:
* Choose an interpolated font design through normalized blend * Choose an interpolated font design through normalized coordinates.
* coordinates.
* *
* This function works with all supported variation formats. * This function works with all supported variation formats.
* *
@ -509,9 +562,10 @@ FT_BEGIN_HEADER
* the number of axes, use default values for the remaining axes. * the number of axes, use default values for the remaining axes.
* *
* coords :: * coords ::
* The design coordinates array. Each element is a 16.16 fractional * The normalized coordinates array. Each element is a 16.16
* value and must be between 0 and 1.0 for Adobe MM fonts, and between * fractional value and must be between 0 and 1.0 for Adobe MM fonts,
* -1.0 and 1.0 for TrueType GX and OpenType variation fonts. * and between -1.0 and 1.0 for TrueType GX and OpenType Font
* Variations.
* *
* @return: * @return:
* FreeType error code. 0~means success. * FreeType error code. 0~means success.
@ -524,8 +578,14 @@ FT_BEGIN_HEADER
* *
* [Since 2.9] If `num_coords` is larger than zero, this function sets * [Since 2.9] If `num_coords` is larger than zero, this function sets
* the @FT_FACE_FLAG_VARIATION bit in @FT_Face's `face_flags` field * the @FT_FACE_FLAG_VARIATION bit in @FT_Face's `face_flags` field
* (i.e., @FT_IS_VARIATION will return true). If `num_coords` is zero, * (i.e., @FT_IS_VARIATION returns true). If `num_coords` is zero, this
* this bit flag gets unset. * bit flag gets unset.
*
* [Since 2.14] This function also sets the @FT_FACE_FLAG_VARIATION bit
* in @FT_Face's `face_flags` field (i.e., @FT_IS_VARIATION returns
* true) if any of the provided coordinates is different from the face's
* default value for the corresponding axis, that is, the set up face is
* not at its default position.
*/ */
FT_EXPORT( FT_Error ) FT_EXPORT( FT_Error )
FT_Set_MM_Blend_Coordinates( FT_Face face, FT_Set_MM_Blend_Coordinates( FT_Face face,
@ -539,8 +599,8 @@ FT_BEGIN_HEADER
* FT_Get_MM_Blend_Coordinates * FT_Get_MM_Blend_Coordinates
* *
* @description: * @description:
* Get the normalized blend coordinates of the currently selected * Get the normalized coordinates of the currently selected interpolated
* interpolated font. * font.
* *
* This function works with all supported variation formats. * This function works with all supported variation formats.
* *
@ -549,14 +609,14 @@ FT_BEGIN_HEADER
* A handle to the source face. * A handle to the source face.
* *
* num_coords :: * num_coords ::
* The number of normalized blend coordinates to retrieve. If it is * The number of normalized coordinates to retrieve. If it is larger
* larger than the number of axes, set the excess values to~0.5 for * than the number of axes, set the excess values to~0.5 for Adobe MM
* Adobe MM fonts, and to~0 for TrueType GX and OpenType variation * fonts, and to~0 for TrueType GX and OpenType Font Variations.
* fonts.
* *
* @output: * @output:
* coords :: * coords ::
* The normalized blend coordinates array (as 16.16 fractional values). * The normalized coordinates array (as 16.16 fractional values), which
* must be allocated by the user.
* *
* @return: * @return:
* FreeType error code. 0~means success. * FreeType error code. 0~means success.
@ -610,8 +670,8 @@ FT_BEGIN_HEADER
* For Adobe MM fonts, choose an interpolated font design by directly * For Adobe MM fonts, choose an interpolated font design by directly
* setting the weight vector. * setting the weight vector.
* *
* This function can't be used with TrueType GX or OpenType variation * This function can't be used with TrueType GX or OpenType Font
* fonts. * Variations.
* *
* @inout: * @inout:
* face :: * face ::
@ -630,16 +690,16 @@ FT_BEGIN_HEADER
* FreeType error code. 0~means success. * FreeType error code. 0~means success.
* *
* @note: * @note:
* Adobe Multiple Master fonts limit the number of designs, and thus the * Adobe MM fonts limit the number of designs, and thus the length of the
* length of the weight vector to 16~elements. * weight vector, to 16~elements.
* *
* If `len` is larger than zero, this function sets the * If `len` is larger than zero, this function sets the
* @FT_FACE_FLAG_VARIATION bit in @FT_Face's `face_flags` field (i.e., * @FT_FACE_FLAG_VARIATION bit in @FT_Face's `face_flags` field (i.e.,
* @FT_IS_VARIATION will return true). If `len` is zero, this bit flag * @FT_IS_VARIATION returns true). If `len` is zero, this bit flag is
* is unset and the weight vector array is reset to the default values. * unset and the weight vector array is reset to the default values.
* *
* The Adobe documentation also states that the values in the * The Adobe documentation also states that the values in the
* WeightVector array must total 1.0 +/-~0.001. In practice this does * `WeightVector` array must total 1.0 +/-~0.001. In practice this does
* not seem to be enforced, so is not enforced here, either. * not seem to be enforced, so is not enforced here, either.
* *
* @since: * @since:
@ -659,8 +719,8 @@ FT_BEGIN_HEADER
* @description: * @description:
* For Adobe MM fonts, retrieve the current weight vector of the font. * For Adobe MM fonts, retrieve the current weight vector of the font.
* *
* This function can't be used with TrueType GX or OpenType variation * This function can't be used with TrueType GX or OpenType Font
* fonts. * Variations.
* *
* @inout: * @inout:
* face :: * face ::
@ -677,14 +737,14 @@ FT_BEGIN_HEADER
* *
* @output: * @output:
* weightvector :: * weightvector ::
* An array to be filled. * An array to be filled; it must be allocated by the user.
* *
* @return: * @return:
* FreeType error code. 0~means success. * FreeType error code. 0~means success.
* *
* @note: * @note:
* Adobe Multiple Master fonts limit the number of designs, and thus the * Adobe MM fonts limit the number of designs, and thus the length of the
* length of the WeightVector to~16. * weight vector, to~16 elements.
* *
* @since: * @since:
* 2.10 * 2.10
@ -760,8 +820,8 @@ FT_BEGIN_HEADER
* A handle to the source face. * A handle to the source face.
* *
* instance_index :: * instance_index ::
* The index of the requested instance, starting with value 1. If set * The index of the requested instance, starting with value~1. If set
* to value 0, FreeType switches to font access without a named * to value~0, FreeType switches to font access without a named
* instance. * instance.
* *
* @return: * @return:
@ -771,11 +831,11 @@ FT_BEGIN_HEADER
* The function uses the value of `instance_index` to set bits 16-30 of * The function uses the value of `instance_index` to set bits 16-30 of
* the face's `face_index` field. It also resets any variation applied * the face's `face_index` field. It also resets any variation applied
* to the font, and the @FT_FACE_FLAG_VARIATION bit of the face's * to the font, and the @FT_FACE_FLAG_VARIATION bit of the face's
* `face_flags` field gets reset to zero (i.e., @FT_IS_VARIATION will * `face_flags` field gets reset to zero (i.e., @FT_IS_VARIATION returns
* return false). * false).
* *
* For Adobe MM fonts (which don't have named instances) this function * For Adobe MM fonts, this function resets the current face to the
* simply resets the current face to the default instance. * default instance.
* *
* @since: * @since:
* 2.9 * 2.9
@ -794,10 +854,6 @@ FT_BEGIN_HEADER
* Retrieve the index of the default named instance, to be used with * Retrieve the index of the default named instance, to be used with
* @FT_Set_Named_Instance. * @FT_Set_Named_Instance.
* *
* The default instance of a variation font is that instance for which
* the nth axis coordinate is equal to `axis[n].def` (as specified in the
* @FT_MM_Var structure), with~n covering all axes.
*
* FreeType synthesizes a named instance for the default instance if the * FreeType synthesizes a named instance for the default instance if the
* font does not contain such an entry. * font does not contain such an entry.
* *
@ -813,8 +869,8 @@ FT_BEGIN_HEADER
* FreeType error code. 0~means success. * FreeType error code. 0~means success.
* *
* @note: * @note:
* For Adobe MM fonts (which don't have named instances) this function * For Adobe MM fonts, this function always returns zero for
* always returns zero for `instance_index`. * `instance_index`.
* *
* @since: * @since:
* 2.13.1 * 2.13.1

View File

@ -4,7 +4,7 @@
* *
* FreeType modules public interface (specification). * FreeType modules public interface (specification).
* *
* Copyright (C) 1996-2024 by * Copyright (C) 1996-2025 by
* David Turner, Robert Wilhelm, and Werner Lemberg. * David Turner, Robert Wilhelm, and Werner Lemberg.
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,

View File

@ -4,7 +4,7 @@
* *
* FreeType module error offsets (specification). * FreeType module error offsets (specification).
* *
* Copyright (C) 2001-2024 by * Copyright (C) 2001-2025 by
* David Turner, Robert Wilhelm, and Werner Lemberg. * David Turner, Robert Wilhelm, and Werner Lemberg.
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,

View File

@ -4,7 +4,7 @@
* *
* FreeType API for validating OpenType tables (specification). * FreeType API for validating OpenType tables (specification).
* *
* Copyright (C) 2004-2024 by * Copyright (C) 2004-2025 by
* David Turner, Robert Wilhelm, and Werner Lemberg. * David Turner, Robert Wilhelm, and Werner Lemberg.
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,

View File

@ -5,7 +5,7 @@
* Support for the FT_Outline type used to store glyph shapes of * Support for the FT_Outline type used to store glyph shapes of
* most scalable font formats (specification). * most scalable font formats (specification).
* *
* Copyright (C) 1996-2024 by * Copyright (C) 1996-2025 by
* David Turner, Robert Wilhelm, and Werner Lemberg. * David Turner, Robert Wilhelm, and Werner Lemberg.
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,

View File

@ -4,7 +4,7 @@
* *
* FreeType API for possible FT_Parameter tags (specification only). * FreeType API for possible FT_Parameter tags (specification only).
* *
* Copyright (C) 2017-2024 by * Copyright (C) 2017-2025 by
* David Turner, Robert Wilhelm, and Werner Lemberg. * David Turner, Robert Wilhelm, and Werner Lemberg.
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,

View File

@ -4,7 +4,7 @@
* *
* FreeType API for accessing PFR-specific data (specification only). * FreeType API for accessing PFR-specific data (specification only).
* *
* Copyright (C) 2002-2024 by * Copyright (C) 2002-2025 by
* David Turner, Robert Wilhelm, and Werner Lemberg. * David Turner, Robert Wilhelm, and Werner Lemberg.
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,

View File

@ -4,7 +4,7 @@
* *
* FreeType renderer modules public interface (specification). * FreeType renderer modules public interface (specification).
* *
* Copyright (C) 1996-2024 by * Copyright (C) 1996-2025 by
* David Turner, Robert Wilhelm, and Werner Lemberg. * David Turner, Robert Wilhelm, and Werner Lemberg.
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,

View File

@ -4,7 +4,7 @@
* *
* FreeType size objects management (specification). * FreeType size objects management (specification).
* *
* Copyright (C) 1996-2024 by * Copyright (C) 1996-2025 by
* David Turner, Robert Wilhelm, and Werner Lemberg. * David Turner, Robert Wilhelm, and Werner Lemberg.
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,

View File

@ -7,7 +7,7 @@
* *
* This is _not_ used to retrieve glyph names! * This is _not_ used to retrieve glyph names!
* *
* Copyright (C) 1996-2024 by * Copyright (C) 1996-2025 by
* David Turner, Robert Wilhelm, and Werner Lemberg. * David Turner, Robert Wilhelm, and Werner Lemberg.
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,

View File

@ -4,7 +4,7 @@
* *
* FreeType path stroker (specification). * FreeType path stroker (specification).
* *
* Copyright (C) 2002-2024 by * Copyright (C) 2002-2025 by
* David Turner, Robert Wilhelm, and Werner Lemberg. * David Turner, Robert Wilhelm, and Werner Lemberg.
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,

View File

@ -5,7 +5,7 @@
* FreeType synthesizing code for emboldening and slanting * FreeType synthesizing code for emboldening and slanting
* (specification). * (specification).
* *
* Copyright (C) 2000-2024 by * Copyright (C) 2000-2025 by
* David Turner, Robert Wilhelm, and Werner Lemberg. * David Turner, Robert Wilhelm, and Werner Lemberg.
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,

View File

@ -4,7 +4,7 @@
* *
* FreeType low-level system interface definition (specification). * FreeType low-level system interface definition (specification).
* *
* Copyright (C) 1996-2024 by * Copyright (C) 1996-2025 by
* David Turner, Robert Wilhelm, and Werner Lemberg. * David Turner, Robert Wilhelm, and Werner Lemberg.
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,

View File

@ -4,7 +4,7 @@
* *
* FreeType trigonometric functions (specification). * FreeType trigonometric functions (specification).
* *
* Copyright (C) 2001-2024 by * Copyright (C) 2001-2025 by
* David Turner, Robert Wilhelm, and Werner Lemberg. * David Turner, Robert Wilhelm, and Werner Lemberg.
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,

View File

@ -4,7 +4,7 @@
* *
* FreeType simple types definitions (specification only). * FreeType simple types definitions (specification only).
* *
* Copyright (C) 1996-2024 by * Copyright (C) 1996-2025 by
* David Turner, Robert Wilhelm, and Werner Lemberg. * David Turner, Robert Wilhelm, and Werner Lemberg.
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,

View File

@ -4,7 +4,7 @@
* *
* FreeType API for accessing Windows fnt-specific data. * FreeType API for accessing Windows fnt-specific data.
* *
* Copyright (C) 2003-2024 by * Copyright (C) 2003-2025 by
* David Turner, Robert Wilhelm, and Werner Lemberg. * David Turner, Robert Wilhelm, and Werner Lemberg.
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,
@ -93,8 +93,7 @@ FT_BEGIN_HEADER
* second default codepage that most international versions of Windows * second default codepage that most international versions of Windows
* have. It is one of the OEM codepages from * have. It is one of the OEM codepages from
* *
* https://docs.microsoft.com/en-us/windows/desktop/intl/code-page-identifiers * https://learn.microsoft.com/windows/win32/intl/code-page-identifiers ,
* ,
* *
* and is used for the 'DOS boxes', to support legacy applications. A * and is used for the 'DOS boxes', to support legacy applications. A
* German Windows version for example usually uses ANSI codepage 1252 * German Windows version for example usually uses ANSI codepage 1252

View File

@ -1,81 +0,0 @@
version = 1
[[annotations]]
path = ["autohint.h", "cfftypes.h", "ftcalc.h", "ftdebug.h", "ftdrv.h",
"ftobjs.h", "ftstream.h", "psaux.h", "sfnt.h", "t1types.h",
"tttypes.h", "wofftypes.h", "ftmemory.h"]
comment = "Copyright continuation line ignored by reuse for lack of word Copyright at start."
precedence = "override"
SPDX-FileCopyrightText = "Copyright (C) 1996-2023 by David Turner, Robert Wilhelm, and Werner Lemberg."
SPDX-License-Identifier = "FTL OR GPL-2.0-only"
[[annotations]]
path = "pshints.h"
comment = "Copyright continuation line ignored by reuse for lack of word Copyright at start."
precedence = "override"
SPDX-FileCopyrightText = "Copyright (C) 2001-2023 by David Turner, Robert Wilhelm, and Werner Lemberg."
SPDX-License-Identifier = "FTL OR GPL-2.0-only"
[[annotations]]
path = ["ftgloadr.h", "fttrace.h"]
comment = "Copyright continuation line ignored by reuse for lack of word Copyright at start."
precedence = "override"
SPDX-FileCopyrightText = "Copyright (C) 2002-2023 by David Turner, Robert Wilhelm, and Werner Lemberg."
SPDX-License-Identifier = "FTL OR GPL-2.0-only"
[[annotations]]
path = "ftserv.h"
comment = "Copyright continuation line ignored by reuse for lack of word Copyright at start."
precedence = "override"
SPDX-FileCopyrightText = "Copyright (C) 2003-2023 by David Turner, Robert Wilhelm, and Werner Lemberg."
SPDX-License-Identifier = "FTL OR GPL-2.0-only"
[[annotations]]
path = "ftvalid.h"
comment = "Copyright continuation line ignored by reuse for lack of word Copyright at start."
precedence = "override"
SPDX-FileCopyrightText = "Copyright (C) 2004-2023 by David Turner, Robert Wilhelm, and Werner Lemberg."
SPDX-License-Identifier = "FTL OR GPL-2.0-only"
[[annotations]]
path = ["cffotypes.h", "ftpsprop.h"]
comment = "Copyright continuation line ignored by reuse for lack of word Copyright at start."
precedence = "override"
SPDX-FileCopyrightText = "Copyright (C) 2017-2023 by David Turner, Robert Wilhelm, and Werner Lemberg."
SPDX-License-Identifier = "FTL OR GPL-2.0-only"
[[annotations]]
path = "compiler-macros.h"
comment = "Copyright continuation line ignored by reuse for lack of word Copyright at start."
precedence = "override"
SPDX-FileCopyrightText = "Copyright (C) 2020-2023 by David Turner, Robert Wilhelm, and Werner Lemberg."
SPDX-License-Identifier = "FTL OR GPL-2.0-only"
[[annotations]]
path = "svginterface.h"
comment = "Copyright continuation line ignored by reuse for lack of word Copyright at start."
precedence = "override"
SPDX-FileCopyrightText = "Copyright (C) 2022-2023 by David Turner, Robert Wilhelm, Werner Lemberg , and Moazin Khatti."
SPDX-License-Identifier = "FTL OR GPL-2.0-only"
[[annotations]]
path = "ftmmtypes.h"
comment = "Copyright continuation line ignored by reuse for lack of word Copyright at start."
precedence = "override"
SPDX-FileCopyrightText = "Copyright (C) 2022-2023 by David Turner, Robert Wilhelm, Werner Lemberg, George Williams, and Dominik Röttsches."
SPDX-License-Identifier = "FTL OR GPL-2.0-only"
[[annotations]]
path = "ftrfork.h"
comment = "Copyright continuation line ignored by reuse for lack of word Copyright at start."
precedence = "override"
SPDX-FileCopyrightText = "Copyright (C) 2004-2023 by Masatake YAMATO and Redhat K.K."
SPDX-License-Identifier = "FTL OR GPL-2.0-only"
[[annotations]]
path = "fthash.h"
comment = "Copyright continuation line ignored by reuse for lack of word Copyright at start."
precedence = "override"
SPDX-FileCopyrightText = ["Copyright 2000 Computing Research Labs, New Mexico State University.",
"Copyright 2001-2015 Francesco Zappa Nardelli"]
SPDX-License-Identifier = "MIT"

View File

@ -4,7 +4,7 @@
* *
* High-level 'autohint' module-specific interface (specification). * High-level 'autohint' module-specific interface (specification).
* *
* Copyright (C) 1996-2024 by * Copyright (C) 1996-2025 by
* David Turner, Robert Wilhelm, and Werner Lemberg. * David Turner, Robert Wilhelm, and Werner Lemberg.
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,

View File

@ -4,7 +4,7 @@
* *
* Basic OpenType/CFF object type definitions (specification). * Basic OpenType/CFF object type definitions (specification).
* *
* Copyright (C) 2017-2024 by * Copyright (C) 2017-2025 by
* David Turner, Robert Wilhelm, and Werner Lemberg. * David Turner, Robert Wilhelm, and Werner Lemberg.
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,

View File

@ -5,7 +5,7 @@
* Basic OpenType/CFF type definitions and interface (specification * Basic OpenType/CFF type definitions and interface (specification
* only). * only).
* *
* Copyright (C) 1996-2024 by * Copyright (C) 1996-2025 by
* David Turner, Robert Wilhelm, and Werner Lemberg. * David Turner, Robert Wilhelm, and Werner Lemberg.
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,

View File

@ -4,7 +4,7 @@
* *
* Compiler-specific macro definitions used internally by FreeType. * Compiler-specific macro definitions used internally by FreeType.
* *
* Copyright (C) 2020-2024 by * Copyright (C) 2020-2025 by
* David Turner, Robert Wilhelm, and Werner Lemberg. * David Turner, Robert Wilhelm, and Werner Lemberg.
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,
@ -128,8 +128,8 @@ FT_BEGIN_HEADER
* before a function declaration. * before a function declaration.
*/ */
/* Visual C, mingw */ /* Visual C, MinGW, Cygwin */
#if defined( _WIN32 ) #if defined( _WIN32 ) || defined( __CYGWIN__ )
#define FT_INTERNAL_FUNCTION_ATTRIBUTE /* empty */ #define FT_INTERNAL_FUNCTION_ATTRIBUTE /* empty */
/* gcc, clang */ /* gcc, clang */

View File

@ -4,7 +4,7 @@
* *
* Arithmetic computations (specification). * Arithmetic computations (specification).
* *
* Copyright (C) 1996-2024 by * Copyright (C) 1996-2025 by
* David Turner, Robert Wilhelm, and Werner Lemberg. * David Turner, Robert Wilhelm, and Werner Lemberg.
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,
@ -27,17 +27,87 @@
FT_BEGIN_HEADER FT_BEGIN_HEADER
/*
* The following macros have two purposes.
*
* - Tag places where overflow is expected and harmless.
*
* - Avoid run-time undefined behavior sanitizer errors.
*
* Use with care!
*/
#define ADD_INT( a, b ) \
(FT_Int)( (FT_UInt)(a) + (FT_UInt)(b) )
#define SUB_INT( a, b ) \
(FT_Int)( (FT_UInt)(a) - (FT_UInt)(b) )
#define MUL_INT( a, b ) \
(FT_Int)( (FT_UInt)(a) * (FT_UInt)(b) )
#define NEG_INT( a ) \
(FT_Int)( (FT_UInt)0 - (FT_UInt)(a) )
#define ADD_LONG( a, b ) \
(FT_Long)( (FT_ULong)(a) + (FT_ULong)(b) )
#define SUB_LONG( a, b ) \
(FT_Long)( (FT_ULong)(a) - (FT_ULong)(b) )
#define MUL_LONG( a, b ) \
(FT_Long)( (FT_ULong)(a) * (FT_ULong)(b) )
#define NEG_LONG( a ) \
(FT_Long)( (FT_ULong)0 - (FT_ULong)(a) )
#define ADD_INT32( a, b ) \
(FT_Int32)( (FT_UInt32)(a) + (FT_UInt32)(b) )
#define SUB_INT32( a, b ) \
(FT_Int32)( (FT_UInt32)(a) - (FT_UInt32)(b) )
#define MUL_INT32( a, b ) \
(FT_Int32)( (FT_UInt32)(a) * (FT_UInt32)(b) )
#define NEG_INT32( a ) \
(FT_Int32)( (FT_UInt32)0 - (FT_UInt32)(a) )
#ifdef FT_INT64
#define ADD_INT64( a, b ) \
(FT_Int64)( (FT_UInt64)(a) + (FT_UInt64)(b) )
#define SUB_INT64( a, b ) \
(FT_Int64)( (FT_UInt64)(a) - (FT_UInt64)(b) )
#define MUL_INT64( a, b ) \
(FT_Int64)( (FT_UInt64)(a) * (FT_UInt64)(b) )
#define NEG_INT64( a ) \
(FT_Int64)( (FT_UInt64)0 - (FT_UInt64)(a) )
#endif /* FT_INT64 */
/************************************************************************** /**************************************************************************
* *
* FT_MulDiv() and FT_MulFix() are declared in freetype.h. * FT_MulDiv() and FT_MulFix() are declared in freetype.h.
* *
*/ */
#ifndef FT_CONFIG_OPTION_NO_ASSEMBLER #ifdef FT_CONFIG_OPTION_INLINE_MULFIX
/* Provide assembler fragments for performance-critical functions. */
/* These must be defined `static __inline__' with GCC. */
#if defined( __CC_ARM ) || defined( __ARMCC__ ) /* RVCT */ #ifdef FT_INT64
static inline FT_Long
FT_MulFix_64( FT_Long a,
FT_Long b )
{
FT_Int64 ab = MUL_INT64( a, b );
ab = ADD_INT64( ab, 0x8000 + ( ab >> 63 ) ); /* rounding phase */
return (FT_Long)( ab >> 16 );
}
#define FT_MulFix( a, b ) FT_MulFix_64( a, b )
#elif !defined( FT_CONFIG_OPTION_NO_ASSEMBLER )
/* Provide 32-bit assembler fragments for optimized FT_MulFix. */
/* These must be defined `static __inline__' or similar. */
#if defined( __arm__ ) && \
( defined( __thumb2__ ) || !defined( __thumb__ ) )
#define FT_MULFIX_ASSEMBLER FT_MulFix_arm #define FT_MULFIX_ASSEMBLER FT_MulFix_arm
@ -49,6 +119,7 @@ FT_BEGIN_HEADER
{ {
FT_Int32 t, t2; FT_Int32 t, t2;
#if defined( __CC_ARM ) || defined( __ARMCC__ ) /* RVCT */
__asm __asm
{ {
@ -60,28 +131,8 @@ FT_BEGIN_HEADER
mov a, t2, lsr #16 /* a = t2 >> 16 */ mov a, t2, lsr #16 /* a = t2 >> 16 */
orr a, a, t, lsl #16 /* a |= t << 16 */ orr a, a, t, lsl #16 /* a |= t << 16 */
} }
return a;
}
#endif /* __CC_ARM || __ARMCC__ */
#ifdef __GNUC__
#if defined( __arm__ ) && \
( !defined( __thumb__ ) || defined( __thumb2__ ) ) && \
!( defined( __CC_ARM ) || defined( __ARMCC__ ) )
#define FT_MULFIX_ASSEMBLER FT_MulFix_arm
/* documentation is in freetype.h */
static __inline__ FT_Int32
FT_MulFix_arm( FT_Int32 a,
FT_Int32 b )
{
FT_Int32 t, t2;
#elif defined( __GNUC__ )
__asm__ __volatile__ ( __asm__ __volatile__ (
"smull %1, %2, %4, %3\n\t" /* (lo=%1,hi=%2) = a*b */ "smull %1, %2, %4, %3\n\t" /* (lo=%1,hi=%2) = a*b */
@ -98,26 +149,25 @@ FT_BEGIN_HEADER
: "=r"(a), "=&r"(t2), "=&r"(t) : "=r"(a), "=&r"(t2), "=&r"(t)
: "r"(a), "r"(b) : "r"(a), "r"(b)
: "cc" ); : "cc" );
#endif
return a; return a;
} }
#endif /* __arm__ && */ #elif defined( __i386__ ) || defined( _M_IX86 )
/* ( __thumb2__ || !__thumb__ ) && */
/* !( __CC_ARM || __ARMCC__ ) */
#if defined( __i386__ )
#define FT_MULFIX_ASSEMBLER FT_MulFix_i386 #define FT_MULFIX_ASSEMBLER FT_MulFix_i386
/* documentation is in freetype.h */ /* documentation is in freetype.h */
static __inline__ FT_Int32 static __inline FT_Int32
FT_MulFix_i386( FT_Int32 a, FT_MulFix_i386( FT_Int32 a,
FT_Int32 b ) FT_Int32 b )
{ {
FT_Int32 result; FT_Int32 result;
#if defined( __GNUC__ )
__asm__ __volatile__ ( __asm__ __volatile__ (
"imul %%edx\n" "imul %%edx\n"
@ -132,27 +182,8 @@ FT_BEGIN_HEADER
: "=a"(result), "=d"(b) : "=a"(result), "=d"(b)
: "a"(a), "d"(b) : "a"(a), "d"(b)
: "%ecx", "cc" ); : "%ecx", "cc" );
return result;
}
#endif /* i386 */ #elif defined( _MSC_VER )
#endif /* __GNUC__ */
#ifdef _MSC_VER /* Visual C++ */
#ifdef _M_IX86
#define FT_MULFIX_ASSEMBLER FT_MulFix_i386
/* documentation is in freetype.h */
static __inline FT_Int32
FT_MulFix_i386( FT_Int32 a,
FT_Int32 b )
{
FT_Int32 result;
__asm __asm
{ {
@ -169,81 +200,21 @@ FT_BEGIN_HEADER
add eax, edx add eax, edx
mov result, eax mov result, eax
} }
#endif
return result; return result;
} }
#endif /* _M_IX86 */ #endif /* __i386__ || _M_IX86 */
#endif /* _MSC_VER */
#if defined( __GNUC__ ) && defined( __x86_64__ )
#define FT_MULFIX_ASSEMBLER FT_MulFix_x86_64
static __inline__ FT_Int32
FT_MulFix_x86_64( FT_Int32 a,
FT_Int32 b )
{
/* Temporarily disable the warning that C90 doesn't support */
/* `long long'. */
#if __GNUC__ > 4 || ( __GNUC__ == 4 && __GNUC_MINOR__ >= 6 )
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wlong-long"
#endif
#if 1
/* Technically not an assembly fragment, but GCC does a really good */
/* job at inlining it and generating good machine code for it. */
long long ret, tmp;
ret = (long long)a * b;
tmp = ret >> 63;
ret += 0x8000 + tmp;
return (FT_Int32)( ret >> 16 );
#else
/* For some reason, GCC 4.6 on Ubuntu 12.04 generates invalid machine */
/* code from the lines below. The main issue is that `wide_a' is not */
/* properly initialized by sign-extending `a'. Instead, the generated */
/* machine code assumes that the register that contains `a' on input */
/* can be used directly as a 64-bit value, which is wrong most of the */
/* time. */
long long wide_a = (long long)a;
long long wide_b = (long long)b;
long long result;
__asm__ __volatile__ (
"imul %2, %1\n"
"mov %1, %0\n"
"sar $63, %0\n"
"lea 0x8000(%1, %0), %0\n"
"sar $16, %0\n"
: "=&r"(result), "=&r"(wide_a)
: "r"(wide_b)
: "cc" );
return (FT_Int32)result;
#endif
#if __GNUC__ > 4 || ( __GNUC__ == 4 && __GNUC_MINOR__ >= 6 )
#pragma GCC diagnostic pop
#endif
}
#endif /* __GNUC__ && __x86_64__ */
#endif /* !FT_CONFIG_OPTION_NO_ASSEMBLER */
#ifdef FT_CONFIG_OPTION_INLINE_MULFIX
#ifdef FT_MULFIX_ASSEMBLER #ifdef FT_MULFIX_ASSEMBLER
#define FT_MulFix( a, b ) FT_MULFIX_ASSEMBLER( (FT_Int32)(a), (FT_Int32)(b) ) #define FT_MulFix( a, b ) FT_MULFIX_ASSEMBLER( (FT_Int32)(a), (FT_Int32)(b) )
#endif #endif
#endif
#endif /* !FT_CONFIG_OPTION_NO_ASSEMBLER */
#endif /* FT_CONFIG_OPTION_INLINE_MULFIX */
/************************************************************************** /**************************************************************************
@ -278,40 +249,6 @@ FT_BEGIN_HEADER
FT_Long c ); FT_Long c );
/**************************************************************************
*
* @function:
* FT_MulAddFix
*
* @description:
* Compute `(s[0] * f[0] + s[1] * f[1] + ...) / 0x10000`, where `s[n]` is
* usually a 16.16 scalar.
*
* @input:
* s ::
* The array of scalars.
* f ::
* The array of factors.
* count ::
* The number of entries in the array.
*
* @return:
* The result of `(s[0] * f[0] + s[1] * f[1] + ...) / 0x10000`.
*
* @note:
* This function is currently used for the scaled delta computation of
* variation stores. It internally uses 64-bit data types when
* available, otherwise it emulates 64-bit math by using 32-bit
* operations, which produce a correct result but most likely at a slower
* performance in comparison to the implementation base on `int64_t`.
*
*/
FT_BASE( FT_Int32 )
FT_MulAddFix( FT_Fixed* s,
FT_Int32* f,
FT_UInt count );
/* /*
* A variant of FT_Matrix_Multiply which scales its result afterwards. The * A variant of FT_Matrix_Multiply which scales its result afterwards. The
* idea is that both `a' and `b' are scaled by factors of 10 so that the * idea is that both `a' and `b' are scaled by factors of 10 so that the
@ -455,6 +392,10 @@ FT_BEGIN_HEADER
#define FT_MSB( x ) FT_MSB_i386( x ) #define FT_MSB( x ) FT_MSB_i386( x )
#elif defined( __CC_ARM )
#define FT_MSB( x ) ( 31 - __clz( x ) )
#elif defined( __SunOS_5_11 ) #elif defined( __SunOS_5_11 )
#include <string.h> #include <string.h>
@ -526,55 +467,6 @@ FT_BEGIN_HEADER
#define ROUND_F26DOT6( x ) ( ( (x) + 32 - ( x < 0 ) ) & -64 ) #define ROUND_F26DOT6( x ) ( ( (x) + 32 - ( x < 0 ) ) & -64 )
/*
* The following macros have two purposes.
*
* - Tag places where overflow is expected and harmless.
*
* - Avoid run-time sanitizer errors.
*
* Use with care!
*/
#define ADD_INT( a, b ) \
(FT_Int)( (FT_UInt)(a) + (FT_UInt)(b) )
#define SUB_INT( a, b ) \
(FT_Int)( (FT_UInt)(a) - (FT_UInt)(b) )
#define MUL_INT( a, b ) \
(FT_Int)( (FT_UInt)(a) * (FT_UInt)(b) )
#define NEG_INT( a ) \
(FT_Int)( (FT_UInt)0 - (FT_UInt)(a) )
#define ADD_LONG( a, b ) \
(FT_Long)( (FT_ULong)(a) + (FT_ULong)(b) )
#define SUB_LONG( a, b ) \
(FT_Long)( (FT_ULong)(a) - (FT_ULong)(b) )
#define MUL_LONG( a, b ) \
(FT_Long)( (FT_ULong)(a) * (FT_ULong)(b) )
#define NEG_LONG( a ) \
(FT_Long)( (FT_ULong)0 - (FT_ULong)(a) )
#define ADD_INT32( a, b ) \
(FT_Int32)( (FT_UInt32)(a) + (FT_UInt32)(b) )
#define SUB_INT32( a, b ) \
(FT_Int32)( (FT_UInt32)(a) - (FT_UInt32)(b) )
#define MUL_INT32( a, b ) \
(FT_Int32)( (FT_UInt32)(a) * (FT_UInt32)(b) )
#define NEG_INT32( a ) \
(FT_Int32)( (FT_UInt32)0 - (FT_UInt32)(a) )
#ifdef FT_INT64
#define ADD_INT64( a, b ) \
(FT_Int64)( (FT_UInt64)(a) + (FT_UInt64)(b) )
#define SUB_INT64( a, b ) \
(FT_Int64)( (FT_UInt64)(a) - (FT_UInt64)(b) )
#define MUL_INT64( a, b ) \
(FT_Int64)( (FT_UInt64)(a) * (FT_UInt64)(b) )
#define NEG_INT64( a ) \
(FT_Int64)( (FT_UInt64)0 - (FT_UInt64)(a) )
#endif /* FT_INT64 */
FT_END_HEADER FT_END_HEADER

View File

@ -4,7 +4,7 @@
* *
* Debugging and logging component (specification). * Debugging and logging component (specification).
* *
* Copyright (C) 1996-2024 by * Copyright (C) 1996-2025 by
* David Turner, Robert Wilhelm, and Werner Lemberg. * David Turner, Robert Wilhelm, and Werner Lemberg.
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,

View File

@ -4,7 +4,7 @@
* *
* FreeType internal font driver interface (specification). * FreeType internal font driver interface (specification).
* *
* Copyright (C) 1996-2024 by * Copyright (C) 1996-2025 by
* David Turner, Robert Wilhelm, and Werner Lemberg. * David Turner, Robert Wilhelm, and Werner Lemberg.
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,

View File

@ -4,7 +4,7 @@
* *
* The FreeType glyph loader (specification). * The FreeType glyph loader (specification).
* *
* Copyright (C) 2002-2024 by * Copyright (C) 2002-2025 by
* David Turner, Robert Wilhelm, and Werner Lemberg * David Turner, Robert Wilhelm, and Werner Lemberg
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,

View File

@ -117,6 +117,18 @@ FT_BEGIN_HEADER
FT_Hash hash, FT_Hash hash,
FT_Memory memory ); FT_Memory memory );
FT_Error
ft_hash_str_insert_no_overwrite( const char* key,
size_t data,
FT_Hash hash,
FT_Memory memory );
FT_Error
ft_hash_num_insert_no_overwrite( FT_Int num,
size_t data,
FT_Hash hash,
FT_Memory memory );
size_t* size_t*
ft_hash_str_lookup( const char* key, ft_hash_str_lookup( const char* key,
FT_Hash hash ); FT_Hash hash );
@ -125,6 +137,17 @@ FT_BEGIN_HEADER
ft_hash_num_lookup( FT_Int num, ft_hash_num_lookup( FT_Int num,
FT_Hash hash ); FT_Hash hash );
FT_Bool
ft_hash_num_iterator( FT_UInt *idx,
FT_Int *key,
size_t *value,
FT_Hash hash );
FT_Bool
ft_hash_str_iterator( FT_UInt *idx,
const char* *key,
size_t *value,
FT_Hash hash );
FT_END_HEADER FT_END_HEADER

View File

@ -4,7 +4,7 @@
* *
* The FreeType memory management macros (specification). * The FreeType memory management macros (specification).
* *
* Copyright (C) 1996-2024 by * Copyright (C) 1996-2025 by
* David Turner, Robert Wilhelm, and Werner Lemberg * David Turner, Robert Wilhelm, and Werner Lemberg
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,

View File

@ -5,7 +5,7 @@
* OpenType Variations type definitions for internal use * OpenType Variations type definitions for internal use
* with the multi-masters service (specification). * with the multi-masters service (specification).
* *
* Copyright (C) 2022-2024 by * Copyright (C) 2022-2025 by
* David Turner, Robert Wilhelm, Werner Lemberg, George Williams, and * David Turner, Robert Wilhelm, Werner Lemberg, George Williams, and
* Dominik Röttsches. * Dominik Röttsches.
* *

View File

@ -4,7 +4,7 @@
* *
* The FreeType private base classes (specification). * The FreeType private base classes (specification).
* *
* Copyright (C) 1996-2024 by * Copyright (C) 1996-2025 by
* David Turner, Robert Wilhelm, and Werner Lemberg. * David Turner, Robert Wilhelm, and Werner Lemberg.
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,
@ -275,6 +275,28 @@ FT_BEGIN_HEADER
FT_GlyphSlot slot, FT_GlyphSlot slot,
FT_Render_Mode mode ); FT_Render_Mode mode );
/**************************************************************************
*
* @Function:
* find_unicode_charmap
*
* @Description:
* This function finds a Unicode charmap, if there is one. And if there
* is more than one, it tries to favour the more extensive one, i.e., one
* that supports UCS-4 against those which are limited to the BMP (UCS-2
* encoding.)
*
* If a unicode charmap is found, `face->charmap` is set to it.
*
* This function is called from `open_face`, from `FT_Select_Charmap(...,
* FT_ENCODING_UNICODE)`, and also from `afadjust.c` in the 'autofit'
* module.
*/
FT_BASE( FT_Error )
find_unicode_charmap( FT_Face face );
#ifdef FT_CONFIG_OPTION_SUBPIXEL_RENDERING #ifdef FT_CONFIG_OPTION_SUBPIXEL_RENDERING
typedef void (*FT_Bitmap_LcdFilterFunc)( FT_Bitmap* bitmap, typedef void (*FT_Bitmap_LcdFilterFunc)( FT_Bitmap* bitmap,
@ -498,9 +520,9 @@ FT_BEGIN_HEADER
*/ */
typedef struct FT_ModuleRec_ typedef struct FT_ModuleRec_
{ {
FT_Module_Class* clazz; const FT_Module_Class* clazz;
FT_Library library; FT_Library library;
FT_Memory memory; FT_Memory memory;
} FT_ModuleRec; } FT_ModuleRec;

View File

@ -4,7 +4,7 @@
* *
* Get and set properties of PostScript drivers (specification). * Get and set properties of PostScript drivers (specification).
* *
* Copyright (C) 2017-2024 by * Copyright (C) 2017-2025 by
* David Turner, Robert Wilhelm, and Werner Lemberg. * David Turner, Robert Wilhelm, and Werner Lemberg.
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,

View File

@ -4,7 +4,7 @@
* *
* Embedded resource forks accessor (specification). * Embedded resource forks accessor (specification).
* *
* Copyright (C) 2004-2024 by * Copyright (C) 2004-2025 by
* Masatake YAMATO and Redhat K.K. * Masatake YAMATO and Redhat K.K.
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,

View File

@ -4,7 +4,7 @@
* *
* The FreeType services (specification only). * The FreeType services (specification only).
* *
* Copyright (C) 2003-2024 by * Copyright (C) 2003-2025 by
* David Turner, Robert Wilhelm, and Werner Lemberg. * David Turner, Robert Wilhelm, and Werner Lemberg.
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,

View File

@ -4,7 +4,7 @@
* *
* Stream handling (specification). * Stream handling (specification).
* *
* Copyright (C) 1996-2024 by * Copyright (C) 1996-2025 by
* David Turner, Robert Wilhelm, and Werner Lemberg. * David Turner, Robert Wilhelm, and Werner Lemberg.
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,

View File

@ -4,7 +4,7 @@
* *
* Tracing handling (specification only). * Tracing handling (specification only).
* *
* Copyright (C) 2002-2024 by * Copyright (C) 2002-2025 by
* David Turner, Robert Wilhelm, and Werner Lemberg. * David Turner, Robert Wilhelm, and Werner Lemberg.
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,
@ -19,7 +19,7 @@
/* definitions of trace levels for FreeType 2 */ /* definitions of trace levels for FreeType 2 */
/* the maximum string length (if the argument to `FT_TRACE_DEF` */ /* the maximum string length (if the argument to `FT_TRACE_DEF` */
/* gets used as a string) plus one charachter for ':' plus */ /* gets used as a string) plus one character for ':' plus */
/* another one for the trace level */ /* another one for the trace level */
#define FT_MAX_TRACE_LEVEL_LENGTH (9 + 1 + 1) #define FT_MAX_TRACE_LEVEL_LENGTH (9 + 1 + 1)
@ -159,6 +159,7 @@ FT_TRACE_DEF( gxvprop )
FT_TRACE_DEF( gxvtrak ) FT_TRACE_DEF( gxvtrak )
/* autofit components */ /* autofit components */
FT_TRACE_DEF( afadjust )
FT_TRACE_DEF( afcjk ) FT_TRACE_DEF( afcjk )
FT_TRACE_DEF( afglobal ) FT_TRACE_DEF( afglobal )
FT_TRACE_DEF( afhints ) FT_TRACE_DEF( afhints )

View File

@ -4,7 +4,7 @@
* *
* FreeType validation support (specification). * FreeType validation support (specification).
* *
* Copyright (C) 2004-2024 by * Copyright (C) 2004-2025 by
* David Turner, Robert Wilhelm, and Werner Lemberg. * David Turner, Robert Wilhelm, and Werner Lemberg.
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,

View File

@ -5,7 +5,7 @@
* Auxiliary functions and data structures related to PostScript fonts * Auxiliary functions and data structures related to PostScript fonts
* (specification). * (specification).
* *
* Copyright (C) 1996-2024 by * Copyright (C) 1996-2025 by
* David Turner, Robert Wilhelm, and Werner Lemberg. * David Turner, Robert Wilhelm, and Werner Lemberg.
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,

View File

@ -6,7 +6,7 @@
* recorders (specification only). These are used to support native * recorders (specification only). These are used to support native
* T1/T2 hints in the 'type1', 'cid', and 'cff' font drivers. * T1/T2 hints in the 'type1', 'cid', and 'cff' font drivers.
* *
* Copyright (C) 2001-2024 by * Copyright (C) 2001-2025 by
* David Turner, Robert Wilhelm, and Werner Lemberg. * David Turner, Robert Wilhelm, and Werner Lemberg.
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,

View File

@ -1,79 +0,0 @@
version = 1
[[annotations]]
path = ["svbdf.h", "svfntfmt.h", "svgldict.h", "svpfr.h", "svpostnm.h", "svpscmap.h",
"svpsinfo.h", "svsfnt.h", "svwinfnt.h"]
comment = "Copyright continuation line ignored by reuse for lack of word Copyright at start."
precedence = "override"
SPDX-FileCopyrightText = "Copyright (C) 2003-2023 by David Turner, Robert Wilhelm, and Werner Lemberg."
SPDX-License-Identifier = "FTL OR GPL-2.0-only"
[[annotations]]
path = "svttcmap.h"
comment = "Copyright continuation line ignored by reuse for lack of word Copyright at start."
precedence = "override"
SPDX-FileCopyrightText = "Copyright (C) 2003-2023 by Masatake YAMATO, Redhat K.K., David Turner, Robert Wilhelm, and Werner Lemberg."
SPDX-License-Identifier = "FTL OR GPL-2.0-only"
[[annotations]]
path = "svmm.h"
comment = "Copyright continuation line ignored by reuse for lack of word Copyright at start."
precedence = "override"
SPDX-FileCopyrightText = "Copyright (C) 2003-2023 by David Turner, Robert Wilhelm, Werner Lemberg, and Dominik Röttsches."
SPDX-License-Identifier = "FTL OR GPL-2.0-only"
[[annotations]]
path = "svgxval.h"
comment = "Copyright continuation line ignored by reuse for lack of word Copyright at start."
precedence = "override"
SPDX-FileCopyrightText = "Copyright (C) 2004-2023 by Masatake YAMATO, Redhat K.K., David Turner, Robert Wilhelm, and Werner Lemberg."
SPDX-License-Identifier = "FTL OR GPL-2.0-only"
[[annotations]]
path = "svotval.h"
comment = "Copyright continuation line ignored by reuse for lack of word Copyright at start."
precedence = "override"
SPDX-FileCopyrightText = "Copyright (C) 2004-2023 by David Turner, Robert Wilhelm, and Werner Lemberg."
SPDX-License-Identifier = "FTL OR GPL-2.0-only"
[[annotations]]
path = ["svkern.h", "svtteng.h"]
comment = "Copyright continuation line ignored by reuse for lack of word Copyright at start."
precedence = "override"
SPDX-FileCopyrightText = "Copyright (C) 2006-2023 by David Turner, Robert Wilhelm, and Werner Lemberg."
SPDX-License-Identifier = "FTL OR GPL-2.0-only"
[[annotations]]
path = "svcid.h"
comment = "Copyright continuation line ignored by reuse for lack of word Copyright at start."
precedence = "override"
SPDX-FileCopyrightText = "Copyright (C) 2007-2023 by Derek Clegg and Michael Toftdal."
SPDX-License-Identifier = "FTL OR GPL-2.0-only"
[[annotations]]
path = "svttglyf.h"
comment = "Copyright continuation line ignored by reuse for lack of word Copyright at start."
precedence = "override"
SPDX-FileCopyrightText = "Copyright (C) 2007-2023 by David Turner."
SPDX-License-Identifier = "FTL OR GPL-2.0-only"
[[annotations]]
path = "svprop.h"
comment = "Copyright continuation line ignored by reuse for lack of word Copyright at start."
precedence = "override"
SPDX-FileCopyrightText = "Copyright (C) 2012-2023 by David Turner, Robert Wilhelm, and Werner Lemberg."
SPDX-License-Identifier = "FTL OR GPL-2.0-only"
[[annotations]]
path = "svmetric.h"
comment = "Copyright continuation line ignored by reuse for lack of word Copyright at start."
precedence = "override"
SPDX-FileCopyrightText = "Copyright (C) 2016-2023 by David Turner, Robert Wilhelm, and Werner Lemberg."
SPDX-License-Identifier = "FTL OR GPL-2.0-only"
[[annotations]]
path = "svcfftl.h"
comment = "Copyright continuation line ignored by reuse for lack of word Copyright at start."
precedence = "override"
SPDX-FileCopyrightText = "Copyright (C) 2017-2023 by David Turner, Robert Wilhelm, and Werner Lemberg."
SPDX-License-Identifier = "FTL OR GPL-2.0-only"

View File

@ -4,7 +4,7 @@
* *
* The FreeType BDF services (specification). * The FreeType BDF services (specification).
* *
* Copyright (C) 2003-2024 by * Copyright (C) 2003-2025 by
* David Turner, Robert Wilhelm, and Werner Lemberg. * David Turner, Robert Wilhelm, and Werner Lemberg.
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,

View File

@ -4,7 +4,7 @@
* *
* The FreeType CFF tables loader service (specification). * The FreeType CFF tables loader service (specification).
* *
* Copyright (C) 2017-2024 by * Copyright (C) 2017-2025 by
* David Turner, Robert Wilhelm, and Werner Lemberg. * David Turner, Robert Wilhelm, and Werner Lemberg.
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,

View File

@ -4,7 +4,7 @@
* *
* The FreeType CID font services (specification). * The FreeType CID font services (specification).
* *
* Copyright (C) 2007-2024 by * Copyright (C) 2007-2025 by
* Derek Clegg and Michael Toftdal. * Derek Clegg and Michael Toftdal.
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,

View File

@ -4,7 +4,7 @@
* *
* The FreeType font format service (specification only). * The FreeType font format service (specification only).
* *
* Copyright (C) 2003-2024 by * Copyright (C) 2003-2025 by
* David Turner, Robert Wilhelm, and Werner Lemberg. * David Turner, Robert Wilhelm, and Werner Lemberg.
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,

View File

@ -4,7 +4,7 @@
* *
* The FreeType glyph dictionary services (specification). * The FreeType glyph dictionary services (specification).
* *
* Copyright (C) 2003-2024 by * Copyright (C) 2003-2025 by
* David Turner, Robert Wilhelm, and Werner Lemberg. * David Turner, Robert Wilhelm, and Werner Lemberg.
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,

View File

@ -4,7 +4,7 @@
* *
* FreeType API for validating TrueTypeGX/AAT tables (specification). * FreeType API for validating TrueTypeGX/AAT tables (specification).
* *
* Copyright (C) 2004-2024 by * Copyright (C) 2004-2025 by
* Masatake YAMATO, Red Hat K.K., * Masatake YAMATO, Red Hat K.K.,
* David Turner, Robert Wilhelm, and Werner Lemberg. * David Turner, Robert Wilhelm, and Werner Lemberg.
* *

View File

@ -4,7 +4,7 @@
* *
* The FreeType Kerning service (specification). * The FreeType Kerning service (specification).
* *
* Copyright (C) 2006-2024 by * Copyright (C) 2006-2025 by
* David Turner, Robert Wilhelm, and Werner Lemberg. * David Turner, Robert Wilhelm, and Werner Lemberg.
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,

View File

@ -4,7 +4,7 @@
* *
* The FreeType services for metrics variations (specification). * The FreeType services for metrics variations (specification).
* *
* Copyright (C) 2016-2024 by * Copyright (C) 2016-2025 by
* David Turner, Robert Wilhelm, and Werner Lemberg. * David Turner, Robert Wilhelm, and Werner Lemberg.
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,
@ -77,7 +77,7 @@ FT_BEGIN_HEADER
typedef void typedef void
(*FT_Metrics_Adjust_Func)( FT_Face face ); (*FT_Metrics_Adjust_Func)( FT_Face face );
typedef FT_Error typedef void
(*FT_Size_Reset_Func)( FT_Size size ); (*FT_Size_Reset_Func)( FT_Size size );

View File

@ -4,7 +4,7 @@
* *
* The FreeType Multiple Masters and GX var services (specification). * The FreeType Multiple Masters and GX var services (specification).
* *
* Copyright (C) 2003-2024 by * Copyright (C) 2003-2025 by
* David Turner, Robert Wilhelm, Werner Lemberg, and Dominik Röttsches. * David Turner, Robert Wilhelm, Werner Lemberg, and Dominik Röttsches.
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,

View File

@ -4,7 +4,7 @@
* *
* The FreeType OpenType validation service (specification). * The FreeType OpenType validation service (specification).
* *
* Copyright (C) 2004-2024 by * Copyright (C) 2004-2025 by
* David Turner, Robert Wilhelm, and Werner Lemberg. * David Turner, Robert Wilhelm, and Werner Lemberg.
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,

View File

@ -4,7 +4,7 @@
* *
* Internal PFR service functions (specification). * Internal PFR service functions (specification).
* *
* Copyright (C) 2003-2024 by * Copyright (C) 2003-2025 by
* David Turner, Robert Wilhelm, and Werner Lemberg. * David Turner, Robert Wilhelm, and Werner Lemberg.
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,

View File

@ -4,7 +4,7 @@
* *
* The FreeType PostScript name services (specification). * The FreeType PostScript name services (specification).
* *
* Copyright (C) 2003-2024 by * Copyright (C) 2003-2025 by
* David Turner, Robert Wilhelm, and Werner Lemberg. * David Turner, Robert Wilhelm, and Werner Lemberg.
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,

View File

@ -4,7 +4,7 @@
* *
* The FreeType property service (specification). * The FreeType property service (specification).
* *
* Copyright (C) 2012-2024 by * Copyright (C) 2012-2025 by
* David Turner, Robert Wilhelm, and Werner Lemberg. * David Turner, Robert Wilhelm, and Werner Lemberg.
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,

View File

@ -4,7 +4,7 @@
* *
* The FreeType PostScript charmap service (specification). * The FreeType PostScript charmap service (specification).
* *
* Copyright (C) 2003-2024 by * Copyright (C) 2003-2025 by
* David Turner, Robert Wilhelm, and Werner Lemberg. * David Turner, Robert Wilhelm, and Werner Lemberg.
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,

View File

@ -4,7 +4,7 @@
* *
* The FreeType PostScript info service (specification). * The FreeType PostScript info service (specification).
* *
* Copyright (C) 2003-2024 by * Copyright (C) 2003-2025 by
* David Turner, Robert Wilhelm, and Werner Lemberg. * David Turner, Robert Wilhelm, and Werner Lemberg.
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,

View File

@ -4,7 +4,7 @@
* *
* The FreeType SFNT table loading service (specification). * The FreeType SFNT table loading service (specification).
* *
* Copyright (C) 2003-2024 by * Copyright (C) 2003-2025 by
* David Turner, Robert Wilhelm, and Werner Lemberg. * David Turner, Robert Wilhelm, and Werner Lemberg.
* *
* This file is part of the FreeType project, and may only be used, * This file is part of the FreeType project, and may only be used,

View File

@ -4,7 +4,7 @@
* *
* The FreeType TrueType/sfnt cmap extra information service. * The FreeType TrueType/sfnt cmap extra information service.
* *
* Copyright (C) 2003-2024 by * Copyright (C) 2003-2025 by
* Masatake YAMATO, Redhat K.K., * Masatake YAMATO, Redhat K.K.,
* David Turner, Robert Wilhelm, and Werner Lemberg. * David Turner, Robert Wilhelm, and Werner Lemberg.
* *

Some files were not shown because too many files have changed in this diff Show More