Update Freetype to 2.13.2
This commit is contained in:
169
Source/ThirdParty/freetype/FTL.TXT
vendored
Normal file
169
Source/ThirdParty/freetype/FTL.TXT
vendored
Normal file
@@ -0,0 +1,169 @@
|
||||
The FreeType Project LICENSE
|
||||
----------------------------
|
||||
|
||||
2006-Jan-27
|
||||
|
||||
Copyright 1996-2002, 2006 by
|
||||
David Turner, Robert Wilhelm, and Werner Lemberg
|
||||
|
||||
|
||||
|
||||
Introduction
|
||||
============
|
||||
|
||||
The FreeType Project is distributed in several archive packages;
|
||||
some of them may contain, in addition to the FreeType font engine,
|
||||
various tools and contributions which rely on, or relate to, the
|
||||
FreeType Project.
|
||||
|
||||
This license applies to all files found in such packages, and
|
||||
which do not fall under their own explicit license. The license
|
||||
affects thus the FreeType font engine, the test programs,
|
||||
documentation and makefiles, at the very least.
|
||||
|
||||
This license was inspired by the BSD, Artistic, and IJG
|
||||
(Independent JPEG Group) licenses, which all encourage inclusion
|
||||
and use of free software in commercial and freeware products
|
||||
alike. As a consequence, its main points are that:
|
||||
|
||||
o We don't promise that this software works. However, we will be
|
||||
interested in any kind of bug reports. (`as is' distribution)
|
||||
|
||||
o You can use this software for whatever you want, in parts or
|
||||
full form, without having to pay us. (`royalty-free' usage)
|
||||
|
||||
o You may not pretend that you wrote this software. If you use
|
||||
it, or only parts of it, in a program, you must acknowledge
|
||||
somewhere in your documentation that you have used the
|
||||
FreeType code. (`credits')
|
||||
|
||||
We specifically permit and encourage the inclusion of this
|
||||
software, with or without modifications, in commercial products.
|
||||
We disclaim all warranties covering The FreeType Project and
|
||||
assume no liability related to The FreeType Project.
|
||||
|
||||
|
||||
Finally, many people asked us for a preferred form for a
|
||||
credit/disclaimer to use in compliance with this license. We thus
|
||||
encourage you to use the following text:
|
||||
|
||||
"""
|
||||
Portions of this software are copyright © <year> The FreeType
|
||||
Project (www.freetype.org). All rights reserved.
|
||||
"""
|
||||
|
||||
Please replace <year> with the value from the FreeType version you
|
||||
actually use.
|
||||
|
||||
|
||||
Legal Terms
|
||||
===========
|
||||
|
||||
0. Definitions
|
||||
--------------
|
||||
|
||||
Throughout this license, the terms `package', `FreeType Project',
|
||||
and `FreeType archive' refer to the set of files originally
|
||||
distributed by the authors (David Turner, Robert Wilhelm, and
|
||||
Werner Lemberg) as the `FreeType Project', be they named as alpha,
|
||||
beta or final release.
|
||||
|
||||
`You' refers to the licensee, or person using the project, where
|
||||
`using' is a generic term including compiling the project's source
|
||||
code as well as linking it to form a `program' or `executable'.
|
||||
This program is referred to as `a program using the FreeType
|
||||
engine'.
|
||||
|
||||
This license applies to all files distributed in the original
|
||||
FreeType Project, including all source code, binaries and
|
||||
documentation, unless otherwise stated in the file in its
|
||||
original, unmodified form as distributed in the original archive.
|
||||
If you are unsure whether or not a particular file is covered by
|
||||
this license, you must contact us to verify this.
|
||||
|
||||
The FreeType Project is copyright (C) 1996-2000 by David Turner,
|
||||
Robert Wilhelm, and Werner Lemberg. All rights reserved except as
|
||||
specified below.
|
||||
|
||||
1. No Warranty
|
||||
--------------
|
||||
|
||||
THE FREETYPE PROJECT IS PROVIDED `AS IS' WITHOUT WARRANTY OF ANY
|
||||
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. IN NO EVENT WILL ANY OF THE AUTHORS OR COPYRIGHT HOLDERS
|
||||
BE LIABLE FOR ANY DAMAGES CAUSED BY THE USE OR THE INABILITY TO
|
||||
USE, OF THE FREETYPE PROJECT.
|
||||
|
||||
2. Redistribution
|
||||
-----------------
|
||||
|
||||
This license grants a worldwide, royalty-free, perpetual and
|
||||
irrevocable right and license to use, execute, perform, compile,
|
||||
display, copy, create derivative works of, distribute and
|
||||
sublicense the FreeType Project (in both source and object code
|
||||
forms) and derivative works thereof for any purpose; and to
|
||||
authorize others to exercise some or all of the rights granted
|
||||
herein, subject to the following conditions:
|
||||
|
||||
o Redistribution of source code must retain this license file
|
||||
(`FTL.TXT') unaltered; any additions, deletions or changes to
|
||||
the original files must be clearly indicated in accompanying
|
||||
documentation. The copyright notices of the unaltered,
|
||||
original files must be preserved in all copies of source
|
||||
files.
|
||||
|
||||
o Redistribution in binary form must provide a disclaimer that
|
||||
states that the software is based in part of the work of the
|
||||
FreeType Team, in the distribution documentation. We also
|
||||
encourage you to put an URL to the FreeType web page in your
|
||||
documentation, though this isn't mandatory.
|
||||
|
||||
These conditions apply to any software derived from or based on
|
||||
the FreeType Project, not just the unmodified files. If you use
|
||||
our work, you must acknowledge us. However, no fee need be paid
|
||||
to us.
|
||||
|
||||
3. Advertising
|
||||
--------------
|
||||
|
||||
Neither the FreeType authors and contributors nor you shall use
|
||||
the name of the other for commercial, advertising, or promotional
|
||||
purposes without specific prior written permission.
|
||||
|
||||
We suggest, but do not require, that you use one or more of the
|
||||
following phrases to refer to this software in your documentation
|
||||
or advertising materials: `FreeType Project', `FreeType Engine',
|
||||
`FreeType library', or `FreeType Distribution'.
|
||||
|
||||
As you have not signed this license, you are not required to
|
||||
accept it. However, as the FreeType Project is copyrighted
|
||||
material, only this license, or another one contracted with the
|
||||
authors, grants you the right to use, distribute, and modify it.
|
||||
Therefore, by using, distributing, or modifying the FreeType
|
||||
Project, you indicate that you understand and accept all the terms
|
||||
of this license.
|
||||
|
||||
4. Contacts
|
||||
-----------
|
||||
|
||||
There are two mailing lists related to FreeType:
|
||||
|
||||
o freetype@nongnu.org
|
||||
|
||||
Discusses general use and applications of FreeType, as well as
|
||||
future and wanted additions to the library and distribution.
|
||||
If you are looking for support, start in this list if you
|
||||
haven't found anything to help you in the documentation.
|
||||
|
||||
o freetype-devel@nongnu.org
|
||||
|
||||
Discusses bugs, as well as engine internals, design issues,
|
||||
specific licenses, porting, etc.
|
||||
|
||||
Our home page can be found at
|
||||
|
||||
https://www.freetype.org
|
||||
|
||||
|
||||
--- end of FTL.TXT ---
|
||||
57
Source/ThirdParty/freetype/LICENSE.TXT
vendored
57
Source/ThirdParty/freetype/LICENSE.TXT
vendored
@@ -1,39 +1,46 @@
|
||||
FREETYPE LICENSES
|
||||
-----------------
|
||||
|
||||
The FreeType 2 font engine is copyrighted work and cannot be used
|
||||
legally without a software license. In order to make this project
|
||||
usable to a vast majority of developers, we distribute it under two
|
||||
The FreeType 2 font engine is copyrighted work and cannot be used
|
||||
legally without a software license. In order to make this project
|
||||
usable to a vast majority of developers, we distribute it under two
|
||||
mutually exclusive open-source licenses.
|
||||
|
||||
This means that *you* must choose *one* of the two licenses described
|
||||
below, then obey all its terms and conditions when using FreeType 2 in
|
||||
This means that *you* must choose *one* of the two licenses described
|
||||
below, then obey all its terms and conditions when using FreeType 2 in
|
||||
any of your projects or products.
|
||||
|
||||
- The FreeType License, found in the file `FTL.TXT', which is similar
|
||||
to the original BSD license *with* an advertising clause that forces
|
||||
you to explicitly cite the FreeType project in your product's
|
||||
documentation. All details are in the license file. This license
|
||||
is suited to products which don't use the GNU General Public
|
||||
License.
|
||||
- The FreeType License, found in the file `docs/FTL.TXT`, which is
|
||||
similar to the original BSD license *with* an advertising clause
|
||||
that forces you to explicitly cite the FreeType project in your
|
||||
product's documentation. All details are in the license file.
|
||||
This license is suited to products which don't use the GNU General
|
||||
Public License.
|
||||
|
||||
Note that this license is compatible to the GNU General Public
|
||||
Note that this license is compatible to the GNU General Public
|
||||
License version 3, but not version 2.
|
||||
|
||||
- The GNU General Public License version 2, found in `GPLv2.TXT' (any
|
||||
later version can be used also), for programs which already use the
|
||||
GPL. Note that the FTL is incompatible with GPLv2 due to its
|
||||
advertisement clause.
|
||||
- The GNU General Public License version 2, found in
|
||||
`docs/GPLv2.TXT` (any later version can be used also), for
|
||||
programs which already use the GPL. Note that the FTL is
|
||||
incompatible with GPLv2 due to its advertisement clause.
|
||||
|
||||
The contributed BDF and PCF drivers come with a license similar to that
|
||||
of the X Window System. It is compatible to the above two licenses (see
|
||||
file src/bdf/README and src/pcf/README). The same holds for the files
|
||||
`fthash.c' and `fthash.h'; their code was part of the BDF driver in
|
||||
earlier FreeType versions.
|
||||
The contributed BDF and PCF drivers come with a license similar to
|
||||
that of the X Window System. It is compatible to the above two
|
||||
licenses (see files `src/bdf/README` and `src/pcf/README`). The same
|
||||
holds for the source code files `src/base/fthash.c` and
|
||||
`include/freetype/internal/fthash.h`; they were part of the BDF driver
|
||||
in earlier FreeType versions.
|
||||
|
||||
The gzip module uses the zlib license (see src/gzip/zlib.h) which too is
|
||||
compatible to the above two licenses.
|
||||
The gzip module uses the zlib license (see `src/gzip/zlib.h`) which
|
||||
too is compatible to the above two licenses.
|
||||
|
||||
The MD5 checksum support (only used for debugging in development builds)
|
||||
is in the public domain.
|
||||
The files `src/autofit/ft-hb.c` and `src/autofit/ft-hb.h` contain code
|
||||
taken almost verbatim from the HarfBuzz file `hb-ft.cc`, which uses
|
||||
the 'Old MIT' license, compatible to the above two licenses.
|
||||
|
||||
The MD5 checksum support (only used for debugging in development
|
||||
builds) is in the public domain.
|
||||
|
||||
|
||||
--- end of LICENSE.TXT ---
|
||||
|
||||
532
Source/ThirdParty/freetype/config/ftconfig.h
vendored
532
Source/ThirdParty/freetype/config/ftconfig.h
vendored
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* ANSI-specific configuration file (specification only).
|
||||
*
|
||||
* Copyright (C) 1996-2019 by
|
||||
* Copyright (C) 1996-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
@@ -41,533 +41,9 @@
|
||||
#include FT_CONFIG_OPTIONS_H
|
||||
#include FT_CONFIG_STANDARD_LIBRARY_H
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* PLATFORM-SPECIFIC CONFIGURATION MACROS
|
||||
*
|
||||
* These macros can be toggled to suit a specific system. The current ones
|
||||
* are defaults used to compile FreeType in an ANSI C environment (16bit
|
||||
* compilers are also supported). Copy this file to your own
|
||||
* `builds/<system>` directory, and edit it to port the engine.
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/* 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 */
|
||||
/* `int` has 16~bits also for this system, `sizeof(int)` gives~1 which */
|
||||
/* is probably unexpected. */
|
||||
/* */
|
||||
/* `CHAR_BIT` (defined in `limits.h`) gives the number of bits in a */
|
||||
/* `char` type. */
|
||||
|
||||
#ifndef FT_CHAR_BIT
|
||||
#define FT_CHAR_BIT CHAR_BIT
|
||||
#endif
|
||||
|
||||
|
||||
/* The size of an `int` type. */
|
||||
#if FT_UINT_MAX == 0xFFFFUL
|
||||
#define FT_SIZEOF_INT ( 16 / FT_CHAR_BIT )
|
||||
#elif FT_UINT_MAX == 0xFFFFFFFFUL
|
||||
#define FT_SIZEOF_INT ( 32 / FT_CHAR_BIT )
|
||||
#elif FT_UINT_MAX > 0xFFFFFFFFUL && FT_UINT_MAX == 0xFFFFFFFFFFFFFFFFUL
|
||||
#define FT_SIZEOF_INT ( 64 / FT_CHAR_BIT )
|
||||
#else
|
||||
#error "Unsupported size of `int' type!"
|
||||
#endif
|
||||
|
||||
/* The size of a `long` type. A five-byte `long` (as used e.g. on the */
|
||||
/* DM642) is recognized but avoided. */
|
||||
#if FT_ULONG_MAX == 0xFFFFFFFFUL
|
||||
#define FT_SIZEOF_LONG ( 32 / FT_CHAR_BIT )
|
||||
#elif FT_ULONG_MAX > 0xFFFFFFFFUL && FT_ULONG_MAX == 0xFFFFFFFFFFUL
|
||||
#define FT_SIZEOF_LONG ( 32 / FT_CHAR_BIT )
|
||||
#elif FT_ULONG_MAX > 0xFFFFFFFFUL && FT_ULONG_MAX == 0xFFFFFFFFFFFFFFFFUL
|
||||
#define FT_SIZEOF_LONG ( 64 / FT_CHAR_BIT )
|
||||
#else
|
||||
#error "Unsupported size of `long' type!"
|
||||
#endif
|
||||
|
||||
|
||||
/* `FT_UNUSED` indicates that a given parameter is not used -- */
|
||||
/* this is only used to get rid of unpleasant compiler warnings. */
|
||||
#ifndef FT_UNUSED
|
||||
#define FT_UNUSED( arg ) ( (arg) = (arg) )
|
||||
#endif
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* AUTOMATIC CONFIGURATION MACROS
|
||||
*
|
||||
* These macros are computed from the ones defined above. Don't touch
|
||||
* their definition, unless you know precisely what you are doing. No
|
||||
* porter should need to mess with them.
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* Mac support
|
||||
*
|
||||
* This is the only necessary change, so it is defined here instead
|
||||
* providing a new configuration file.
|
||||
*/
|
||||
#if defined( __APPLE__ ) || ( defined( __MWERKS__ ) && defined( macintosh ) )
|
||||
/* No Carbon frameworks for 64bit 10.4.x. */
|
||||
/* `AvailabilityMacros.h` is available since Mac OS X 10.2, */
|
||||
/* so guess the system version by maximum errno before inclusion. */
|
||||
#include <errno.h>
|
||||
#ifdef ECANCELED /* defined since 10.2 */
|
||||
#include "AvailabilityMacros.h"
|
||||
#endif
|
||||
#if defined( __LP64__ ) && \
|
||||
( MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 )
|
||||
#undef FT_MACINTOSH
|
||||
#endif
|
||||
|
||||
#elif defined( __SC__ ) || defined( __MRC__ )
|
||||
/* Classic MacOS compilers */
|
||||
#include "ConditionalMacros.h"
|
||||
#if TARGET_OS_MAC
|
||||
#define FT_MACINTOSH 1
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
/* Fix compiler warning with sgi compiler. */
|
||||
#if defined( __sgi ) && !defined( __GNUC__ )
|
||||
#if defined( _COMPILER_VERSION ) && ( _COMPILER_VERSION >= 730 )
|
||||
#pragma set woff 3505
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @section:
|
||||
* basic_types
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @type:
|
||||
* FT_Int16
|
||||
*
|
||||
* @description:
|
||||
* A typedef for a 16bit signed integer type.
|
||||
*/
|
||||
typedef signed short FT_Int16;
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @type:
|
||||
* FT_UInt16
|
||||
*
|
||||
* @description:
|
||||
* A typedef for a 16bit unsigned integer type.
|
||||
*/
|
||||
typedef unsigned short FT_UInt16;
|
||||
|
||||
/* */
|
||||
|
||||
|
||||
/* this #if 0 ... #endif clause is for documentation purposes */
|
||||
#if 0
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @type:
|
||||
* FT_Int32
|
||||
*
|
||||
* @description:
|
||||
* A typedef for a 32bit signed integer type. The size depends on the
|
||||
* configuration.
|
||||
*/
|
||||
typedef signed XXX FT_Int32;
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @type:
|
||||
* FT_UInt32
|
||||
*
|
||||
* A typedef for a 32bit unsigned integer type. The size depends on the
|
||||
* configuration.
|
||||
*/
|
||||
typedef unsigned XXX FT_UInt32;
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @type:
|
||||
* FT_Int64
|
||||
*
|
||||
* A typedef for a 64bit signed integer type. The size depends on the
|
||||
* configuration. Only defined if there is real 64bit support;
|
||||
* otherwise, it gets emulated with a structure (if necessary).
|
||||
*/
|
||||
typedef signed XXX FT_Int64;
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @type:
|
||||
* FT_UInt64
|
||||
*
|
||||
* A typedef for a 64bit unsigned integer type. The size depends on the
|
||||
* configuration. Only defined if there is real 64bit support;
|
||||
* otherwise, it gets emulated with a structure (if necessary).
|
||||
*/
|
||||
typedef unsigned XXX FT_UInt64;
|
||||
|
||||
/* */
|
||||
|
||||
#endif
|
||||
|
||||
#if FT_SIZEOF_INT == ( 32 / FT_CHAR_BIT )
|
||||
|
||||
typedef signed int FT_Int32;
|
||||
typedef unsigned int FT_UInt32;
|
||||
|
||||
#elif FT_SIZEOF_LONG == ( 32 / FT_CHAR_BIT )
|
||||
|
||||
typedef signed long FT_Int32;
|
||||
typedef unsigned long FT_UInt32;
|
||||
|
||||
#else
|
||||
#error "no 32bit type found -- please check your configuration files"
|
||||
#endif
|
||||
|
||||
|
||||
/* look up an integer type that is at least 32~bits */
|
||||
#if FT_SIZEOF_INT >= ( 32 / FT_CHAR_BIT )
|
||||
|
||||
typedef int FT_Fast;
|
||||
typedef unsigned int FT_UFast;
|
||||
|
||||
#elif FT_SIZEOF_LONG >= ( 32 / FT_CHAR_BIT )
|
||||
|
||||
typedef long FT_Fast;
|
||||
typedef unsigned long FT_UFast;
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
/* determine whether we have a 64-bit `int` type for platforms without */
|
||||
/* Autoconf */
|
||||
#if FT_SIZEOF_LONG == ( 64 / FT_CHAR_BIT )
|
||||
|
||||
/* `FT_LONG64` must be defined if a 64-bit type is available */
|
||||
#define FT_LONG64
|
||||
#define FT_INT64 long
|
||||
#define FT_UINT64 unsigned long
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* A 64-bit data type may create compilation problems if you compile in
|
||||
* strict ANSI mode. To avoid them, we disable other 64-bit data types if
|
||||
* `__STDC__` is defined. You can however ignore this rule by defining the
|
||||
* `FT_CONFIG_OPTION_FORCE_INT64` configuration macro.
|
||||
*/
|
||||
#elif !defined( __STDC__ ) || defined( FT_CONFIG_OPTION_FORCE_INT64 )
|
||||
|
||||
#if defined( __STDC_VERSION__ ) && __STDC_VERSION__ >= 199901L
|
||||
|
||||
#define FT_LONG64
|
||||
#define FT_INT64 long long int
|
||||
#define FT_UINT64 unsigned long long int
|
||||
|
||||
#elif defined( _MSC_VER ) && _MSC_VER >= 900 /* Visual C++ (and Intel C++) */
|
||||
|
||||
/* this compiler provides the `__int64` type */
|
||||
#define FT_LONG64
|
||||
#define FT_INT64 __int64
|
||||
#define FT_UINT64 unsigned __int64
|
||||
|
||||
#elif defined( __BORLANDC__ ) /* Borland C++ */
|
||||
|
||||
/* XXXX: We should probably check the value of `__BORLANDC__` in order */
|
||||
/* to test the compiler version. */
|
||||
|
||||
/* this compiler provides the `__int64` type */
|
||||
#define FT_LONG64
|
||||
#define FT_INT64 __int64
|
||||
#define FT_UINT64 unsigned __int64
|
||||
|
||||
#elif defined( __WATCOMC__ ) /* Watcom C++ */
|
||||
|
||||
/* Watcom doesn't provide 64-bit data types */
|
||||
|
||||
#elif defined( __MWERKS__ ) /* Metrowerks CodeWarrior */
|
||||
|
||||
#define FT_LONG64
|
||||
#define FT_INT64 long long int
|
||||
#define FT_UINT64 unsigned long long int
|
||||
|
||||
#elif defined( __GNUC__ )
|
||||
|
||||
/* GCC provides the `long long` type */
|
||||
#define FT_LONG64
|
||||
#define FT_INT64 long long int
|
||||
#define FT_UINT64 unsigned long long int
|
||||
|
||||
#endif /* __STDC_VERSION__ >= 199901L */
|
||||
|
||||
#endif /* FT_SIZEOF_LONG == (64 / FT_CHAR_BIT) */
|
||||
|
||||
#ifdef FT_LONG64
|
||||
typedef FT_INT64 FT_Int64;
|
||||
typedef FT_UINT64 FT_UInt64;
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef _WIN64
|
||||
/* only 64bit Windows uses the LLP64 data model, i.e., */
|
||||
/* 32bit integers, 64bit pointers */
|
||||
#define FT_UINT_TO_POINTER( x ) (void*)(unsigned __int64)(x)
|
||||
#else
|
||||
#define FT_UINT_TO_POINTER( x ) (void*)(unsigned long)(x)
|
||||
#endif
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* miscellaneous
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#define FT_BEGIN_STMNT do {
|
||||
#define FT_END_STMNT } while ( 0 )
|
||||
#define FT_DUMMY_STMNT FT_BEGIN_STMNT FT_END_STMNT
|
||||
|
||||
|
||||
/* `typeof` condition taken from gnulib's `intprops.h` header file */
|
||||
#if ( ( defined( __GNUC__ ) && __GNUC__ >= 2 ) || \
|
||||
( defined( __IBMC__ ) && __IBMC__ >= 1210 && \
|
||||
defined( __IBM__TYPEOF__ ) ) || \
|
||||
( defined( __SUNPRO_C ) && __SUNPRO_C >= 0x5110 && !__STDC__ ) )
|
||||
#define FT_TYPEOF( type ) ( __typeof__ ( type ) )
|
||||
#else
|
||||
#define FT_TYPEOF( type ) /* empty */
|
||||
#endif
|
||||
|
||||
|
||||
/* Use `FT_LOCAL` and `FT_LOCAL_DEF` to declare and define, */
|
||||
/* respectively, a function that gets used only within the scope of a */
|
||||
/* module. Normally, both the header and source code files for such a */
|
||||
/* function are within a single module directory. */
|
||||
/* */
|
||||
/* Intra-module arrays should be tagged with `FT_LOCAL_ARRAY` and */
|
||||
/* `FT_LOCAL_ARRAY_DEF`. */
|
||||
/* */
|
||||
#ifdef FT_MAKE_OPTION_SINGLE_OBJECT
|
||||
|
||||
#define FT_LOCAL( x ) static x
|
||||
#define FT_LOCAL_DEF( x ) static x
|
||||
|
||||
#else
|
||||
|
||||
#ifdef __cplusplus
|
||||
#define FT_LOCAL( x ) extern "C" x
|
||||
#define FT_LOCAL_DEF( x ) extern "C" x
|
||||
#else
|
||||
#define FT_LOCAL( x ) extern x
|
||||
#define FT_LOCAL_DEF( x ) x
|
||||
#endif
|
||||
|
||||
#endif /* FT_MAKE_OPTION_SINGLE_OBJECT */
|
||||
|
||||
#define FT_LOCAL_ARRAY( x ) extern const x
|
||||
#define FT_LOCAL_ARRAY_DEF( x ) const x
|
||||
|
||||
|
||||
/* Use `FT_BASE` and `FT_BASE_DEF` to declare and define, respectively, */
|
||||
/* functions that are used in more than a single module. In the */
|
||||
/* current setup this implies that the declaration is in a header file */
|
||||
/* in the `include/freetype/internal` directory, and the function body */
|
||||
/* is in a file in `src/base`. */
|
||||
/* */
|
||||
#ifndef FT_BASE
|
||||
|
||||
#ifdef __cplusplus
|
||||
#define FT_BASE( x ) extern "C" x
|
||||
#else
|
||||
#define FT_BASE( x ) extern x
|
||||
#endif
|
||||
|
||||
#endif /* !FT_BASE */
|
||||
|
||||
|
||||
#ifndef FT_BASE_DEF
|
||||
|
||||
#ifdef __cplusplus
|
||||
#define FT_BASE_DEF( x ) x
|
||||
#else
|
||||
#define FT_BASE_DEF( x ) x
|
||||
#endif
|
||||
|
||||
#endif /* !FT_BASE_DEF */
|
||||
|
||||
|
||||
/* When compiling FreeType as a DLL or DSO with hidden visibility */
|
||||
/* some systems/compilers need a special attribute in front OR after */
|
||||
/* the return type of function declarations. */
|
||||
/* */
|
||||
/* Two macros are used within the FreeType source code to define */
|
||||
/* exported library functions: `FT_EXPORT` and `FT_EXPORT_DEF`. */
|
||||
/* */
|
||||
/* - `FT_EXPORT( return_type )` */
|
||||
/* */
|
||||
/* is used in a function declaration, as in */
|
||||
/* */
|
||||
/* ``` */
|
||||
/* FT_EXPORT( FT_Error ) */
|
||||
/* FT_Init_FreeType( FT_Library* alibrary ); */
|
||||
/* ``` */
|
||||
/* */
|
||||
/* - `FT_EXPORT_DEF( return_type )` */
|
||||
/* */
|
||||
/* is used in a function definition, as in */
|
||||
/* */
|
||||
/* ``` */
|
||||
/* FT_EXPORT_DEF( FT_Error ) */
|
||||
/* FT_Init_FreeType( FT_Library* alibrary ) */
|
||||
/* { */
|
||||
/* ... some code ... */
|
||||
/* return FT_Err_Ok; */
|
||||
/* } */
|
||||
/* ``` */
|
||||
/* */
|
||||
/* You can provide your own implementation of `FT_EXPORT` and */
|
||||
/* `FT_EXPORT_DEF` here if you want. */
|
||||
/* */
|
||||
/* To export a variable, use `FT_EXPORT_VAR`. */
|
||||
/* */
|
||||
#ifndef FT_EXPORT
|
||||
|
||||
#ifdef FT2_BUILD_LIBRARY
|
||||
|
||||
#if defined( _WIN32 ) && defined( DLL_EXPORT )
|
||||
#define FT_EXPORT( x ) __declspec( dllexport ) x
|
||||
#elif defined( __GNUC__ ) && __GNUC__ >= 4
|
||||
#define FT_EXPORT( x ) __attribute__(( visibility( "default" ) )) x
|
||||
#elif defined( __SUNPRO_C ) && __SUNPRO_C >= 0x550
|
||||
#define FT_EXPORT( x ) __global x
|
||||
#elif defined( __cplusplus )
|
||||
#define FT_EXPORT( x ) extern "C" x
|
||||
#else
|
||||
#define FT_EXPORT( x ) extern x
|
||||
#endif
|
||||
|
||||
#else
|
||||
|
||||
#if defined( _WIN32 ) && defined( DLL_IMPORT )
|
||||
#define FT_EXPORT( x ) __declspec( dllimport ) x
|
||||
#elif defined( __cplusplus )
|
||||
#define FT_EXPORT( x ) extern "C" x
|
||||
#else
|
||||
#define FT_EXPORT( x ) extern x
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
#endif /* !FT_EXPORT */
|
||||
|
||||
|
||||
#ifndef FT_EXPORT_DEF
|
||||
|
||||
#ifdef __cplusplus
|
||||
#define FT_EXPORT_DEF( x ) extern "C" x
|
||||
#else
|
||||
#define FT_EXPORT_DEF( x ) extern x
|
||||
#endif
|
||||
|
||||
#endif /* !FT_EXPORT_DEF */
|
||||
|
||||
|
||||
#ifndef FT_EXPORT_VAR
|
||||
|
||||
#ifdef __cplusplus
|
||||
#define FT_EXPORT_VAR( x ) extern "C" x
|
||||
#else
|
||||
#define FT_EXPORT_VAR( x ) extern x
|
||||
#endif
|
||||
|
||||
#endif /* !FT_EXPORT_VAR */
|
||||
|
||||
|
||||
/* The following macros are needed to compile the library with a */
|
||||
/* C++ compiler and with 16bit compilers. */
|
||||
/* */
|
||||
|
||||
/* This is special. Within C++, you must specify `extern "C"` for */
|
||||
/* functions which are used via function pointers, and you also */
|
||||
/* must do that for structures which contain function pointers to */
|
||||
/* assure C linkage -- it's not possible to have (local) anonymous */
|
||||
/* functions which are accessed by (global) function pointers. */
|
||||
/* */
|
||||
/* */
|
||||
/* FT_CALLBACK_DEF is used to _define_ a callback function, */
|
||||
/* located in the same source code file as the structure that uses */
|
||||
/* it. */
|
||||
/* */
|
||||
/* FT_BASE_CALLBACK and FT_BASE_CALLBACK_DEF are used to declare */
|
||||
/* and define a callback function, respectively, in a similar way */
|
||||
/* as FT_BASE and FT_BASE_DEF work. */
|
||||
/* */
|
||||
/* FT_CALLBACK_TABLE is used to _declare_ a constant variable that */
|
||||
/* contains pointers to callback functions. */
|
||||
/* */
|
||||
/* FT_CALLBACK_TABLE_DEF is used to _define_ a constant variable */
|
||||
/* that contains pointers to callback functions. */
|
||||
/* */
|
||||
/* */
|
||||
/* Some 16bit compilers have to redefine these macros to insert */
|
||||
/* the infamous `_cdecl` or `__fastcall` declarations. */
|
||||
/* */
|
||||
#ifndef FT_CALLBACK_DEF
|
||||
#ifdef __cplusplus
|
||||
#define FT_CALLBACK_DEF( x ) extern "C" x
|
||||
#else
|
||||
#define FT_CALLBACK_DEF( x ) static x
|
||||
#endif
|
||||
#endif /* FT_CALLBACK_DEF */
|
||||
|
||||
#ifndef FT_BASE_CALLBACK
|
||||
#ifdef __cplusplus
|
||||
#define FT_BASE_CALLBACK( x ) extern "C" x
|
||||
#define FT_BASE_CALLBACK_DEF( x ) extern "C" x
|
||||
#else
|
||||
#define FT_BASE_CALLBACK( x ) extern x
|
||||
#define FT_BASE_CALLBACK_DEF( x ) x
|
||||
#endif
|
||||
#endif /* FT_BASE_CALLBACK */
|
||||
|
||||
#ifndef FT_CALLBACK_TABLE
|
||||
#ifdef __cplusplus
|
||||
#define FT_CALLBACK_TABLE extern "C"
|
||||
#define FT_CALLBACK_TABLE_DEF extern "C"
|
||||
#else
|
||||
#define FT_CALLBACK_TABLE extern
|
||||
#define FT_CALLBACK_TABLE_DEF /* nothing */
|
||||
#endif
|
||||
#endif /* FT_CALLBACK_TABLE */
|
||||
|
||||
|
||||
FT_END_HEADER
|
||||
|
||||
#include <freetype/config/integer-types.h>
|
||||
#include <freetype/config/public-macros.h>
|
||||
#include <freetype/config/mac-support.h>
|
||||
|
||||
#endif /* FTCONFIG_H_ */
|
||||
|
||||
|
||||
76
Source/ThirdParty/freetype/config/ftheader.h
vendored
76
Source/ThirdParty/freetype/config/ftheader.h
vendored
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* Build macros of the FreeType 2 library.
|
||||
*
|
||||
* Copyright (C) 1996-2019 by
|
||||
* Copyright (C) 1996-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
@@ -30,10 +30,12 @@
|
||||
/* encapsulated in an `extern "C" { .. }` block when included from a */
|
||||
/* C++ compiler. */
|
||||
/* */
|
||||
#ifdef __cplusplus
|
||||
#define FT_BEGIN_HEADER extern "C" {
|
||||
#else
|
||||
#define FT_BEGIN_HEADER /* nothing */
|
||||
#ifndef FT_BEGIN_HEADER
|
||||
# ifdef __cplusplus
|
||||
# define FT_BEGIN_HEADER extern "C" {
|
||||
# else
|
||||
# define FT_BEGIN_HEADER /* nothing */
|
||||
# endif
|
||||
#endif
|
||||
|
||||
|
||||
@@ -48,10 +50,12 @@
|
||||
/* encapsulated in an `extern "C" { .. }` block when included from a */
|
||||
/* C++ compiler. */
|
||||
/* */
|
||||
#ifdef __cplusplus
|
||||
#define FT_END_HEADER }
|
||||
#else
|
||||
#define FT_END_HEADER /* nothing */
|
||||
#ifndef FT_END_HEADER
|
||||
# ifdef __cplusplus
|
||||
# define FT_END_HEADER }
|
||||
# else
|
||||
# define FT_END_HEADER /* nothing */
|
||||
# endif
|
||||
#endif
|
||||
|
||||
|
||||
@@ -73,9 +77,16 @@
|
||||
* Macro definitions used to `#include` specific header files.
|
||||
*
|
||||
* @description:
|
||||
* The following macros are defined to the name of specific FreeType~2
|
||||
* header files. They can be used directly in `#include` statements as
|
||||
* in:
|
||||
* In addition to the normal scheme of including header files like
|
||||
*
|
||||
* ```
|
||||
* #include <freetype/freetype.h>
|
||||
* #include <freetype/ftmm.h>
|
||||
* #include <freetype/ftglyph.h>
|
||||
* ```
|
||||
*
|
||||
* it is possible to used named macros instead. They can be used
|
||||
* directly in `#include` statements as in
|
||||
*
|
||||
* ```
|
||||
* #include FT_FREETYPE_H
|
||||
@@ -83,13 +94,9 @@
|
||||
* #include FT_GLYPH_H
|
||||
* ```
|
||||
*
|
||||
* There are several reasons why we are now using macros to name public
|
||||
* header files. The first one is that such macros are not limited to
|
||||
* the infamous 8.3~naming rule required by DOS (and
|
||||
* `FT_MULTIPLE_MASTERS_H` is a lot more meaningful than `ftmm.h`).
|
||||
*
|
||||
* The second reason is that it allows for more flexibility in the way
|
||||
* FreeType~2 is installed on a given system.
|
||||
* These macros were introduced to overcome the infamous 8.3~naming rule
|
||||
* required by DOS (and `FT_MULTIPLE_MASTERS_H` is a lot more meaningful
|
||||
* than `ftmm.h`).
|
||||
*
|
||||
*/
|
||||
|
||||
@@ -770,6 +777,18 @@
|
||||
#define FT_COLOR_H <freetype/ftcolor.h>
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @macro:
|
||||
* FT_OTSVG_H
|
||||
*
|
||||
* @description:
|
||||
* A macro used in `#include` statements to name the file containing the
|
||||
* FreeType~2 API which handles the OpenType 'SVG~' glyphs.
|
||||
*/
|
||||
#define FT_OTSVG_H <freetype/otsvg.h>
|
||||
|
||||
|
||||
/* */
|
||||
|
||||
/* These header files don't need to be included by the user. */
|
||||
@@ -797,16 +816,19 @@
|
||||
#define FT_CACHE_INTERNAL_IMAGE_H FT_CACHE_H
|
||||
#define FT_CACHE_INTERNAL_SBITS_H FT_CACHE_H
|
||||
|
||||
|
||||
/*
|
||||
* Include internal headers definitions from `<internal/...>` only when
|
||||
* building the library.
|
||||
*/
|
||||
/* TODO(david): Move this section below to a different header */
|
||||
#ifdef FT2_BUILD_LIBRARY
|
||||
#define FT_INTERNAL_INTERNAL_H <freetype/internal/internal.h>
|
||||
#include FT_INTERNAL_INTERNAL_H
|
||||
#endif /* FT2_BUILD_LIBRARY */
|
||||
#if defined( _MSC_VER ) /* Visual C++ (and Intel C++) */
|
||||
|
||||
/* We disable the warning `conditional expression is constant' here */
|
||||
/* in order to compile cleanly with the maximum level of warnings. */
|
||||
/* In particular, the warning complains about stuff like `while(0)' */
|
||||
/* which is very useful in macro definitions. There is no benefit */
|
||||
/* in having it enabled. */
|
||||
#pragma warning( disable : 4127 )
|
||||
|
||||
#endif /* _MSC_VER */
|
||||
#endif /* FT2_BUILD_LIBRARY */
|
||||
|
||||
#endif /* FTHEADER_H_ */
|
||||
|
||||
|
||||
9
Source/ThirdParty/freetype/config/ftmodule.h
vendored
9
Source/ThirdParty/freetype/config/ftmodule.h
vendored
@@ -19,14 +19,15 @@ FT_USE_MODULE( FT_Driver_ClassRec, pfr_driver_class )
|
||||
FT_USE_MODULE( FT_Driver_ClassRec, t42_driver_class )
|
||||
FT_USE_MODULE( FT_Driver_ClassRec, winfnt_driver_class )
|
||||
FT_USE_MODULE( FT_Driver_ClassRec, pcf_driver_class )
|
||||
FT_USE_MODULE( FT_Driver_ClassRec, bdf_driver_class )
|
||||
FT_USE_MODULE( FT_Module_Class, psaux_module_class )
|
||||
FT_USE_MODULE( FT_Module_Class, psnames_module_class )
|
||||
FT_USE_MODULE( FT_Module_Class, pshinter_module_class )
|
||||
FT_USE_MODULE( FT_Renderer_Class, ft_raster1_renderer_class )
|
||||
FT_USE_MODULE( FT_Module_Class, sfnt_module_class )
|
||||
FT_USE_MODULE( FT_Renderer_Class, ft_smooth_renderer_class )
|
||||
FT_USE_MODULE( FT_Renderer_Class, ft_smooth_lcd_renderer_class )
|
||||
FT_USE_MODULE( FT_Renderer_Class, ft_smooth_lcdv_renderer_class )
|
||||
FT_USE_MODULE( FT_Driver_ClassRec, bdf_driver_class )
|
||||
FT_USE_MODULE( FT_Renderer_Class, ft_raster1_renderer_class )
|
||||
FT_USE_MODULE( FT_Renderer_Class, ft_sdf_renderer_class )
|
||||
FT_USE_MODULE( FT_Renderer_Class, ft_bitmap_sdf_renderer_class )
|
||||
FT_USE_MODULE( FT_Renderer_Class, ft_svg_renderer_class )
|
||||
|
||||
/* EOF */
|
||||
|
||||
184
Source/ThirdParty/freetype/config/ftoption.h
vendored
184
Source/ThirdParty/freetype/config/ftoption.h
vendored
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* User-selectable configuration macros (specification only).
|
||||
*
|
||||
* Copyright (C) 1996-2019 by
|
||||
* Copyright (C) 1996-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
@@ -42,7 +42,7 @@ FT_BEGIN_HEADER
|
||||
* the name of a directory that is included _before_ the FreeType include
|
||||
* path during compilation.
|
||||
*
|
||||
* The default FreeType Makefiles and Jamfiles use the build directory
|
||||
* The default FreeType Makefiles use the build directory
|
||||
* `builds/<system>` by default, but you can easily change that for your
|
||||
* own projects.
|
||||
*
|
||||
@@ -105,8 +105,7 @@ FT_BEGIN_HEADER
|
||||
*
|
||||
* ```
|
||||
* FREETYPE_PROPERTIES=truetype:interpreter-version=35 \
|
||||
* cff:no-stem-darkening=1 \
|
||||
* autofitter:warping=1
|
||||
* cff:no-stem-darkening=1
|
||||
* ```
|
||||
*
|
||||
*/
|
||||
@@ -121,10 +120,8 @@ FT_BEGIN_HEADER
|
||||
* mitigate color fringes inherent to this technology, you also need to
|
||||
* explicitly set up LCD filtering.
|
||||
*
|
||||
* Note that this feature is covered by several Microsoft patents and
|
||||
* should not be activated in any default build of the library. When this
|
||||
* macro is not defined, FreeType offers alternative LCD rendering
|
||||
* technology that produces excellent output without LCD filtering.
|
||||
* When this macro is not defined, FreeType offers alternative LCD
|
||||
* rendering technology that produces excellent output.
|
||||
*/
|
||||
/* #define FT_CONFIG_OPTION_SUBPIXEL_RENDERING */
|
||||
|
||||
@@ -222,6 +219,10 @@ FT_BEGIN_HEADER
|
||||
* 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.
|
||||
*
|
||||
* If you use the GNU make build system directly (that is, without the
|
||||
* `configure` script) and you define this macro, you also have to pass
|
||||
* `SYSTEM_ZLIB=yes` as an argument to make.
|
||||
*/
|
||||
/* #define FT_CONFIG_OPTION_SYSTEM_ZLIB */
|
||||
|
||||
@@ -292,6 +293,22 @@ FT_BEGIN_HEADER
|
||||
/* #define FT_CONFIG_OPTION_USE_HARFBUZZ */
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* Brotli support.
|
||||
*
|
||||
* FreeType uses the Brotli library to provide support for decompressing
|
||||
* WOFF2 streams.
|
||||
*
|
||||
* Define this macro if you want to enable this 'feature'.
|
||||
*
|
||||
* If you use a build system like cmake or the `configure` script,
|
||||
* options set by those programs have precedence, overwriting the value
|
||||
* here with the configured one.
|
||||
*/
|
||||
/* #define FT_CONFIG_OPTION_USE_BROTLI */
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* Glyph Postscript Names handling
|
||||
@@ -417,6 +434,23 @@ FT_BEGIN_HEADER
|
||||
/* #define FT_DEBUG_LEVEL_TRACE */
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* Logging
|
||||
*
|
||||
* Compiling FreeType in debug or trace mode makes FreeType write error
|
||||
* and trace log messages to `stderr`. Enabling this macro
|
||||
* automatically forces the `FT_DEBUG_LEVEL_ERROR` and
|
||||
* `FT_DEBUG_LEVEL_TRACE` macros and allows FreeType to write error and
|
||||
* trace log messages to a file instead of `stderr`. For writing logs
|
||||
* to a file, FreeType uses an the external `dlg` library (the source
|
||||
* code is in `src/dlg`).
|
||||
*
|
||||
* This option needs a C99 compiler.
|
||||
*/
|
||||
/* #define FT_DEBUG_LOGGING */
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* Autofitter debugging
|
||||
@@ -427,9 +461,9 @@ FT_BEGIN_HEADER
|
||||
* while compiling in 'release' mode):
|
||||
*
|
||||
* ```
|
||||
* _af_debug_disable_horz_hints
|
||||
* _af_debug_disable_vert_hints
|
||||
* _af_debug_disable_blue_hints
|
||||
* af_debug_disable_horz_hints_
|
||||
* af_debug_disable_vert_hints_
|
||||
* af_debug_disable_blue_hints_
|
||||
* ```
|
||||
*
|
||||
* Additionally, the following functions provide dumps of various
|
||||
@@ -446,7 +480,7 @@ FT_BEGIN_HEADER
|
||||
* As an argument, they use another global variable:
|
||||
*
|
||||
* ```
|
||||
* _af_debug_hints
|
||||
* af_debug_hints_
|
||||
* ```
|
||||
*
|
||||
* Please have a look at the `ftgrid` demo program to see how those
|
||||
@@ -493,6 +527,20 @@ FT_BEGIN_HEADER
|
||||
#undef FT_CONFIG_OPTION_USE_MODULE_ERRORS
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* OpenType SVG Glyph Support
|
||||
*
|
||||
* Setting this macro enables support for OpenType SVG glyphs. By
|
||||
* default, FreeType can only fetch SVG documents. However, it can also
|
||||
* render them if external rendering hook functions are plugged in at
|
||||
* runtime.
|
||||
*
|
||||
* More details on the hooks can be found in file `otsvg.h`.
|
||||
*/
|
||||
#define FT_CONFIG_OPTION_SVG
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* Error Strings
|
||||
@@ -526,7 +574,7 @@ FT_BEGIN_HEADER
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* Define `TT_CONFIG_OPTION_COLOR_LAYERS` if you want to support coloured
|
||||
* Define `TT_CONFIG_OPTION_COLOR_LAYERS` if you want to support colored
|
||||
* outlines (from the 'COLR'/'CPAL' tables) in all formats using the 'sfnt'
|
||||
* module (namely TrueType~& OpenType).
|
||||
*/
|
||||
@@ -536,12 +584,12 @@ FT_BEGIN_HEADER
|
||||
/**************************************************************************
|
||||
*
|
||||
* Define `TT_CONFIG_OPTION_POSTSCRIPT_NAMES` if you want to be able to
|
||||
* load and enumerate the glyph Postscript names in a TrueType or OpenType
|
||||
* load and enumerate Postscript names of glyphs in a TrueType or OpenType
|
||||
* file.
|
||||
*
|
||||
* Note that when you do not compile the 'psnames' module by undefining the
|
||||
* above `FT_CONFIG_OPTION_POSTSCRIPT_NAMES`, the 'sfnt' module will
|
||||
* contain additional code used to read the PS Names table from a font.
|
||||
* Note that if you do not compile the 'psnames' module by undefining the
|
||||
* above `FT_CONFIG_OPTION_POSTSCRIPT_NAMES` macro, the 'sfnt' module will
|
||||
* contain additional code to read the PostScript name table from a font.
|
||||
*
|
||||
* (By default, the module uses 'psnames' to extract glyph names.)
|
||||
*/
|
||||
@@ -613,36 +661,12 @@ FT_BEGIN_HEADER
|
||||
* not) instructions in a certain way so that all TrueType fonts look like
|
||||
* they do in a Windows ClearType (DirectWrite) environment. See [1] for a
|
||||
* technical overview on what this means. See `ttinterp.h` for more
|
||||
* details on the LEAN option.
|
||||
* details on this option.
|
||||
*
|
||||
* There are three possible values.
|
||||
*
|
||||
* Value 1:
|
||||
* This value is associated with the 'Infinality' moniker, contributed by
|
||||
* an individual nicknamed Infinality with the goal of making TrueType
|
||||
* fonts render better than on Windows. A high amount of configurability
|
||||
* and flexibility, down to rules for single glyphs in fonts, but also
|
||||
* very slow. Its experimental and slow nature and the original
|
||||
* developer losing interest meant that this option was never enabled in
|
||||
* default builds.
|
||||
*
|
||||
* The corresponding interpreter version is v38.
|
||||
*
|
||||
* Value 2:
|
||||
* The new default mode for the TrueType driver. The Infinality code
|
||||
* base was stripped to the bare minimum and all configurability removed
|
||||
* in the name of speed and simplicity. The configurability was mainly
|
||||
* aimed at legacy fonts like 'Arial', 'Times New Roman', or 'Courier'.
|
||||
* Legacy fonts are fonts that modify vertical stems to achieve clean
|
||||
* black-and-white bitmaps. The new mode focuses on applying a minimal
|
||||
* set of rules to all fonts indiscriminately so that modern and web
|
||||
* fonts render well while legacy fonts render okay.
|
||||
*
|
||||
* The corresponding interpreter version is v40.
|
||||
*
|
||||
* Value 3:
|
||||
* Compile both, making both v38 and v40 available (the latter is the
|
||||
* default).
|
||||
* The new default mode focuses on applying a minimal set of rules to all
|
||||
* fonts indiscriminately so that modern and web fonts render well while
|
||||
* legacy fonts render okay. The corresponding interpreter version is v40.
|
||||
* The so-called Infinality mode (v38) is no longer available in FreeType.
|
||||
*
|
||||
* By undefining these, you get rendering behavior like on Windows without
|
||||
* ClearType, i.e., Windows XP without ClearType enabled and Win9x
|
||||
@@ -657,9 +681,7 @@ FT_BEGIN_HEADER
|
||||
* [1]
|
||||
* https://www.microsoft.com/typography/cleartype/truetypecleartype.aspx
|
||||
*/
|
||||
/* #define TT_CONFIG_OPTION_SUBPIXEL_HINTING 1 */
|
||||
#define TT_CONFIG_OPTION_SUBPIXEL_HINTING 2
|
||||
/* #define TT_CONFIG_OPTION_SUBPIXEL_HINTING ( 1 | 2 ) */
|
||||
#define TT_CONFIG_OPTION_SUBPIXEL_HINTING
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
@@ -691,6 +713,24 @@ FT_BEGIN_HEADER
|
||||
#define TT_CONFIG_OPTION_GX_VAR_SUPPORT
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* Define `TT_CONFIG_OPTION_NO_BORING_EXPANSION` if you want to exclude
|
||||
* support for 'boring' OpenType specification expansions.
|
||||
*
|
||||
* https://github.com/harfbuzz/boring-expansion-spec
|
||||
*
|
||||
* Right now, the following features are covered:
|
||||
*
|
||||
* - 'avar' version 2.0
|
||||
*
|
||||
* Most likely, this is a temporary configuration option to be removed in
|
||||
* the near future, since it is assumed that eventually those features are
|
||||
* added to the OpenType standard.
|
||||
*/
|
||||
/* #define TT_CONFIG_OPTION_NO_BORING_EXPANSION */
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* Define `TT_CONFIG_OPTION_BDF` if you want to include support for an
|
||||
@@ -871,27 +911,11 @@ FT_BEGIN_HEADER
|
||||
*
|
||||
* Compile 'autofit' module with fallback Indic script support, covering
|
||||
* some scripts that the 'latin' submodule of the 'autofit' module doesn't
|
||||
* (yet) handle.
|
||||
* (yet) handle. Currently, this needs option `AF_CONFIG_OPTION_CJK`.
|
||||
*/
|
||||
#ifdef AF_CONFIG_OPTION_CJK
|
||||
#define AF_CONFIG_OPTION_INDIC
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* Compile 'autofit' module with warp hinting. The idea of the warping
|
||||
* code is to slightly scale and shift a glyph within a single dimension so
|
||||
* that as much of its segments are aligned (more or less) on the grid. To
|
||||
* find out the optimal scaling and shifting value, various parameter
|
||||
* combinations are tried and scored.
|
||||
*
|
||||
* You can switch warping on and off with the `warping` property of the
|
||||
* auto-hinter (see file `ftdriver.h` for more information; by default it
|
||||
* is switched off).
|
||||
*
|
||||
* This experimental option is not active if the rendering mode is
|
||||
* `FT_RENDER_MODE_LIGHT`.
|
||||
*/
|
||||
#define AF_CONFIG_OPTION_USE_WARPER
|
||||
#endif
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
@@ -927,21 +951,29 @@ FT_BEGIN_HEADER
|
||||
|
||||
|
||||
/*
|
||||
* The next three macros are defined if native TrueType hinting is
|
||||
* The next two macros are defined if native TrueType hinting is
|
||||
* requested by the definitions above. Don't change this.
|
||||
*/
|
||||
#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER
|
||||
#define TT_USE_BYTECODE_INTERPRETER
|
||||
|
||||
#ifdef TT_CONFIG_OPTION_SUBPIXEL_HINTING
|
||||
#if TT_CONFIG_OPTION_SUBPIXEL_HINTING & 1
|
||||
#define TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
|
||||
#endif
|
||||
|
||||
#if TT_CONFIG_OPTION_SUBPIXEL_HINTING & 2
|
||||
#define TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
* The TT_SUPPORT_COLRV1 macro is defined to indicate to clients that this
|
||||
* version of FreeType has support for 'COLR' v1 API. This definition is
|
||||
* useful to FreeType clients that want to build in support for 'COLR' v1
|
||||
* depending on a tip-of-tree checkout before it is officially released in
|
||||
* FreeType, and while the feature cannot yet be tested against using
|
||||
* version macros. Don't change this macro. This may be removed once the
|
||||
* feature is in a FreeType release version and version macros can be used
|
||||
* to test for availability.
|
||||
*/
|
||||
#ifdef TT_CONFIG_OPTION_COLOR_LAYERS
|
||||
#define TT_SUPPORT_COLRV1
|
||||
#endif
|
||||
|
||||
|
||||
@@ -973,8 +1005,8 @@ FT_BEGIN_HEADER
|
||||
#error "Invalid CFF darkening parameters!"
|
||||
#endif
|
||||
|
||||
FT_END_HEADER
|
||||
|
||||
FT_END_HEADER
|
||||
|
||||
#endif /* FTOPTION_H_ */
|
||||
|
||||
|
||||
28
Source/ThirdParty/freetype/config/ftstdlib.h
vendored
28
Source/ThirdParty/freetype/config/ftstdlib.h
vendored
@@ -5,7 +5,7 @@
|
||||
* ANSI-specific library and header configuration file (specification
|
||||
* only).
|
||||
*
|
||||
* Copyright (C) 2002-2019 by
|
||||
* Copyright (C) 2002-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
@@ -43,7 +43,8 @@
|
||||
*
|
||||
* `UINT_MAX` and `ULONG_MAX` are used to automatically compute the size of
|
||||
* `int` and `long` in bytes at compile-time. So far, this works for all
|
||||
* platforms the library has been tested on.
|
||||
* platforms the library has been tested on. We also check `ULLONG_MAX`
|
||||
* to see whether we can use 64-bit `long long` later on.
|
||||
*
|
||||
* Note that on the extremely rare platforms that do not provide integer
|
||||
* types that are _exactly_ 16 and 32~bits wide (e.g., some old Crays where
|
||||
@@ -66,6 +67,15 @@
|
||||
#define FT_LONG_MIN LONG_MIN
|
||||
#define FT_LONG_MAX LONG_MAX
|
||||
#define FT_ULONG_MAX ULONG_MAX
|
||||
#ifdef LLONG_MAX
|
||||
#define FT_LLONG_MAX LLONG_MAX
|
||||
#endif
|
||||
#ifdef LLONG_MIN
|
||||
#define FT_LLONG_MIN LLONG_MIN
|
||||
#endif
|
||||
#ifdef ULLONG_MAX
|
||||
#define FT_ULLONG_MAX ULLONG_MAX
|
||||
#endif
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
@@ -101,13 +111,13 @@
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#define FT_FILE FILE
|
||||
#define ft_fclose fclose
|
||||
#define ft_fopen fopen
|
||||
#define ft_fread fread
|
||||
#define ft_fseek fseek
|
||||
#define ft_ftell ftell
|
||||
#define ft_sprintf sprintf
|
||||
#define FT_FILE FILE
|
||||
#define ft_fclose fclose
|
||||
#define ft_fopen fopen
|
||||
#define ft_fread fread
|
||||
#define ft_fseek fseek
|
||||
#define ft_ftell ftell
|
||||
#define ft_snprintf snprintf
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
|
||||
250
Source/ThirdParty/freetype/config/integer-types.h
vendored
Normal file
250
Source/ThirdParty/freetype/config/integer-types.h
vendored
Normal file
@@ -0,0 +1,250 @@
|
||||
/****************************************************************************
|
||||
*
|
||||
* config/integer-types.h
|
||||
*
|
||||
* FreeType integer types definitions.
|
||||
*
|
||||
* Copyright (C) 1996-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
* modified, and distributed under the terms of the FreeType project
|
||||
* license, LICENSE.TXT. By continuing to use, modify, or distribute
|
||||
* this file you indicate that you have read the license and
|
||||
* understand and accept it fully.
|
||||
*
|
||||
*/
|
||||
#ifndef FREETYPE_CONFIG_INTEGER_TYPES_H_
|
||||
#define FREETYPE_CONFIG_INTEGER_TYPES_H_
|
||||
|
||||
/* 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 */
|
||||
/* `int` has 16~bits also for this system, `sizeof(int)` gives~1 which */
|
||||
/* is probably unexpected. */
|
||||
/* */
|
||||
/* `CHAR_BIT` (defined in `limits.h`) gives the number of bits in a */
|
||||
/* `char` type. */
|
||||
|
||||
#ifndef FT_CHAR_BIT
|
||||
#define FT_CHAR_BIT CHAR_BIT
|
||||
#endif
|
||||
|
||||
#ifndef FT_SIZEOF_INT
|
||||
|
||||
/* The size of an `int` type. */
|
||||
#if FT_UINT_MAX == 0xFFFFUL
|
||||
#define FT_SIZEOF_INT ( 16 / FT_CHAR_BIT )
|
||||
#elif FT_UINT_MAX == 0xFFFFFFFFUL
|
||||
#define FT_SIZEOF_INT ( 32 / FT_CHAR_BIT )
|
||||
#elif FT_UINT_MAX > 0xFFFFFFFFUL && FT_UINT_MAX == 0xFFFFFFFFFFFFFFFFUL
|
||||
#define FT_SIZEOF_INT ( 64 / FT_CHAR_BIT )
|
||||
#else
|
||||
#error "Unsupported size of `int' type!"
|
||||
#endif
|
||||
|
||||
#endif /* !defined(FT_SIZEOF_INT) */
|
||||
|
||||
#ifndef FT_SIZEOF_LONG
|
||||
|
||||
/* The size of a `long` type. A five-byte `long` (as used e.g. on the */
|
||||
/* DM642) is recognized but avoided. */
|
||||
#if FT_ULONG_MAX == 0xFFFFFFFFUL
|
||||
#define FT_SIZEOF_LONG ( 32 / FT_CHAR_BIT )
|
||||
#elif FT_ULONG_MAX > 0xFFFFFFFFUL && FT_ULONG_MAX == 0xFFFFFFFFFFUL
|
||||
#define FT_SIZEOF_LONG ( 32 / FT_CHAR_BIT )
|
||||
#elif FT_ULONG_MAX > 0xFFFFFFFFUL && FT_ULONG_MAX == 0xFFFFFFFFFFFFFFFFUL
|
||||
#define FT_SIZEOF_LONG ( 64 / FT_CHAR_BIT )
|
||||
#else
|
||||
#error "Unsupported size of `long' type!"
|
||||
#endif
|
||||
|
||||
#endif /* !defined(FT_SIZEOF_LONG) */
|
||||
|
||||
#ifndef FT_SIZEOF_LONG_LONG
|
||||
|
||||
/* The size of a `long long` type if available */
|
||||
#if defined( FT_ULLONG_MAX ) && FT_ULLONG_MAX >= 0xFFFFFFFFFFFFFFFFULL
|
||||
#define FT_SIZEOF_LONG_LONG ( 64 / FT_CHAR_BIT )
|
||||
#else
|
||||
#define FT_SIZEOF_LONG_LONG 0
|
||||
#endif
|
||||
|
||||
#endif /* !defined(FT_SIZEOF_LONG_LONG) */
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @section:
|
||||
* basic_types
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @type:
|
||||
* FT_Int16
|
||||
*
|
||||
* @description:
|
||||
* A typedef for a 16bit signed integer type.
|
||||
*/
|
||||
typedef signed short FT_Int16;
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @type:
|
||||
* FT_UInt16
|
||||
*
|
||||
* @description:
|
||||
* A typedef for a 16bit unsigned integer type.
|
||||
*/
|
||||
typedef unsigned short FT_UInt16;
|
||||
|
||||
/* */
|
||||
|
||||
|
||||
/* this #if 0 ... #endif clause is for documentation purposes */
|
||||
#if 0
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @type:
|
||||
* FT_Int32
|
||||
*
|
||||
* @description:
|
||||
* A typedef for a 32bit signed integer type. The size depends on the
|
||||
* configuration.
|
||||
*/
|
||||
typedef signed XXX FT_Int32;
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @type:
|
||||
* FT_UInt32
|
||||
*
|
||||
* A typedef for a 32bit unsigned integer type. The size depends on the
|
||||
* configuration.
|
||||
*/
|
||||
typedef unsigned XXX FT_UInt32;
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @type:
|
||||
* FT_Int64
|
||||
*
|
||||
* A typedef for a 64bit signed integer type. The size depends on the
|
||||
* configuration. Only defined if there is real 64bit support;
|
||||
* otherwise, it gets emulated with a structure (if necessary).
|
||||
*/
|
||||
typedef signed XXX FT_Int64;
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @type:
|
||||
* FT_UInt64
|
||||
*
|
||||
* A typedef for a 64bit unsigned integer type. The size depends on the
|
||||
* configuration. Only defined if there is real 64bit support;
|
||||
* otherwise, it gets emulated with a structure (if necessary).
|
||||
*/
|
||||
typedef unsigned XXX FT_UInt64;
|
||||
|
||||
/* */
|
||||
|
||||
#endif
|
||||
|
||||
#if FT_SIZEOF_INT == ( 32 / FT_CHAR_BIT )
|
||||
|
||||
typedef signed int FT_Int32;
|
||||
typedef unsigned int FT_UInt32;
|
||||
|
||||
#elif FT_SIZEOF_LONG == ( 32 / FT_CHAR_BIT )
|
||||
|
||||
typedef signed long FT_Int32;
|
||||
typedef unsigned long FT_UInt32;
|
||||
|
||||
#else
|
||||
#error "no 32bit type found -- please check your configuration files"
|
||||
#endif
|
||||
|
||||
|
||||
/* look up an integer type that is at least 32~bits */
|
||||
#if FT_SIZEOF_INT >= ( 32 / FT_CHAR_BIT )
|
||||
|
||||
typedef int FT_Fast;
|
||||
typedef unsigned int FT_UFast;
|
||||
|
||||
#elif FT_SIZEOF_LONG >= ( 32 / FT_CHAR_BIT )
|
||||
|
||||
typedef long FT_Fast;
|
||||
typedef unsigned long FT_UFast;
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
/* determine whether we have a 64-bit integer type */
|
||||
#if FT_SIZEOF_LONG == ( 64 / FT_CHAR_BIT )
|
||||
|
||||
#define FT_INT64 long
|
||||
#define FT_UINT64 unsigned long
|
||||
|
||||
#elif FT_SIZEOF_LONG_LONG >= ( 64 / FT_CHAR_BIT )
|
||||
|
||||
#define FT_INT64 long long int
|
||||
#define FT_UINT64 unsigned long long int
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* A 64-bit data type may create compilation problems if you compile in
|
||||
* strict ANSI mode. To avoid them, we disable other 64-bit data types if
|
||||
* `__STDC__` is defined. You can however ignore this rule by defining the
|
||||
* `FT_CONFIG_OPTION_FORCE_INT64` configuration macro.
|
||||
*/
|
||||
#elif !defined( __STDC__ ) || defined( FT_CONFIG_OPTION_FORCE_INT64 )
|
||||
|
||||
#if defined( _MSC_VER ) && _MSC_VER >= 900 /* Visual C++ (and Intel C++) */
|
||||
|
||||
/* this compiler provides the `__int64` type */
|
||||
#define FT_INT64 __int64
|
||||
#define FT_UINT64 unsigned __int64
|
||||
|
||||
#elif defined( __BORLANDC__ ) /* Borland C++ */
|
||||
|
||||
/* XXXX: We should probably check the value of `__BORLANDC__` in order */
|
||||
/* to test the compiler version. */
|
||||
|
||||
/* this compiler provides the `__int64` type */
|
||||
#define FT_INT64 __int64
|
||||
#define FT_UINT64 unsigned __int64
|
||||
|
||||
#elif defined( __WATCOMC__ ) && __WATCOMC__ >= 1100 /* Watcom C++ */
|
||||
|
||||
#define FT_INT64 long long int
|
||||
#define FT_UINT64 unsigned long long int
|
||||
|
||||
#elif defined( __MWERKS__ ) /* Metrowerks CodeWarrior */
|
||||
|
||||
#define FT_INT64 long long int
|
||||
#define FT_UINT64 unsigned long long int
|
||||
|
||||
#elif defined( __GNUC__ )
|
||||
|
||||
/* GCC provides the `long long` type */
|
||||
#define FT_INT64 long long int
|
||||
#define FT_UINT64 unsigned long long int
|
||||
|
||||
#endif /* !__STDC__ */
|
||||
|
||||
#endif /* FT_SIZEOF_LONG == (64 / FT_CHAR_BIT) */
|
||||
|
||||
#ifdef FT_INT64
|
||||
typedef FT_INT64 FT_Int64;
|
||||
typedef FT_UINT64 FT_UInt64;
|
||||
#endif
|
||||
|
||||
|
||||
#endif /* FREETYPE_CONFIG_INTEGER_TYPES_H_ */
|
||||
49
Source/ThirdParty/freetype/config/mac-support.h
vendored
Normal file
49
Source/ThirdParty/freetype/config/mac-support.h
vendored
Normal file
@@ -0,0 +1,49 @@
|
||||
/****************************************************************************
|
||||
*
|
||||
* config/mac-support.h
|
||||
*
|
||||
* Mac/OS X support configuration header.
|
||||
*
|
||||
* Copyright (C) 1996-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
* modified, and distributed under the terms of the FreeType project
|
||||
* license, LICENSE.TXT. By continuing to use, modify, or distribute
|
||||
* this file you indicate that you have read the license and
|
||||
* understand and accept it fully.
|
||||
*
|
||||
*/
|
||||
#ifndef FREETYPE_CONFIG_MAC_SUPPORT_H_
|
||||
#define FREETYPE_CONFIG_MAC_SUPPORT_H_
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* Mac support
|
||||
*
|
||||
* This is the only necessary change, so it is defined here instead
|
||||
* providing a new configuration file.
|
||||
*/
|
||||
#if defined( __APPLE__ ) || ( defined( __MWERKS__ ) && defined( macintosh ) )
|
||||
/* No Carbon frameworks for 64bit 10.4.x. */
|
||||
/* `AvailabilityMacros.h` is available since Mac OS X 10.2, */
|
||||
/* so guess the system version by maximum errno before inclusion. */
|
||||
#include <errno.h>
|
||||
#ifdef ECANCELED /* defined since 10.2 */
|
||||
#include "AvailabilityMacros.h"
|
||||
#endif
|
||||
#if defined( __LP64__ ) && \
|
||||
( MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 )
|
||||
#undef FT_MACINTOSH
|
||||
#endif
|
||||
|
||||
#elif defined( __SC__ ) || defined( __MRC__ )
|
||||
/* Classic MacOS compilers */
|
||||
#include "ConditionalMacros.h"
|
||||
#if TARGET_OS_MAC
|
||||
#define FT_MACINTOSH 1
|
||||
#endif
|
||||
|
||||
#endif /* Mac support */
|
||||
|
||||
#endif /* FREETYPE_CONFIG_MAC_SUPPORT_H_ */
|
||||
138
Source/ThirdParty/freetype/config/public-macros.h
vendored
Normal file
138
Source/ThirdParty/freetype/config/public-macros.h
vendored
Normal file
@@ -0,0 +1,138 @@
|
||||
/****************************************************************************
|
||||
*
|
||||
* config/public-macros.h
|
||||
*
|
||||
* Define a set of compiler macros used in public FreeType headers.
|
||||
*
|
||||
* Copyright (C) 2020-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
* modified, and distributed under the terms of the FreeType project
|
||||
* license, LICENSE.TXT. By continuing to use, modify, or distribute
|
||||
* this file you indicate that you have read the license and
|
||||
* understand and accept it fully.
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* The definitions in this file are used by the public FreeType headers
|
||||
* and thus should be considered part of the public API.
|
||||
*
|
||||
* Other compiler-specific macro definitions that are not exposed by the
|
||||
* FreeType API should go into
|
||||
* `include/freetype/internal/compiler-macros.h` instead.
|
||||
*/
|
||||
#ifndef FREETYPE_CONFIG_PUBLIC_MACROS_H_
|
||||
#define FREETYPE_CONFIG_PUBLIC_MACROS_H_
|
||||
|
||||
/*
|
||||
* `FT_BEGIN_HEADER` and `FT_END_HEADER` might have already been defined
|
||||
* by `freetype/config/ftheader.h`, but we don't want to include this
|
||||
* header here, so redefine the macros here only when needed. Their
|
||||
* definition is very stable, so keeping them in sync with the ones in the
|
||||
* header should not be a maintenance issue.
|
||||
*/
|
||||
#ifndef FT_BEGIN_HEADER
|
||||
#ifdef __cplusplus
|
||||
#define FT_BEGIN_HEADER extern "C" {
|
||||
#else
|
||||
#define FT_BEGIN_HEADER /* empty */
|
||||
#endif
|
||||
#endif /* FT_BEGIN_HEADER */
|
||||
|
||||
#ifndef FT_END_HEADER
|
||||
#ifdef __cplusplus
|
||||
#define FT_END_HEADER }
|
||||
#else
|
||||
#define FT_END_HEADER /* empty */
|
||||
#endif
|
||||
#endif /* FT_END_HEADER */
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
/*
|
||||
* Mark a function declaration as public. This ensures it will be
|
||||
* properly exported to client code. Place this before a function
|
||||
* declaration.
|
||||
*
|
||||
* NOTE: This macro should be considered an internal implementation
|
||||
* detail, and not part of the FreeType API. It is only defined here
|
||||
* because it is needed by `FT_EXPORT`.
|
||||
*/
|
||||
|
||||
/* Visual C, mingw */
|
||||
#if defined( _WIN32 )
|
||||
|
||||
#if defined( FT2_BUILD_LIBRARY ) && defined( DLL_EXPORT )
|
||||
#define FT_PUBLIC_FUNCTION_ATTRIBUTE __declspec( dllexport )
|
||||
#elif defined( DLL_IMPORT )
|
||||
#define FT_PUBLIC_FUNCTION_ATTRIBUTE __declspec( dllimport )
|
||||
#endif
|
||||
|
||||
/* gcc, clang */
|
||||
#elif ( defined( __GNUC__ ) && __GNUC__ >= 4 ) || defined( __clang__ )
|
||||
#define FT_PUBLIC_FUNCTION_ATTRIBUTE \
|
||||
__attribute__(( visibility( "default" ) ))
|
||||
|
||||
/* Sun */
|
||||
#elif defined( __SUNPRO_C ) && __SUNPRO_C >= 0x550
|
||||
#define FT_PUBLIC_FUNCTION_ATTRIBUTE __global
|
||||
#endif
|
||||
|
||||
|
||||
#ifndef FT_PUBLIC_FUNCTION_ATTRIBUTE
|
||||
#define FT_PUBLIC_FUNCTION_ATTRIBUTE /* empty */
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
* Define a public FreeType API function. This ensures it is properly
|
||||
* exported or imported at build time. The macro parameter is the
|
||||
* function's return type as in:
|
||||
*
|
||||
* FT_EXPORT( FT_Bool )
|
||||
* FT_Object_Method( FT_Object obj,
|
||||
* ... );
|
||||
*
|
||||
* NOTE: This requires that all `FT_EXPORT` uses are inside
|
||||
* `FT_BEGIN_HEADER ... FT_END_HEADER` blocks. This guarantees that the
|
||||
* functions are exported with C linkage, even when the header is included
|
||||
* by a C++ source file.
|
||||
*/
|
||||
#define FT_EXPORT( x ) FT_PUBLIC_FUNCTION_ATTRIBUTE extern x
|
||||
|
||||
|
||||
/*
|
||||
* `FT_UNUSED` indicates that a given parameter is not used -- this is
|
||||
* only used to get rid of unpleasant compiler warnings.
|
||||
*
|
||||
* Technically, this was not meant to be part of the public API, but some
|
||||
* third-party code depends on it.
|
||||
*/
|
||||
#ifndef FT_UNUSED
|
||||
#define FT_UNUSED( arg ) ( (arg) = (arg) )
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
* Support for casts in both C and C++.
|
||||
*/
|
||||
#ifdef __cplusplus
|
||||
#define FT_STATIC_CAST( type, var ) static_cast<type>(var)
|
||||
#define FT_REINTERPRET_CAST( type, var ) reinterpret_cast<type>(var)
|
||||
|
||||
#define FT_STATIC_BYTE_CAST( type, var ) \
|
||||
static_cast<type>( static_cast<unsigned char>( var ) )
|
||||
#else
|
||||
#define FT_STATIC_CAST( type, var ) (type)(var)
|
||||
#define FT_REINTERPRET_CAST( type, var ) (type)(var)
|
||||
|
||||
#define FT_STATIC_BYTE_CAST( type, var ) (type)(unsigned char)(var)
|
||||
#endif
|
||||
|
||||
|
||||
FT_END_HEADER
|
||||
|
||||
#endif /* FREETYPE_CONFIG_PUBLIC_MACROS_H_ */
|
||||
1573
Source/ThirdParty/freetype/freetype.h
vendored
1573
Source/ThirdParty/freetype/freetype.h
vendored
File diff suppressed because it is too large
Load Diff
10
Source/ThirdParty/freetype/ft2build.h
vendored
10
Source/ThirdParty/freetype/ft2build.h
vendored
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* FreeType 2 build and setup macros.
|
||||
*
|
||||
* Copyright (C) 1996-2019 by
|
||||
* Copyright (C) 1996-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
@@ -18,16 +18,14 @@
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* This is the 'entry point' for FreeType header file inclusions. It is
|
||||
* the only header file which should be included directly; all other
|
||||
* FreeType header files should be accessed with macro names (after
|
||||
* including `ft2build.h`).
|
||||
* This is the 'entry point' for FreeType header file inclusions, to be
|
||||
* loaded before all other header files.
|
||||
*
|
||||
* A typical example is
|
||||
*
|
||||
* ```
|
||||
* #include <ft2build.h>
|
||||
* #include FT_FREETYPE_H
|
||||
* #include <freetype/freetype.h>
|
||||
* ```
|
||||
*
|
||||
*/
|
||||
|
||||
6
Source/ThirdParty/freetype/ftadvanc.h
vendored
6
Source/ThirdParty/freetype/ftadvanc.h
vendored
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* Quick computation of advance widths (specification only).
|
||||
*
|
||||
* Copyright (C) 2008-2019 by
|
||||
* Copyright (C) 2008-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
@@ -20,8 +20,7 @@
|
||||
#define FTADVANC_H_
|
||||
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_FREETYPE_H
|
||||
#include <freetype/freetype.h>
|
||||
|
||||
#ifdef FREETYPE_H
|
||||
#error "freetype.h of FreeType 1 has been loaded!"
|
||||
@@ -96,6 +95,7 @@ FT_BEGIN_HEADER
|
||||
* load_flags ::
|
||||
* A set of bit flags similar to those used when calling
|
||||
* @FT_Load_Glyph, used to determine what kind of advances you need.
|
||||
*
|
||||
* @output:
|
||||
* padvance ::
|
||||
* The advance value. If scaling is performed (based on the value of
|
||||
|
||||
5
Source/ThirdParty/freetype/ftbbox.h
vendored
5
Source/ThirdParty/freetype/ftbbox.h
vendored
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* FreeType exact bbox computation (specification).
|
||||
*
|
||||
* Copyright (C) 1996-2019 by
|
||||
* Copyright (C) 1996-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
@@ -31,8 +31,7 @@
|
||||
#define FTBBOX_H_
|
||||
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_FREETYPE_H
|
||||
#include <freetype/freetype.h>
|
||||
|
||||
#ifdef FREETYPE_H
|
||||
#error "freetype.h of FreeType 1 has been loaded!"
|
||||
|
||||
5
Source/ThirdParty/freetype/ftbdf.h
vendored
5
Source/ThirdParty/freetype/ftbdf.h
vendored
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* FreeType API for accessing BDF-specific strings (specification).
|
||||
*
|
||||
* Copyright (C) 2002-2019 by
|
||||
* Copyright (C) 2002-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
@@ -19,8 +19,7 @@
|
||||
#ifndef FTBDF_H_
|
||||
#define FTBDF_H_
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_FREETYPE_H
|
||||
#include <freetype/freetype.h>
|
||||
|
||||
#ifdef FREETYPE_H
|
||||
#error "freetype.h of FreeType 1 has been loaded!"
|
||||
|
||||
7
Source/ThirdParty/freetype/ftbitmap.h
vendored
7
Source/ThirdParty/freetype/ftbitmap.h
vendored
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* FreeType utility functions for bitmaps (specification).
|
||||
*
|
||||
* Copyright (C) 2004-2019 by
|
||||
* Copyright (C) 2004-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
@@ -20,9 +20,8 @@
|
||||
#define FTBITMAP_H_
|
||||
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_FREETYPE_H
|
||||
#include FT_COLOR_H
|
||||
#include <freetype/freetype.h>
|
||||
#include <freetype/ftcolor.h>
|
||||
|
||||
#ifdef FREETYPE_H
|
||||
#error "freetype.h of FreeType 1 has been loaded!"
|
||||
|
||||
24
Source/ThirdParty/freetype/ftbzip2.h
vendored
24
Source/ThirdParty/freetype/ftbzip2.h
vendored
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* Bzip2-compressed stream support.
|
||||
*
|
||||
* Copyright (C) 2010-2019 by
|
||||
* Copyright (C) 2010-2023 by
|
||||
* Joel Klinghed.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
@@ -19,8 +19,7 @@
|
||||
#ifndef FTBZIP2_H_
|
||||
#define FTBZIP2_H_
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_FREETYPE_H
|
||||
#include <freetype/freetype.h>
|
||||
|
||||
#ifdef FREETYPE_H
|
||||
#error "freetype.h of FreeType 1 has been loaded!"
|
||||
@@ -43,6 +42,16 @@ FT_BEGIN_HEADER
|
||||
* Using bzip2-compressed font files.
|
||||
*
|
||||
* @description:
|
||||
* In certain builds of the library, bzip2 compression recognition is
|
||||
* automatically handled when calling @FT_New_Face or @FT_Open_Face.
|
||||
* This means that if no font driver is capable of handling the raw
|
||||
* compressed file, the library will try to open a bzip2 compressed
|
||||
* stream from it and re-open the face with it.
|
||||
*
|
||||
* The stream implementation is very basic and resets the decompression
|
||||
* process each time seeking backwards is needed within the stream,
|
||||
* which significantly undermines the performance.
|
||||
*
|
||||
* This section contains the declaration of Bzip2-specific functions.
|
||||
*
|
||||
*/
|
||||
@@ -75,15 +84,6 @@ FT_BEGIN_HEADER
|
||||
* **not** call `FT_Stream_Close` on the source stream. None of the
|
||||
* stream objects will be released to the heap.
|
||||
*
|
||||
* The stream implementation is very basic and resets the decompression
|
||||
* process each time seeking backwards is needed within the stream.
|
||||
*
|
||||
* In certain builds of the library, bzip2 compression recognition is
|
||||
* automatically handled when calling @FT_New_Face or @FT_Open_Face.
|
||||
* This means that if no font driver is capable of handling the raw
|
||||
* compressed file, the library will try to open a bzip2 compressed
|
||||
* stream from it and re-open the face with it.
|
||||
*
|
||||
* This function may return `FT_Err_Unimplemented_Feature` if your build
|
||||
* of FreeType was not compiled with bzip2 support.
|
||||
*/
|
||||
|
||||
81
Source/ThirdParty/freetype/ftcache.h
vendored
81
Source/ThirdParty/freetype/ftcache.h
vendored
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* FreeType Cache subsystem (specification).
|
||||
*
|
||||
* Copyright (C) 1996-2019 by
|
||||
* Copyright (C) 1996-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
@@ -20,8 +20,7 @@
|
||||
#define FTCACHE_H_
|
||||
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_GLYPH_H
|
||||
#include <freetype/ftglyph.h>
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
@@ -44,61 +43,61 @@ FT_BEGIN_HEADER
|
||||
* objects, as well as caching information like character maps and glyph
|
||||
* images while limiting their maximum memory usage.
|
||||
*
|
||||
* Note that all types and functions begin with the `FTC_` prefix.
|
||||
* Note that all types and functions begin with the `FTC_` prefix rather
|
||||
* than the usual `FT_` prefix in the rest of FreeType.
|
||||
*
|
||||
* The cache is highly portable and thus doesn't know anything about the
|
||||
* fonts installed on your system, or how to access them. This implies
|
||||
* the following scheme:
|
||||
* The cache is highly portable and, thus, doesn't know anything about
|
||||
* the fonts installed on your system, or how to access them. Therefore,
|
||||
* it requires the following.
|
||||
*
|
||||
* First, available or installed font faces are uniquely identified by
|
||||
* @FTC_FaceID values, provided to the cache by the client. Note that
|
||||
* the cache only stores and compares these values, and doesn't try to
|
||||
* interpret them in any way.
|
||||
* * @FTC_FaceID, an arbitrary non-zero value that uniquely identifies
|
||||
* available or installed font faces, has to be provided to the
|
||||
* cache by the client. Note that the cache only stores and compares
|
||||
* these values and doesn't try to interpret them in any way, but they
|
||||
* have to be persistent on the client side.
|
||||
*
|
||||
* Second, the cache calls, only when needed, a client-provided function
|
||||
* to convert an @FTC_FaceID into a new @FT_Face object. The latter is
|
||||
* then completely managed by the cache, including its termination
|
||||
* through @FT_Done_Face. To monitor termination of face objects, the
|
||||
* finalizer callback in the `generic` field of the @FT_Face object can
|
||||
* be used, which might also be used to store the @FTC_FaceID of the
|
||||
* face.
|
||||
* * @FTC_Face_Requester, a method to convert an @FTC_FaceID into a new
|
||||
* @FT_Face object when necessary, has to be provided to the cache by
|
||||
* the client. The @FT_Face object is completely managed by the cache,
|
||||
* including its termination through @FT_Done_Face. To monitor
|
||||
* termination of face objects, the finalizer callback in the `generic`
|
||||
* field of the @FT_Face object can be used, which might also be used
|
||||
* to store the @FTC_FaceID of the face.
|
||||
*
|
||||
* Clients are free to map face IDs to anything else. The most simple
|
||||
* usage is to associate them to a (pathname,face_index) pair that is
|
||||
* used to call @FT_New_Face. However, more complex schemes are also
|
||||
* possible.
|
||||
* Clients are free to map face IDs to anything useful. The most simple
|
||||
* usage is, for example, to associate them to a `{pathname,face_index}`
|
||||
* pair that is then used by @FTC_Face_Requester to call @FT_New_Face.
|
||||
* However, more complex schemes are also possible.
|
||||
*
|
||||
* Note that for the cache to work correctly, the face ID values must be
|
||||
* **persistent**, which means that the contents they point to should not
|
||||
* change at runtime, or that their value should not become invalid.
|
||||
*
|
||||
* If this is unavoidable (e.g., when a font is uninstalled at runtime),
|
||||
* you should call @FTC_Manager_RemoveFaceID as soon as possible, to let
|
||||
* you should call @FTC_Manager_RemoveFaceID as soon as possible to let
|
||||
* the cache get rid of any references to the old @FTC_FaceID it may keep
|
||||
* internally. Failure to do so will lead to incorrect behaviour or even
|
||||
* crashes.
|
||||
* crashes in @FTC_Face_Requester.
|
||||
*
|
||||
* To use the cache, start with calling @FTC_Manager_New to create a new
|
||||
* @FTC_Manager object, which models a single cache instance. You can
|
||||
* then look up @FT_Face and @FT_Size objects with
|
||||
* @FTC_Manager_LookupFace and @FTC_Manager_LookupSize, respectively.
|
||||
* @FTC_Manager_LookupFace and @FTC_Manager_LookupSize, respectively, and
|
||||
* use them in any FreeType work stream. You can also cache other
|
||||
* FreeType objects as follows.
|
||||
*
|
||||
* If you want to use the charmap caching, call @FTC_CMapCache_New, then
|
||||
* later use @FTC_CMapCache_Lookup to perform the equivalent of
|
||||
* @FT_Get_Char_Index, only much faster.
|
||||
* * If you want to use the charmap caching, call @FTC_CMapCache_New,
|
||||
* then later use @FTC_CMapCache_Lookup to perform the equivalent of
|
||||
* @FT_Get_Char_Index, only much faster.
|
||||
*
|
||||
* If you want to use the @FT_Glyph caching, call @FTC_ImageCache, then
|
||||
* later use @FTC_ImageCache_Lookup to retrieve the corresponding
|
||||
* @FT_Glyph objects from the cache.
|
||||
*
|
||||
* If you need lots of small bitmaps, it is much more memory efficient to
|
||||
* call @FTC_SBitCache_New followed by @FTC_SBitCache_Lookup. This
|
||||
* returns @FTC_SBitRec structures, which are used to store small bitmaps
|
||||
* directly. (A small bitmap is one whose metrics and dimensions all fit
|
||||
* into 8-bit integers).
|
||||
*
|
||||
* We hope to also provide a kerning cache in the near future.
|
||||
* * If you want to use the @FT_Glyph caching, call @FTC_ImageCache_New,
|
||||
* then later use @FTC_ImageCache_Lookup to retrieve the corresponding
|
||||
* @FT_Glyph objects from the cache.
|
||||
*
|
||||
* * If you need lots of small bitmaps, it is much more memory-efficient
|
||||
* to call @FTC_SBitCache_New followed by @FTC_SBitCache_Lookup. This
|
||||
* returns @FTC_SBitRec structures, which are used to store small
|
||||
* bitmaps directly. (A small bitmap is one whose metrics and
|
||||
* dimensions all fit into 8-bit integers).
|
||||
*
|
||||
* @order:
|
||||
* FTC_Manager
|
||||
@@ -425,7 +424,7 @@ FT_BEGIN_HEADER
|
||||
* pixel ::
|
||||
* A Boolean. If 1, the `width` and `height` fields are interpreted as
|
||||
* integer pixel character sizes. Otherwise, they are expressed as
|
||||
* 1/64th of points.
|
||||
* 1/64 of points.
|
||||
*
|
||||
* x_res ::
|
||||
* Only used when `pixel` is value~0 to indicate the horizontal
|
||||
|
||||
27
Source/ThirdParty/freetype/ftchapters.h
vendored
27
Source/ThirdParty/freetype/ftchapters.h
vendored
@@ -15,6 +15,7 @@
|
||||
* General Remarks
|
||||
*
|
||||
* @sections:
|
||||
* preamble
|
||||
* header_inclusion
|
||||
* user_allocation
|
||||
*
|
||||
@@ -30,9 +31,28 @@
|
||||
* Core API
|
||||
*
|
||||
* @sections:
|
||||
* version
|
||||
* basic_types
|
||||
* base_interface
|
||||
* library_setup
|
||||
* face_creation
|
||||
* font_testing_macros
|
||||
* sizing_and_scaling
|
||||
* glyph_retrieval
|
||||
* character_mapping
|
||||
* information_retrieval
|
||||
* other_api_data
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @chapter:
|
||||
* extended_api
|
||||
*
|
||||
* @title:
|
||||
* Extended API
|
||||
*
|
||||
* @sections:
|
||||
* glyph_variants
|
||||
* color_management
|
||||
* layer_management
|
||||
@@ -61,6 +81,7 @@
|
||||
* cid_fonts
|
||||
* pfr_fonts
|
||||
* winfnt_fonts
|
||||
* svg_fonts
|
||||
* font_formats
|
||||
* gasp_table
|
||||
*
|
||||
@@ -81,6 +102,7 @@
|
||||
* t1_cid_driver
|
||||
* tt_driver
|
||||
* pcf_driver
|
||||
* ot_svg_driver
|
||||
* properties
|
||||
* parameter_tags
|
||||
* lcd_rendering
|
||||
@@ -123,6 +145,7 @@
|
||||
* gzip
|
||||
* lzw
|
||||
* bzip2
|
||||
* debugging_apis
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
5
Source/ThirdParty/freetype/ftcid.h
vendored
5
Source/ThirdParty/freetype/ftcid.h
vendored
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* FreeType API for accessing CID font information (specification).
|
||||
*
|
||||
* Copyright (C) 2007-2019 by
|
||||
* Copyright (C) 2007-2023 by
|
||||
* Dereg Clegg and Michael Toftdal.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
@@ -19,8 +19,7 @@
|
||||
#ifndef FTCID_H_
|
||||
#define FTCID_H_
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_FREETYPE_H
|
||||
#include <freetype/freetype.h>
|
||||
|
||||
#ifdef FREETYPE_H
|
||||
#error "freetype.h of FreeType 1 has been loaded!"
|
||||
|
||||
1374
Source/ThirdParty/freetype/ftcolor.h
vendored
1374
Source/ThirdParty/freetype/ftcolor.h
vendored
File diff suppressed because it is too large
Load Diff
166
Source/ThirdParty/freetype/ftdriver.h
vendored
166
Source/ThirdParty/freetype/ftdriver.h
vendored
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* FreeType API for controlling driver modules (specification only).
|
||||
*
|
||||
* Copyright (C) 2017-2019 by
|
||||
* Copyright (C) 2017-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
@@ -19,9 +19,8 @@
|
||||
#ifndef FTDRIVER_H_
|
||||
#define FTDRIVER_H_
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_FREETYPE_H
|
||||
#include FT_PARAMETER_TAGS_H
|
||||
#include <freetype/freetype.h>
|
||||
#include <freetype/ftparams.h>
|
||||
|
||||
#ifdef FREETYPE_H
|
||||
#error "freetype.h of FreeType 1 has been loaded!"
|
||||
@@ -54,10 +53,10 @@ FT_BEGIN_HEADER
|
||||
* reasons.
|
||||
*
|
||||
* Available properties are @increase-x-height, @no-stem-darkening
|
||||
* (experimental), @darkening-parameters (experimental), @warping
|
||||
* (experimental), @glyph-to-script-map (experimental), @fallback-script
|
||||
* (experimental), and @default-script (experimental), as documented in
|
||||
* the @properties section.
|
||||
* (experimental), @darkening-parameters (experimental),
|
||||
* @glyph-to-script-map (experimental), @fallback-script (experimental),
|
||||
* and @default-script (experimental), as documented in the @properties
|
||||
* section.
|
||||
*
|
||||
*/
|
||||
|
||||
@@ -85,15 +84,15 @@ FT_BEGIN_HEADER
|
||||
* @properties section.
|
||||
*
|
||||
*
|
||||
* **Hinting and antialiasing principles of the new engine**
|
||||
* **Hinting and anti-aliasing principles of the new engine**
|
||||
*
|
||||
* The rasterizer is positioning horizontal features (e.g., ascender
|
||||
* height & x-height, or crossbars) on the pixel grid and minimizing the
|
||||
* amount of antialiasing applied to them, while placing vertical
|
||||
* amount of anti-aliasing applied to them, while placing vertical
|
||||
* features (vertical stems) on the pixel grid without hinting, thus
|
||||
* representing the stem position and weight accurately. Sometimes the
|
||||
* vertical stems may be only partially black. In this context,
|
||||
* 'antialiasing' means that stems are not positioned exactly on pixel
|
||||
* 'anti-aliasing' means that stems are not positioned exactly on pixel
|
||||
* borders, causing a fuzzy appearance.
|
||||
*
|
||||
* There are two principles behind this approach.
|
||||
@@ -109,7 +108,7 @@ FT_BEGIN_HEADER
|
||||
* sizes are comparable to kerning values and thus would be noticeable
|
||||
* (and distracting) while reading if hinting were applied.
|
||||
*
|
||||
* One of the reasons to not hint horizontally is antialiasing for LCD
|
||||
* One of the reasons to not hint horizontally is anti-aliasing for LCD
|
||||
* screens: The pixel geometry of modern displays supplies three vertical
|
||||
* subpixels as the eye moves horizontally across each visible pixel. On
|
||||
* devices where we can be certain this characteristic is present a
|
||||
@@ -117,7 +116,7 @@ FT_BEGIN_HEADER
|
||||
* weight. In Western writing systems this turns out to be the more
|
||||
* critical direction anyway; the weights and spacing of vertical stems
|
||||
* (see above) are central to Armenian, Cyrillic, Greek, and Latin type
|
||||
* designs. Even when the rasterizer uses greyscale antialiasing instead
|
||||
* designs. Even when the rasterizer uses greyscale anti-aliasing instead
|
||||
* of color (a necessary compromise when one doesn't know the screen
|
||||
* characteristics), the unhinted vertical features preserve the design's
|
||||
* weight and spacing much better than aliased type would.
|
||||
@@ -135,7 +134,7 @@ FT_BEGIN_HEADER
|
||||
* each being rounded to the nearest pixel edge, taking care of overshoot
|
||||
* suppression at small sizes, stem darkening, and scaling.
|
||||
*
|
||||
* Hstems (this is, hint values defined in the font to help align
|
||||
* Hstems (that is, hint values defined in the font to help align
|
||||
* horizontal features) that fall within a blue zone are said to be
|
||||
* 'captured' and are aligned to that zone. Uncaptured stems are moved
|
||||
* in one of four ways, top edge up or down, bottom edge up or down.
|
||||
@@ -213,16 +212,14 @@ FT_BEGIN_HEADER
|
||||
* @description:
|
||||
* While FreeType's TrueType driver doesn't expose API functions by
|
||||
* itself, it is possible to control its behaviour with @FT_Property_Set
|
||||
* and @FT_Property_Get. The following lists the available properties
|
||||
* together with the necessary macros and structures.
|
||||
* and @FT_Property_Get.
|
||||
*
|
||||
* The TrueType driver's module name is 'truetype'.
|
||||
* The TrueType driver's module name is 'truetype'; a single property
|
||||
* @interpreter-version is available, as documented in the @properties
|
||||
* section.
|
||||
*
|
||||
* A single property @interpreter-version is available, as documented in
|
||||
* the @properties section.
|
||||
*
|
||||
* We start with a list of definitions, kindly provided by Greg
|
||||
* Hitchcock.
|
||||
* To help understand the differences between interpreter versions, we
|
||||
* introduce a list of definitions, kindly provided by Greg Hitchcock.
|
||||
*
|
||||
* _Bi-Level Rendering_
|
||||
*
|
||||
@@ -301,6 +298,31 @@ FT_BEGIN_HEADER
|
||||
*/
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @section:
|
||||
* ot_svg_driver
|
||||
*
|
||||
* @title:
|
||||
* The SVG driver
|
||||
*
|
||||
* @abstract:
|
||||
* Controlling the external rendering of OT-SVG glyphs.
|
||||
*
|
||||
* @description:
|
||||
* By default, FreeType can only load the 'SVG~' table of OpenType fonts
|
||||
* if configuration macro `FT_CONFIG_OPTION_SVG` is defined. To make it
|
||||
* render SVG glyphs, an external SVG rendering library is needed. All
|
||||
* details on the interface between FreeType and the external library
|
||||
* via function hooks can be found in section @svg_fonts.
|
||||
*
|
||||
* The OT-SVG driver's module name is 'ot-svg'; it supports a single
|
||||
* property called @svg-hooks, documented below in the @properties
|
||||
* section.
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @section:
|
||||
@@ -363,12 +385,8 @@ FT_BEGIN_HEADER
|
||||
* The same holds for the Type~1 and CID modules if compiled with
|
||||
* `T1_CONFIG_OPTION_OLD_ENGINE`.
|
||||
*
|
||||
* For the 'cff' module, the default engine is 'freetype' if
|
||||
* `CFF_CONFIG_OPTION_OLD_ENGINE` is defined, and 'adobe' otherwise.
|
||||
*
|
||||
* For both the 'type1' and 't1cid' modules, the default engine is
|
||||
* 'freetype' if `T1_CONFIG_OPTION_OLD_ENGINE` is defined, and 'adobe'
|
||||
* otherwise.
|
||||
* For the 'cff' module, the default engine is 'adobe'. For both the
|
||||
* 'type1' and 't1cid' modules, the default engine is 'adobe', too.
|
||||
*
|
||||
* @note:
|
||||
* This property can be used with @FT_Property_Get also.
|
||||
@@ -427,12 +445,8 @@ FT_BEGIN_HEADER
|
||||
* counteracts the 'thinning out' of glyphs, making text remain readable
|
||||
* at smaller sizes.
|
||||
*
|
||||
* By default, the Adobe engines for CFF, Type~1, and CID fonts darken
|
||||
* stems at smaller sizes, regardless of hinting, to enhance contrast.
|
||||
* Setting this property, stem darkening gets switched off.
|
||||
*
|
||||
* For the auto-hinter, stem-darkening is experimental currently and thus
|
||||
* switched off by default (this is, `no-stem-darkening` is set to TRUE
|
||||
* switched off by default (that is, `no-stem-darkening` is set to TRUE
|
||||
* by default). Total consistency with the CFF driver is not achieved
|
||||
* right now because the emboldening method differs and glyphs must be
|
||||
* scaled down on the Y-axis to keep outline points inside their
|
||||
@@ -637,11 +651,8 @@ FT_BEGIN_HEADER
|
||||
* Windows~98; only grayscale and B/W rasterizing is supported.
|
||||
*
|
||||
* TT_INTERPRETER_VERSION_38 ::
|
||||
* Version~38 corresponds to MS rasterizer v.1.9; it is roughly
|
||||
* equivalent to the hinting provided by DirectWrite ClearType (as can
|
||||
* be found, for example, in the Internet Explorer~9 running on
|
||||
* Windows~7). It is used in FreeType to select the 'Infinality'
|
||||
* subpixel hinting code. The code may be removed in a future version.
|
||||
* Version~38 is the same Version~40. The original 'Infinality' code is
|
||||
* no longer available.
|
||||
*
|
||||
* TT_INTERPRETER_VERSION_40 ::
|
||||
* Version~40 corresponds to MS rasterizer v.2.1; it is roughly
|
||||
@@ -806,6 +817,39 @@ FT_BEGIN_HEADER
|
||||
* 2.5
|
||||
*/
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @property:
|
||||
* svg-hooks
|
||||
*
|
||||
* @description:
|
||||
* Set up the interface between FreeType and an extern SVG rendering
|
||||
* library like 'librsvg'. All details on the function hooks can be
|
||||
* found in section @svg_fonts.
|
||||
*
|
||||
* @example:
|
||||
* The following example code expects that the four hook functions
|
||||
* `svg_*` are defined elsewhere. Error handling is omitted, too.
|
||||
*
|
||||
* ```
|
||||
* FT_Library library;
|
||||
* SVG_RendererHooks hooks = {
|
||||
* (SVG_Lib_Init_Func)svg_init,
|
||||
* (SVG_Lib_Free_Func)svg_free,
|
||||
* (SVG_Lib_Render_Func)svg_render,
|
||||
* (SVG_Lib_Preset_Slot_Func)svg_preset_slot };
|
||||
*
|
||||
*
|
||||
* FT_Init_FreeType( &library );
|
||||
*
|
||||
* FT_Property_Set( library, "ot-svg",
|
||||
* "svg-hooks", &hooks );
|
||||
* ```
|
||||
*
|
||||
* @since:
|
||||
* 2.12
|
||||
*/
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
@@ -1171,48 +1215,18 @@ FT_BEGIN_HEADER
|
||||
* warping
|
||||
*
|
||||
* @description:
|
||||
* **Experimental only**
|
||||
* **Obsolete**
|
||||
*
|
||||
* If FreeType gets compiled with option `AF_CONFIG_OPTION_USE_WARPER` to
|
||||
* activate the warp hinting code in the auto-hinter, this property
|
||||
* switches warping on and off.
|
||||
* This property was always experimental and probably never worked
|
||||
* correctly. It was entirely removed from the FreeType~2 sources. This
|
||||
* entry is only here for historical reference.
|
||||
*
|
||||
* Warping only works in 'normal' auto-hinting mode replacing it. The
|
||||
* idea of the code is to slightly scale and shift a glyph along the
|
||||
* Warping only worked in 'normal' auto-hinting mode replacing it. The
|
||||
* idea of the code was to slightly scale and shift a glyph along the
|
||||
* non-hinted dimension (which is usually the horizontal axis) so that as
|
||||
* much of its segments are aligned (more or less) to the grid. To find
|
||||
* much of its segments were aligned (more or less) to the grid. To find
|
||||
* out a glyph's optimal scaling and shifting value, various parameter
|
||||
* combinations are tried and scored.
|
||||
*
|
||||
* By default, warping is off.
|
||||
*
|
||||
* @note:
|
||||
* This property can be used with @FT_Property_Get also.
|
||||
*
|
||||
* This property can be set via the `FREETYPE_PROPERTIES` environment
|
||||
* variable (using values 1 and 0 for 'on' and 'off', respectively).
|
||||
*
|
||||
* The warping code can also change advance widths. Have a look at the
|
||||
* `lsb_delta` and `rsb_delta` fields in the @FT_GlyphSlotRec structure
|
||||
* for details on improving inter-glyph distances while rendering.
|
||||
*
|
||||
* Since warping is a global property of the auto-hinter it is best to
|
||||
* change its value before rendering any face. Otherwise, you should
|
||||
* reload all faces that get auto-hinted in 'normal' hinting mode.
|
||||
*
|
||||
* @example:
|
||||
* This example shows how to switch on warping (omitting the error
|
||||
* handling).
|
||||
*
|
||||
* ```
|
||||
* FT_Library library;
|
||||
* FT_Bool warping = 1;
|
||||
*
|
||||
*
|
||||
* FT_Init_FreeType( &library );
|
||||
*
|
||||
* FT_Property_Set( library, "autofitter", "warping", &warping );
|
||||
* ```
|
||||
* combinations were tried and scored.
|
||||
*
|
||||
* @since:
|
||||
* 2.6
|
||||
|
||||
6
Source/ThirdParty/freetype/fterrdef.h
vendored
6
Source/ThirdParty/freetype/fterrdef.h
vendored
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* FreeType error codes (specification).
|
||||
*
|
||||
* Copyright (C) 2002-2019 by
|
||||
* Copyright (C) 2002-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
@@ -101,6 +101,8 @@
|
||||
"too many hints" )
|
||||
FT_ERRORDEF_( Invalid_Pixel_Size, 0x17,
|
||||
"invalid pixel size" )
|
||||
FT_ERRORDEF_( Invalid_SVG_Document, 0x18,
|
||||
"invalid SVG document" )
|
||||
|
||||
/* handle errors */
|
||||
|
||||
@@ -234,6 +236,8 @@
|
||||
"found FDEF or IDEF opcode in glyf bytecode" )
|
||||
FT_ERRORDEF_( Missing_Bitmap, 0x9D,
|
||||
"missing bitmap in strike" )
|
||||
FT_ERRORDEF_( Missing_SVG_Hooks, 0x9E,
|
||||
"SVG hooks have not been set" )
|
||||
|
||||
/* CFF, CID, and Type 1 errors */
|
||||
|
||||
|
||||
31
Source/ThirdParty/freetype/fterrors.h
vendored
31
Source/ThirdParty/freetype/fterrors.h
vendored
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* FreeType error code handling (specification).
|
||||
*
|
||||
* Copyright (C) 1996-2019 by
|
||||
* Copyright (C) 1996-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
@@ -29,7 +29,7 @@
|
||||
*
|
||||
* @description:
|
||||
* The header file `fterrors.h` (which is automatically included by
|
||||
* `freetype.h` defines the handling of FreeType's enumeration
|
||||
* `freetype.h`) defines the handling of FreeType's enumeration
|
||||
* constants. It can also be used to generate error message strings
|
||||
* with a small macro trick explained below.
|
||||
*
|
||||
@@ -89,7 +89,7 @@
|
||||
* const char* err_msg;
|
||||
* } ft_errors[] =
|
||||
*
|
||||
* #include FT_ERRORS_H
|
||||
* #include <freetype/fterrors.h>
|
||||
* ```
|
||||
*
|
||||
* An alternative to using an array is a switch statement.
|
||||
@@ -124,7 +124,7 @@
|
||||
|
||||
|
||||
/* include module base error codes */
|
||||
#include FT_MODULE_ERRORS_H
|
||||
#include <freetype/ftmoderr.h>
|
||||
|
||||
|
||||
/*******************************************************************/
|
||||
@@ -197,7 +197,7 @@
|
||||
|
||||
|
||||
/* now include the error codes */
|
||||
#include FT_ERROR_DEFINITIONS_H
|
||||
#include <freetype/fterrdef.h>
|
||||
|
||||
|
||||
#ifdef FT_ERROR_END_LIST
|
||||
@@ -232,11 +232,16 @@
|
||||
#undef FT_ERR_PREFIX
|
||||
#endif
|
||||
|
||||
/* FT_INCLUDE_ERR_PROTOS: Control if function prototypes should be */
|
||||
/* included with `#include FT_ERRORS_H'. This is */
|
||||
/* only true where `FT_ERRORDEF` is undefined. */
|
||||
/* FT_ERR_PROTOS_DEFINED: Actual multiple-inclusion protection of */
|
||||
/* `fterrors.h`. */
|
||||
/* FT_INCLUDE_ERR_PROTOS: Control whether function prototypes should be */
|
||||
/* included with */
|
||||
/* */
|
||||
/* #include <freetype/fterrors.h> */
|
||||
/* */
|
||||
/* This is only true where `FT_ERRORDEF` is */
|
||||
/* undefined. */
|
||||
/* */
|
||||
/* FT_ERR_PROTOS_DEFINED: Actual multiple-inclusion protection of */
|
||||
/* `fterrors.h`. */
|
||||
#ifdef FT_INCLUDE_ERR_PROTOS
|
||||
#undef FT_INCLUDE_ERR_PROTOS
|
||||
|
||||
@@ -244,6 +249,8 @@
|
||||
#define FT_ERR_PROTOS_DEFINED
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @function:
|
||||
@@ -274,6 +281,10 @@
|
||||
FT_EXPORT( const char* )
|
||||
FT_Error_String( FT_Error error_code );
|
||||
|
||||
/* */
|
||||
|
||||
FT_END_HEADER
|
||||
|
||||
|
||||
#endif /* FT_ERR_PROTOS_DEFINED */
|
||||
|
||||
|
||||
5
Source/ThirdParty/freetype/ftfntfmt.h
vendored
5
Source/ThirdParty/freetype/ftfntfmt.h
vendored
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* Support functions for font formats.
|
||||
*
|
||||
* Copyright (C) 2002-2019 by
|
||||
* Copyright (C) 2002-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
@@ -19,8 +19,7 @@
|
||||
#ifndef FTFNTFMT_H_
|
||||
#define FTFNTFMT_H_
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_FREETYPE_H
|
||||
#include <freetype/freetype.h>
|
||||
|
||||
#ifdef FREETYPE_H
|
||||
#error "freetype.h of FreeType 1 has been loaded!"
|
||||
|
||||
5
Source/ThirdParty/freetype/ftgasp.h
vendored
5
Source/ThirdParty/freetype/ftgasp.h
vendored
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* Access of TrueType's 'gasp' table (specification).
|
||||
*
|
||||
* Copyright (C) 2007-2019 by
|
||||
* Copyright (C) 2007-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
@@ -19,8 +19,7 @@
|
||||
#ifndef FTGASP_H_
|
||||
#define FTGASP_H_
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_FREETYPE_H
|
||||
#include <freetype/freetype.h>
|
||||
|
||||
#ifdef FREETYPE_H
|
||||
#error "freetype.h of FreeType 1 has been loaded!"
|
||||
|
||||
131
Source/ThirdParty/freetype/ftglyph.h
vendored
131
Source/ThirdParty/freetype/ftglyph.h
vendored
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* FreeType convenience functions to handle glyphs (specification).
|
||||
*
|
||||
* Copyright (C) 1996-2019 by
|
||||
* Copyright (C) 1996-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
@@ -33,8 +33,7 @@
|
||||
#define FTGLYPH_H_
|
||||
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_FREETYPE_H
|
||||
#include <freetype/freetype.h>
|
||||
|
||||
#ifdef FREETYPE_H
|
||||
#error "freetype.h of FreeType 1 has been loaded!"
|
||||
@@ -127,7 +126,7 @@ FT_BEGIN_HEADER
|
||||
*
|
||||
* @description:
|
||||
* A handle to an object used to model a bitmap glyph image. This is a
|
||||
* sub-class of @FT_Glyph, and a pointer to @FT_BitmapGlyphRec.
|
||||
* 'sub-class' of @FT_Glyph, and a pointer to @FT_BitmapGlyphRec.
|
||||
*/
|
||||
typedef struct FT_BitmapGlyphRec_* FT_BitmapGlyph;
|
||||
|
||||
@@ -143,7 +142,7 @@ FT_BEGIN_HEADER
|
||||
*
|
||||
* @fields:
|
||||
* root ::
|
||||
* The root @FT_Glyph fields.
|
||||
* The root fields of @FT_Glyph.
|
||||
*
|
||||
* left ::
|
||||
* The left-side bearing, i.e., the horizontal distance from the
|
||||
@@ -182,7 +181,7 @@ FT_BEGIN_HEADER
|
||||
*
|
||||
* @description:
|
||||
* A handle to an object used to model an outline glyph image. This is a
|
||||
* sub-class of @FT_Glyph, and a pointer to @FT_OutlineGlyphRec.
|
||||
* 'sub-class' of @FT_Glyph, and a pointer to @FT_OutlineGlyphRec.
|
||||
*/
|
||||
typedef struct FT_OutlineGlyphRec_* FT_OutlineGlyph;
|
||||
|
||||
@@ -210,7 +209,7 @@ FT_BEGIN_HEADER
|
||||
*
|
||||
* As the outline is extracted from a glyph slot, its coordinates are
|
||||
* expressed normally in 26.6 pixels, unless the flag @FT_LOAD_NO_SCALE
|
||||
* was used in @FT_Load_Glyph() or @FT_Load_Char().
|
||||
* was used in @FT_Load_Glyph or @FT_Load_Char.
|
||||
*
|
||||
* The outline's tables are always owned by the object and are destroyed
|
||||
* with it.
|
||||
@@ -223,6 +222,92 @@ FT_BEGIN_HEADER
|
||||
} FT_OutlineGlyphRec;
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @type:
|
||||
* FT_SvgGlyph
|
||||
*
|
||||
* @description:
|
||||
* A handle to an object used to model an SVG glyph. This is a
|
||||
* 'sub-class' of @FT_Glyph, and a pointer to @FT_SvgGlyphRec.
|
||||
*
|
||||
* @since:
|
||||
* 2.12
|
||||
*/
|
||||
typedef struct FT_SvgGlyphRec_* FT_SvgGlyph;
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @struct:
|
||||
* FT_SvgGlyphRec
|
||||
*
|
||||
* @description:
|
||||
* A structure used for OT-SVG glyphs. This is a 'sub-class' of
|
||||
* @FT_GlyphRec.
|
||||
*
|
||||
* @fields:
|
||||
* root ::
|
||||
* The root @FT_GlyphRec fields.
|
||||
*
|
||||
* svg_document ::
|
||||
* A pointer to the SVG document.
|
||||
*
|
||||
* svg_document_length ::
|
||||
* The length of `svg_document`.
|
||||
*
|
||||
* glyph_index ::
|
||||
* The index of the glyph to be rendered.
|
||||
*
|
||||
* metrics ::
|
||||
* A metrics object storing the size information.
|
||||
*
|
||||
* units_per_EM ::
|
||||
* The size of the EM square.
|
||||
*
|
||||
* start_glyph_id ::
|
||||
* The first glyph ID in the glyph range covered by this document.
|
||||
*
|
||||
* end_glyph_id ::
|
||||
* The last glyph ID in the glyph range covered by this document.
|
||||
*
|
||||
* transform ::
|
||||
* A 2x2 transformation matrix to apply to the glyph while rendering
|
||||
* it.
|
||||
*
|
||||
* delta ::
|
||||
* Translation to apply to the glyph while rendering.
|
||||
*
|
||||
* @note:
|
||||
* The Glyph Management API requires @FT_Glyph or its 'sub-class' to have
|
||||
* all the information needed to completely define the glyph's rendering.
|
||||
* Outline-based glyphs can directly apply transformations to the outline
|
||||
* but this is not possible for an SVG document that hasn't been parsed.
|
||||
* Therefore, the transformation is stored along with the document. In
|
||||
* the absence of a 'ViewBox' or 'Width'/'Height' attribute, the size of
|
||||
* the ViewPort should be assumed to be 'units_per_EM'.
|
||||
*/
|
||||
typedef struct FT_SvgGlyphRec_
|
||||
{
|
||||
FT_GlyphRec root;
|
||||
|
||||
FT_Byte* svg_document;
|
||||
FT_ULong svg_document_length;
|
||||
|
||||
FT_UInt glyph_index;
|
||||
|
||||
FT_Size_Metrics metrics;
|
||||
FT_UShort units_per_EM;
|
||||
|
||||
FT_UShort start_glyph_id;
|
||||
FT_UShort end_glyph_id;
|
||||
|
||||
FT_Matrix transform;
|
||||
FT_Vector delta;
|
||||
|
||||
} FT_SvgGlyphRec;
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @function:
|
||||
@@ -270,7 +355,7 @@ FT_BEGIN_HEADER
|
||||
*
|
||||
* @output:
|
||||
* aglyph ::
|
||||
* A handle to the glyph object.
|
||||
* A handle to the glyph object. `NULL` in case of error.
|
||||
*
|
||||
* @return:
|
||||
* FreeType error code. 0~means success.
|
||||
@@ -300,7 +385,7 @@ FT_BEGIN_HEADER
|
||||
*
|
||||
* @output:
|
||||
* target ::
|
||||
* A handle to the target glyph object. 0~in case of error.
|
||||
* A handle to the target glyph object. `NULL` in case of error.
|
||||
*
|
||||
* @return:
|
||||
* FreeType error code. 0~means success.
|
||||
@@ -328,7 +413,7 @@ FT_BEGIN_HEADER
|
||||
*
|
||||
* delta ::
|
||||
* A pointer to a 2d vector to apply. Coordinates are expressed in
|
||||
* 1/64th of a pixel.
|
||||
* 1/64 of a pixel.
|
||||
*
|
||||
* @return:
|
||||
* FreeType error code (if not 0, the glyph format is not scalable).
|
||||
@@ -338,9 +423,9 @@ FT_BEGIN_HEADER
|
||||
* vector.
|
||||
*/
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Glyph_Transform( FT_Glyph glyph,
|
||||
FT_Matrix* matrix,
|
||||
FT_Vector* delta );
|
||||
FT_Glyph_Transform( FT_Glyph glyph,
|
||||
const FT_Matrix* matrix,
|
||||
const FT_Vector* delta );
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
@@ -415,7 +500,7 @@ FT_BEGIN_HEADER
|
||||
* @output:
|
||||
* acbox ::
|
||||
* The glyph coordinate bounding box. Coordinates are expressed in
|
||||
* 1/64th of pixels if it is grid-fitted.
|
||||
* 1/64 of pixels if it is grid-fitted.
|
||||
*
|
||||
* @note:
|
||||
* Coordinates are relative to the glyph origin, using the y~upwards
|
||||
@@ -499,9 +584,9 @@ FT_BEGIN_HEADER
|
||||
* The glyph image is translated with the `origin` vector before
|
||||
* rendering.
|
||||
*
|
||||
* The first parameter is a pointer to an @FT_Glyph handle, that will be
|
||||
* The first parameter is a pointer to an @FT_Glyph handle that will be
|
||||
* _replaced_ by this function (with newly allocated data). Typically,
|
||||
* you would use (omitting error handling):
|
||||
* you would do something like the following (omitting error handling).
|
||||
*
|
||||
* ```
|
||||
* FT_Glyph glyph;
|
||||
@@ -518,7 +603,7 @@ FT_BEGIN_HEADER
|
||||
* if ( glyph->format != FT_GLYPH_FORMAT_BITMAP )
|
||||
* {
|
||||
* error = FT_Glyph_To_Bitmap( &glyph, FT_RENDER_MODE_NORMAL,
|
||||
* 0, 1 );
|
||||
* 0, 1 );
|
||||
* if ( error ) // `glyph' unchanged
|
||||
* ...
|
||||
* }
|
||||
@@ -533,7 +618,7 @@ FT_BEGIN_HEADER
|
||||
* FT_Done_Glyph( glyph );
|
||||
* ```
|
||||
*
|
||||
* Here is another example, again without error handling:
|
||||
* Here is another example, again without error handling.
|
||||
*
|
||||
* ```
|
||||
* FT_Glyph glyphs[MAX_GLYPHS]
|
||||
@@ -570,10 +655,10 @@ FT_BEGIN_HEADER
|
||||
* ```
|
||||
*/
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Glyph_To_Bitmap( FT_Glyph* the_glyph,
|
||||
FT_Render_Mode render_mode,
|
||||
FT_Vector* origin,
|
||||
FT_Bool destroy );
|
||||
FT_Glyph_To_Bitmap( FT_Glyph* the_glyph,
|
||||
FT_Render_Mode render_mode,
|
||||
const FT_Vector* origin,
|
||||
FT_Bool destroy );
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
@@ -586,7 +671,7 @@ FT_BEGIN_HEADER
|
||||
*
|
||||
* @input:
|
||||
* glyph ::
|
||||
* A handle to the target glyph object.
|
||||
* A handle to the target glyph object. Can be `NULL`.
|
||||
*/
|
||||
FT_EXPORT( void )
|
||||
FT_Done_Glyph( FT_Glyph glyph );
|
||||
|
||||
5
Source/ThirdParty/freetype/ftgxval.h
vendored
5
Source/ThirdParty/freetype/ftgxval.h
vendored
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* FreeType API for validating TrueTypeGX/AAT tables (specification).
|
||||
*
|
||||
* Copyright (C) 2004-2019 by
|
||||
* Copyright (C) 2004-2023 by
|
||||
* Masatake YAMATO, Redhat K.K,
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
@@ -28,8 +28,7 @@
|
||||
#ifndef FTGXVAL_H_
|
||||
#define FTGXVAL_H_
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_FREETYPE_H
|
||||
#include <freetype/freetype.h>
|
||||
|
||||
#ifdef FREETYPE_H
|
||||
#error "freetype.h of FreeType 1 has been loaded!"
|
||||
|
||||
24
Source/ThirdParty/freetype/ftgzip.h
vendored
24
Source/ThirdParty/freetype/ftgzip.h
vendored
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* Gzip-compressed stream support.
|
||||
*
|
||||
* Copyright (C) 2002-2019 by
|
||||
* Copyright (C) 2002-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
@@ -19,8 +19,7 @@
|
||||
#ifndef FTGZIP_H_
|
||||
#define FTGZIP_H_
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_FREETYPE_H
|
||||
#include <freetype/freetype.h>
|
||||
|
||||
#ifdef FREETYPE_H
|
||||
#error "freetype.h of FreeType 1 has been loaded!"
|
||||
@@ -43,6 +42,16 @@ FT_BEGIN_HEADER
|
||||
* Using gzip-compressed font files.
|
||||
*
|
||||
* @description:
|
||||
* In certain builds of the library, gzip compression recognition is
|
||||
* automatically handled when calling @FT_New_Face or @FT_Open_Face.
|
||||
* This means that if no font driver is capable of handling the raw
|
||||
* compressed file, the library will try to open a gzipped stream from it
|
||||
* and re-open the face with it.
|
||||
*
|
||||
* The stream implementation is very basic and resets the decompression
|
||||
* process each time seeking backwards is needed within the stream,
|
||||
* which significantly undermines the performance.
|
||||
*
|
||||
* This section contains the declaration of Gzip-specific functions.
|
||||
*
|
||||
*/
|
||||
@@ -75,15 +84,6 @@ FT_BEGIN_HEADER
|
||||
* **not** call `FT_Stream_Close` on the source stream. None of the
|
||||
* stream objects will be released to the heap.
|
||||
*
|
||||
* The stream implementation is very basic and resets the decompression
|
||||
* process each time seeking backwards is needed within the stream.
|
||||
*
|
||||
* In certain builds of the library, gzip compression recognition is
|
||||
* automatically handled when calling @FT_New_Face or @FT_Open_Face.
|
||||
* This means that if no font driver is capable of handling the raw
|
||||
* compressed file, the library will try to open a gzipped stream from it
|
||||
* and re-open the face with it.
|
||||
*
|
||||
* This function may return `FT_Err_Unimplemented_Feature` if your build
|
||||
* of FreeType was not compiled with zlib support.
|
||||
*/
|
||||
|
||||
180
Source/ThirdParty/freetype/ftimage.h
vendored
180
Source/ThirdParty/freetype/ftimage.h
vendored
@@ -5,7 +5,7 @@
|
||||
* FreeType glyph image formats and default raster interface
|
||||
* (specification).
|
||||
*
|
||||
* Copyright (C) 1996-2019 by
|
||||
* Copyright (C) 1996-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
@@ -19,7 +19,7 @@
|
||||
/**************************************************************************
|
||||
*
|
||||
* Note: A 'raster' is simply a scan-line converter, used to render
|
||||
* FT_Outlines into FT_Bitmaps.
|
||||
* `FT_Outline`s into `FT_Bitmap`s.
|
||||
*
|
||||
*/
|
||||
|
||||
@@ -28,12 +28,6 @@
|
||||
#define FTIMAGE_H_
|
||||
|
||||
|
||||
/* STANDALONE_ is from ftgrays.c */
|
||||
#ifndef STANDALONE_
|
||||
#include <ft2build.h>
|
||||
#endif
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
|
||||
@@ -202,6 +196,11 @@ FT_BEGIN_HEADER
|
||||
#define ft_pixel_mode_pal2 FT_PIXEL_MODE_GRAY2
|
||||
#define ft_pixel_mode_pal4 FT_PIXEL_MODE_GRAY4
|
||||
|
||||
/* */
|
||||
|
||||
/* For debugging, the @FT_Pixel_Mode enumeration must stay in sync */
|
||||
/* with the `pixel_modes` array in file `ftobjs.c`. */
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
@@ -257,6 +256,12 @@ FT_BEGIN_HEADER
|
||||
* palette ::
|
||||
* A typeless pointer to the bitmap palette; this field is intended for
|
||||
* paletted pixel modes. Not used currently.
|
||||
*
|
||||
* @note:
|
||||
* `width` and `rows` refer to the *physical* size of the bitmap, not the
|
||||
* *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
|
||||
* physical one.
|
||||
*/
|
||||
typedef struct FT_Bitmap_
|
||||
{
|
||||
@@ -401,6 +406,13 @@ FT_BEGIN_HEADER
|
||||
* if @FT_OUTLINE_IGNORE_DROPOUTS is set. See below for more
|
||||
* information.
|
||||
*
|
||||
* FT_OUTLINE_OVERLAP ::
|
||||
* [Since 2.10.3] This flag indicates that this outline contains
|
||||
* overlapping contours and the anti-aliased renderer should perform
|
||||
* oversampling to mitigate possible artifacts. This flag should _not_
|
||||
* be set for well designed glyphs without overlaps because it quadruples
|
||||
* the rendering time.
|
||||
*
|
||||
* FT_OUTLINE_HIGH_PRECISION ::
|
||||
* This flag indicates that the scan-line converter should try to
|
||||
* convert this outline to bitmaps with the highest possible quality.
|
||||
@@ -432,6 +444,7 @@ FT_BEGIN_HEADER
|
||||
#define FT_OUTLINE_IGNORE_DROPOUTS 0x8
|
||||
#define FT_OUTLINE_SMART_DROPOUTS 0x10
|
||||
#define FT_OUTLINE_INCLUDE_STUBS 0x20
|
||||
#define FT_OUTLINE_OVERLAP 0x40
|
||||
|
||||
#define FT_OUTLINE_HIGH_PRECISION 0x100
|
||||
#define FT_OUTLINE_SINGLE_PASS 0x200
|
||||
@@ -688,11 +701,13 @@ FT_BEGIN_HEADER
|
||||
* to get a simple enumeration without assigning special numbers.
|
||||
*/
|
||||
#ifndef FT_IMAGE_TAG
|
||||
#define FT_IMAGE_TAG( value, _x1, _x2, _x3, _x4 ) \
|
||||
value = ( ( (unsigned long)_x1 << 24 ) | \
|
||||
( (unsigned long)_x2 << 16 ) | \
|
||||
( (unsigned long)_x3 << 8 ) | \
|
||||
(unsigned long)_x4 )
|
||||
|
||||
#define FT_IMAGE_TAG( value, _x1, _x2, _x3, _x4 ) \
|
||||
value = ( ( FT_STATIC_BYTE_CAST( unsigned long, _x1 ) << 24 ) | \
|
||||
( FT_STATIC_BYTE_CAST( unsigned long, _x2 ) << 16 ) | \
|
||||
( FT_STATIC_BYTE_CAST( unsigned long, _x3 ) << 8 ) | \
|
||||
FT_STATIC_BYTE_CAST( unsigned long, _x4 ) )
|
||||
|
||||
#endif /* FT_IMAGE_TAG */
|
||||
|
||||
|
||||
@@ -732,6 +747,10 @@ FT_BEGIN_HEADER
|
||||
* contours. Some Type~1 fonts, like those in the Hershey family,
|
||||
* contain glyphs in this format. These are described as @FT_Outline,
|
||||
* but FreeType isn't currently capable of rendering them correctly.
|
||||
*
|
||||
* FT_GLYPH_FORMAT_SVG ::
|
||||
* [Since 2.12] The glyph is represented by an SVG document in the
|
||||
* 'SVG~' table.
|
||||
*/
|
||||
typedef enum FT_Glyph_Format_
|
||||
{
|
||||
@@ -740,7 +759,8 @@ FT_BEGIN_HEADER
|
||||
FT_IMAGE_TAG( FT_GLYPH_FORMAT_COMPOSITE, 'c', 'o', 'm', 'p' ),
|
||||
FT_IMAGE_TAG( FT_GLYPH_FORMAT_BITMAP, 'b', 'i', 't', 's' ),
|
||||
FT_IMAGE_TAG( FT_GLYPH_FORMAT_OUTLINE, 'o', 'u', 't', 'l' ),
|
||||
FT_IMAGE_TAG( FT_GLYPH_FORMAT_PLOTTER, 'p', 'l', 'o', 't' )
|
||||
FT_IMAGE_TAG( FT_GLYPH_FORMAT_PLOTTER, 'p', 'l', 'o', 't' ),
|
||||
FT_IMAGE_TAG( FT_GLYPH_FORMAT_SVG, 'S', 'V', 'G', ' ' )
|
||||
|
||||
} FT_Glyph_Format;
|
||||
|
||||
@@ -765,17 +785,6 @@ FT_BEGIN_HEADER
|
||||
/*************************************************************************/
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* A raster is a scan converter, in charge of rendering an outline into a
|
||||
* bitmap. This section contains the public API for rasters.
|
||||
*
|
||||
* Note that in FreeType 2, all rasters are now encapsulated within
|
||||
* specific modules called 'renderers'. See `ftrender.h` for more details
|
||||
* on renderers.
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
@@ -789,16 +798,35 @@ FT_BEGIN_HEADER
|
||||
* How vectorial outlines are converted into bitmaps and pixmaps.
|
||||
*
|
||||
* @description:
|
||||
* This section contains technical definitions.
|
||||
* A raster or a rasterizer is a scan converter in charge of producing a
|
||||
* pixel coverage bitmap that can be used as an alpha channel when
|
||||
* compositing a glyph with a background. FreeType comes with two
|
||||
* rasterizers: bilevel `raster1` and anti-aliased `smooth` are two
|
||||
* separate modules. They are usually called from the high-level
|
||||
* @FT_Load_Glyph or @FT_Render_Glyph functions and produce the entire
|
||||
* coverage bitmap at once, while staying largely invisible to users.
|
||||
*
|
||||
* Instead of working with complete coverage bitmaps, it is also possible
|
||||
* to intercept consecutive pixel runs on the same scanline with the same
|
||||
* coverage, called _spans_, and process them individually. Only the
|
||||
* `smooth` rasterizer permits this when calling @FT_Outline_Render with
|
||||
* @FT_Raster_Params as described below.
|
||||
*
|
||||
* Working with either complete bitmaps or spans it is important to think
|
||||
* of them as colorless coverage objects suitable as alpha channels to
|
||||
* blend arbitrary colors with a background. For best results, it is
|
||||
* recommended to use gamma correction, too.
|
||||
*
|
||||
* This section also describes the public API needed to set up alternative
|
||||
* @FT_Renderer modules.
|
||||
*
|
||||
* @order:
|
||||
* FT_Raster
|
||||
* FT_Span
|
||||
* FT_SpanFunc
|
||||
*
|
||||
* FT_Raster_Params
|
||||
* FT_RASTER_FLAG_XXX
|
||||
*
|
||||
* FT_Raster
|
||||
* FT_Raster_NewFunc
|
||||
* FT_Raster_DoneFunc
|
||||
* FT_Raster_ResetFunc
|
||||
@@ -809,26 +837,14 @@ FT_BEGIN_HEADER
|
||||
*/
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @type:
|
||||
* FT_Raster
|
||||
*
|
||||
* @description:
|
||||
* An opaque handle (pointer) to a raster object. Each object can be
|
||||
* used independently to convert an outline into a bitmap or pixmap.
|
||||
*/
|
||||
typedef struct FT_RasterRec_* FT_Raster;
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @struct:
|
||||
* FT_Span
|
||||
*
|
||||
* @description:
|
||||
* A structure used to model a single span of gray pixels when rendering
|
||||
* an anti-aliased bitmap.
|
||||
* A structure to model a single span of consecutive pixels when
|
||||
* rendering an anti-aliased bitmap.
|
||||
*
|
||||
* @fields:
|
||||
* x ::
|
||||
@@ -845,8 +861,8 @@ FT_BEGIN_HEADER
|
||||
* This structure is used by the span drawing callback type named
|
||||
* @FT_SpanFunc that takes the y~coordinate of the span as a parameter.
|
||||
*
|
||||
* The coverage value is always between 0 and 255. If you want less gray
|
||||
* values, the callback function has to reduce them.
|
||||
* The anti-aliased rasterizer produces coverage values from 0 to 255,
|
||||
* that is, from completely transparent to completely opaque.
|
||||
*/
|
||||
typedef struct FT_Span_
|
||||
{
|
||||
@@ -864,12 +880,12 @@ FT_BEGIN_HEADER
|
||||
*
|
||||
* @description:
|
||||
* A function used as a call-back by the anti-aliased renderer in order
|
||||
* to let client applications draw themselves the gray pixel spans on
|
||||
* each scan line.
|
||||
* to let client applications draw themselves the pixel spans on each
|
||||
* scan line.
|
||||
*
|
||||
* @input:
|
||||
* y ::
|
||||
* The scanline's y~coordinate.
|
||||
* The scanline's upward y~coordinate.
|
||||
*
|
||||
* count ::
|
||||
* The number of spans to draw on this scanline.
|
||||
@@ -881,11 +897,12 @@ FT_BEGIN_HEADER
|
||||
* User-supplied data that is passed to the callback.
|
||||
*
|
||||
* @note:
|
||||
* This callback allows client applications to directly render the gray
|
||||
* spans of the anti-aliased bitmap to any kind of surfaces.
|
||||
* This callback allows client applications to directly render the spans
|
||||
* of the anti-aliased bitmap to any kind of surfaces.
|
||||
*
|
||||
* This can be used to write anti-aliased outlines directly to a given
|
||||
* background bitmap, and even perform translucency.
|
||||
* background bitmap using alpha compositing. It can also be used for
|
||||
* oversampling and averaging.
|
||||
*/
|
||||
typedef void
|
||||
(*FT_SpanFunc)( int y,
|
||||
@@ -945,24 +962,27 @@ FT_BEGIN_HEADER
|
||||
* This flag is set to indicate direct rendering. In this mode, client
|
||||
* applications must provide their own span callback. This lets them
|
||||
* directly draw or compose over an existing bitmap. If this bit is
|
||||
* not set, the target pixmap's buffer _must_ be zeroed before
|
||||
* rendering.
|
||||
* _not_ set, the target pixmap's buffer _must_ be zeroed before
|
||||
* rendering and the output will be clipped to its size.
|
||||
*
|
||||
* Direct rendering is only possible with anti-aliased glyphs.
|
||||
*
|
||||
* FT_RASTER_FLAG_CLIP ::
|
||||
* This flag is only used in direct rendering mode. If set, the output
|
||||
* will be clipped to a box specified in the `clip_box` field of the
|
||||
* @FT_Raster_Params structure.
|
||||
* @FT_Raster_Params structure. Otherwise, the `clip_box` is
|
||||
* effectively set to the bounding box and all spans are generated.
|
||||
*
|
||||
* Note that by default, the glyph bitmap is clipped to the target
|
||||
* pixmap, except in direct rendering mode where all spans are
|
||||
* generated if no clipping box is set.
|
||||
* FT_RASTER_FLAG_SDF ::
|
||||
* This flag is set to indicate that a signed distance field glyph
|
||||
* image should be generated. This is only used while rendering with
|
||||
* the @FT_RENDER_MODE_SDF render mode.
|
||||
*/
|
||||
#define FT_RASTER_FLAG_DEFAULT 0x0
|
||||
#define FT_RASTER_FLAG_AA 0x1
|
||||
#define FT_RASTER_FLAG_DIRECT 0x2
|
||||
#define FT_RASTER_FLAG_CLIP 0x4
|
||||
#define FT_RASTER_FLAG_SDF 0x8
|
||||
|
||||
/* these constants are deprecated; use the corresponding */
|
||||
/* `FT_RASTER_FLAG_XXX` values instead */
|
||||
@@ -978,7 +998,8 @@ FT_BEGIN_HEADER
|
||||
* FT_Raster_Params
|
||||
*
|
||||
* @description:
|
||||
* A structure to hold the arguments used by a raster's render function.
|
||||
* A structure to hold the parameters used by a raster's render function,
|
||||
* passed as an argument to @FT_Outline_Render.
|
||||
*
|
||||
* @fields:
|
||||
* target ::
|
||||
@@ -1006,20 +1027,26 @@ FT_BEGIN_HEADER
|
||||
* User-supplied data that is passed to each drawing callback.
|
||||
*
|
||||
* clip_box ::
|
||||
* An optional clipping box. It is only used in direct rendering mode.
|
||||
* Note that coordinates here should be expressed in _integer_ pixels
|
||||
* (and not in 26.6 fixed-point units).
|
||||
* An optional span clipping box expressed in _integer_ pixels
|
||||
* (not in 26.6 fixed-point units).
|
||||
*
|
||||
* @note:
|
||||
* An anti-aliased glyph bitmap is drawn if the @FT_RASTER_FLAG_AA bit
|
||||
* flag is set in the `flags` field, otherwise a monochrome bitmap is
|
||||
* generated.
|
||||
* The @FT_RASTER_FLAG_AA bit flag must be set in the `flags` to
|
||||
* generate an anti-aliased glyph bitmap, otherwise a monochrome bitmap
|
||||
* is generated. The `target` should have appropriate pixel mode and its
|
||||
* dimensions define the clipping region.
|
||||
*
|
||||
* If the @FT_RASTER_FLAG_DIRECT bit flag is set in `flags`, the raster
|
||||
* will call the `gray_spans` callback to draw gray pixel spans. This
|
||||
* allows direct composition over a pre-existing bitmap through
|
||||
* user-provided callbacks to perform the span drawing and composition.
|
||||
* Not supported by the monochrome rasterizer.
|
||||
* If both @FT_RASTER_FLAG_AA and @FT_RASTER_FLAG_DIRECT bit flags
|
||||
* are set in `flags`, the raster calls an @FT_SpanFunc callback
|
||||
* `gray_spans` with `user` data as an argument ignoring `target`. This
|
||||
* allows direct composition over a pre-existing user surface to perform
|
||||
* the span drawing and composition. To optionally clip the spans, set
|
||||
* the @FT_RASTER_FLAG_CLIP flag and `clip_box`. The monochrome raster
|
||||
* does not support the direct mode.
|
||||
*
|
||||
* The gray-level rasterizer always uses 256 gray levels. If you want
|
||||
* fewer gray levels, you have to use @FT_RASTER_FLAG_DIRECT and reduce
|
||||
* the levels in the callback function.
|
||||
*/
|
||||
typedef struct FT_Raster_Params_
|
||||
{
|
||||
@@ -1036,6 +1063,23 @@ FT_BEGIN_HEADER
|
||||
} FT_Raster_Params;
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @type:
|
||||
* FT_Raster
|
||||
*
|
||||
* @description:
|
||||
* An opaque handle (pointer) to a raster object. Each object can be
|
||||
* used independently to convert an outline into a bitmap or pixmap.
|
||||
*
|
||||
* @note:
|
||||
* In FreeType 2, all rasters are now encapsulated within specific
|
||||
* @FT_Renderer modules and only used in their context.
|
||||
*
|
||||
*/
|
||||
typedef struct FT_RasterRec_* FT_Raster;
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @functype:
|
||||
|
||||
22
Source/ThirdParty/freetype/ftincrem.h
vendored
22
Source/ThirdParty/freetype/ftincrem.h
vendored
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* FreeType incremental loading (specification).
|
||||
*
|
||||
* Copyright (C) 2002-2019 by
|
||||
* Copyright (C) 2002-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
@@ -19,9 +19,8 @@
|
||||
#ifndef FTINCREM_H_
|
||||
#define FTINCREM_H_
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_FREETYPE_H
|
||||
#include FT_PARAMETER_TAGS_H
|
||||
#include <freetype/freetype.h>
|
||||
#include <freetype/ftparams.h>
|
||||
|
||||
#ifdef FREETYPE_H
|
||||
#error "freetype.h of FreeType 1 has been loaded!"
|
||||
@@ -214,9 +213,14 @@ FT_BEGIN_HEADER
|
||||
*
|
||||
* @description:
|
||||
* A function used to retrieve the basic metrics of a given glyph index
|
||||
* before accessing its data. This is necessary because, in certain
|
||||
* formats like TrueType, the metrics are stored in a different place
|
||||
* from the glyph images proper.
|
||||
* before accessing its data. This allows for handling font types such
|
||||
* as PCL~XL Format~1, Class~2 downloaded TrueType fonts, where the glyph
|
||||
* metrics (`hmtx` and `vmtx` tables) are permitted to be omitted from
|
||||
* the font, and the relevant metrics included in the header of the glyph
|
||||
* outline data. Importantly, this is not intended to allow custom glyph
|
||||
* metrics (for example, Postscript Metrics dictionaries), because that
|
||||
* conflicts with the requirements of outline hinting. Such custom
|
||||
* metrics must be handled separately, by the calling application.
|
||||
*
|
||||
* @input:
|
||||
* incremental ::
|
||||
@@ -236,7 +240,7 @@ FT_BEGIN_HEADER
|
||||
*
|
||||
* @output:
|
||||
* ametrics ::
|
||||
* The replacement glyph metrics in font units.
|
||||
* The glyph metrics in font units.
|
||||
*
|
||||
*/
|
||||
typedef FT_Error
|
||||
@@ -265,7 +269,7 @@ FT_BEGIN_HEADER
|
||||
*
|
||||
* get_glyph_metrics ::
|
||||
* The function to get glyph metrics. May be null if the font does not
|
||||
* provide overriding glyph metrics.
|
||||
* require it.
|
||||
*
|
||||
*/
|
||||
typedef struct FT_Incremental_FuncsRec_
|
||||
|
||||
59
Source/ThirdParty/freetype/ftlcdfil.h
vendored
59
Source/ThirdParty/freetype/ftlcdfil.h
vendored
@@ -5,7 +5,7 @@
|
||||
* FreeType API for color filtering of subpixel bitmap glyphs
|
||||
* (specification).
|
||||
*
|
||||
* Copyright (C) 2006-2019 by
|
||||
* Copyright (C) 2006-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
@@ -20,9 +20,8 @@
|
||||
#ifndef FTLCDFIL_H_
|
||||
#define FTLCDFIL_H_
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_FREETYPE_H
|
||||
#include FT_PARAMETER_TAGS_H
|
||||
#include <freetype/freetype.h>
|
||||
#include <freetype/ftparams.h>
|
||||
|
||||
#ifdef FREETYPE_H
|
||||
#error "freetype.h of FreeType 1 has been loaded!"
|
||||
@@ -45,9 +44,9 @@ FT_BEGIN_HEADER
|
||||
* API to control subpixel rendering.
|
||||
*
|
||||
* @description:
|
||||
* FreeType provides two alternative subpixel rendering technologies.
|
||||
* FreeType provides two alternative subpixel rendering technologies.
|
||||
* Should you define `FT_CONFIG_OPTION_SUBPIXEL_RENDERING` in your
|
||||
* `ftoption.h` file, this enables patented ClearType-style rendering.
|
||||
* `ftoption.h` file, this enables ClearType-style rendering.
|
||||
* Otherwise, Harmony LCD rendering is enabled. These technologies are
|
||||
* controlled differently and API described below, although always
|
||||
* available, performs its function when appropriate method is enabled
|
||||
@@ -56,13 +55,12 @@ FT_BEGIN_HEADER
|
||||
* ClearType-style LCD rendering exploits the color-striped structure of
|
||||
* LCD pixels, increasing the available resolution in the direction of
|
||||
* the stripe (usually horizontal RGB) by a factor of~3. Using the
|
||||
* subpixels coverages unfiltered can create severe color fringes
|
||||
* subpixel coverages unfiltered can create severe color fringes
|
||||
* especially when rendering thin features. Indeed, to produce
|
||||
* black-on-white text, the nearby color subpixels must be dimmed
|
||||
* equally.
|
||||
*
|
||||
* A good 5-tap FIR filter should be applied to subpixel coverages
|
||||
* regardless of pixel boundaries and should have these properties:
|
||||
* evenly. Therefore, an equalizing 5-tap FIR filter should be applied
|
||||
* to subpixel coverages regardless of pixel boundaries and should have
|
||||
* these properties:
|
||||
*
|
||||
* 1. It should be symmetrical, like {~a, b, c, b, a~}, to avoid
|
||||
* any shifts in appearance.
|
||||
@@ -85,7 +83,7 @@ FT_BEGIN_HEADER
|
||||
* Harmony LCD rendering is suitable to panels with any regular subpixel
|
||||
* structure, not just monitors with 3 color striped subpixels, as long
|
||||
* as the color subpixels have fixed positions relative to the pixel
|
||||
* center. In this case, each color channel is then rendered separately
|
||||
* center. In this case, each color channel can be rendered separately
|
||||
* after shifting the outline opposite to the subpixel shift so that the
|
||||
* coverage maps are aligned. This method is immune to color fringes
|
||||
* because the shifts do not change integral coverage.
|
||||
@@ -102,9 +100,9 @@ FT_BEGIN_HEADER
|
||||
* clockwise. Harmony with default LCD geometry is equivalent to
|
||||
* ClearType with light filter.
|
||||
*
|
||||
* As a result of ClearType filtering or Harmony rendering, the
|
||||
* dimensions of LCD bitmaps can be either wider or taller than the
|
||||
* dimensions of the corresponding outline with regard to the pixel grid.
|
||||
* As a result of ClearType filtering or Harmony shifts, the resulting
|
||||
* dimensions of LCD bitmaps can be slightly wider or taller than the
|
||||
* dimensions the original outline with regard to the pixel grid.
|
||||
* For example, for @FT_RENDER_MODE_LCD, the filter adds 2~subpixels to
|
||||
* the left, and 2~subpixels to the right. The bitmap offset values are
|
||||
* adjusted accordingly, so clients shouldn't need to modify their layout
|
||||
@@ -139,11 +137,11 @@ FT_BEGIN_HEADER
|
||||
*
|
||||
* FT_LCD_FILTER_DEFAULT ::
|
||||
* This is a beveled, normalized, and color-balanced five-tap filter
|
||||
* with weights of [0x08 0x4D 0x56 0x4D 0x08] in 1/256th units.
|
||||
* with weights of [0x08 0x4D 0x56 0x4D 0x08] in 1/256 units.
|
||||
*
|
||||
* FT_LCD_FILTER_LIGHT ::
|
||||
* this is a boxy, normalized, and color-balanced three-tap filter with
|
||||
* weights of [0x00 0x55 0x56 0x55 0x00] in 1/256th units.
|
||||
* weights of [0x00 0x55 0x56 0x55 0x00] in 1/256 units.
|
||||
*
|
||||
* FT_LCD_FILTER_LEGACY ::
|
||||
* FT_LCD_FILTER_LEGACY1 ::
|
||||
@@ -177,7 +175,7 @@ FT_BEGIN_HEADER
|
||||
* FT_Library_SetLcdFilter
|
||||
*
|
||||
* @description:
|
||||
* This function is used to apply color filtering to LCD decimated
|
||||
* This function is used to change filter applied to LCD decimated
|
||||
* bitmaps, like the ones used when calling @FT_Render_Glyph with
|
||||
* @FT_RENDER_MODE_LCD or @FT_RENDER_MODE_LCD_V.
|
||||
*
|
||||
@@ -196,15 +194,14 @@ FT_BEGIN_HEADER
|
||||
* FreeType error code. 0~means success.
|
||||
*
|
||||
* @note:
|
||||
* This feature is always disabled by default. Clients must make an
|
||||
* explicit call to this function with a `filter` value other than
|
||||
* @FT_LCD_FILTER_NONE in order to enable it.
|
||||
* Since 2.10.3 the LCD filtering is enabled with @FT_LCD_FILTER_DEFAULT.
|
||||
* It is no longer necessary to call this function explicitly except
|
||||
* to choose a different filter or disable filtering altogether with
|
||||
* @FT_LCD_FILTER_NONE.
|
||||
*
|
||||
* Due to **PATENTS** covering subpixel rendering, this function doesn't
|
||||
* do anything except returning `FT_Err_Unimplemented_Feature` if the
|
||||
* configuration macro `FT_CONFIG_OPTION_SUBPIXEL_RENDERING` is not
|
||||
* defined in your build of the library, which should correspond to all
|
||||
* default builds of FreeType.
|
||||
* This function does nothing but returns `FT_Err_Unimplemented_Feature`
|
||||
* if the configuration macro `FT_CONFIG_OPTION_SUBPIXEL_RENDERING` is
|
||||
* not defined in your build of the library.
|
||||
*
|
||||
* @since:
|
||||
* 2.3.0
|
||||
@@ -229,17 +226,15 @@ FT_BEGIN_HEADER
|
||||
*
|
||||
* weights ::
|
||||
* A pointer to an array; the function copies the first five bytes and
|
||||
* uses them to specify the filter weights in 1/256th units.
|
||||
* uses them to specify the filter weights in 1/256 units.
|
||||
*
|
||||
* @return:
|
||||
* FreeType error code. 0~means success.
|
||||
*
|
||||
* @note:
|
||||
* Due to **PATENTS** covering subpixel rendering, this function doesn't
|
||||
* do anything except returning `FT_Err_Unimplemented_Feature` if the
|
||||
* configuration macro `FT_CONFIG_OPTION_SUBPIXEL_RENDERING` is not
|
||||
* defined in your build of the library, which should correspond to all
|
||||
* default builds of FreeType.
|
||||
* This function does nothing but returns `FT_Err_Unimplemented_Feature`
|
||||
* if the configuration macro `FT_CONFIG_OPTION_SUBPIXEL_RENDERING` is
|
||||
* not defined in your build of the library.
|
||||
*
|
||||
* LCD filter weights can also be set per face using @FT_Face_Properties
|
||||
* with @FT_PARAM_TAG_LCD_FILTER_WEIGHTS.
|
||||
|
||||
5
Source/ThirdParty/freetype/ftlist.h
vendored
5
Source/ThirdParty/freetype/ftlist.h
vendored
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* Generic list support for FreeType (specification).
|
||||
*
|
||||
* Copyright (C) 1996-2019 by
|
||||
* Copyright (C) 1996-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
@@ -28,8 +28,7 @@
|
||||
#define FTLIST_H_
|
||||
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_FREETYPE_H
|
||||
#include <freetype/freetype.h>
|
||||
|
||||
#ifdef FREETYPE_H
|
||||
#error "freetype.h of FreeType 1 has been loaded!"
|
||||
|
||||
184
Source/ThirdParty/freetype/ftlogging.h
vendored
Normal file
184
Source/ThirdParty/freetype/ftlogging.h
vendored
Normal file
@@ -0,0 +1,184 @@
|
||||
/****************************************************************************
|
||||
*
|
||||
* ftlogging.h
|
||||
*
|
||||
* Additional debugging APIs.
|
||||
*
|
||||
* Copyright (C) 2020-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
* modified, and distributed under the terms of the FreeType project
|
||||
* license, LICENSE.TXT. By continuing to use, modify, or distribute
|
||||
* this file you indicate that you have read the license and
|
||||
* understand and accept it fully.
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#ifndef FTLOGGING_H_
|
||||
#define FTLOGGING_H_
|
||||
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_CONFIG_CONFIG_H
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @section:
|
||||
* debugging_apis
|
||||
*
|
||||
* @title:
|
||||
* External Debugging APIs
|
||||
*
|
||||
* @abstract:
|
||||
* Public APIs to control the `FT_DEBUG_LOGGING` macro.
|
||||
*
|
||||
* @description:
|
||||
* This section contains the declarations of public functions that
|
||||
* enables fine control of what the `FT_DEBUG_LOGGING` macro outputs.
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @function:
|
||||
* FT_Trace_Set_Level
|
||||
*
|
||||
* @description:
|
||||
* Change the levels of tracing components of FreeType at run time.
|
||||
*
|
||||
* @input:
|
||||
* tracing_level ::
|
||||
* New tracing value.
|
||||
*
|
||||
* @example:
|
||||
* The following call makes FreeType trace everything but the 'memory'
|
||||
* component.
|
||||
*
|
||||
* ```
|
||||
* FT_Trace_Set_Level( "any:7 memory:0" );
|
||||
* ```
|
||||
*
|
||||
* @note:
|
||||
* This function does nothing if compilation option `FT_DEBUG_LOGGING`
|
||||
* isn't set.
|
||||
*
|
||||
* @since:
|
||||
* 2.11
|
||||
*
|
||||
*/
|
||||
FT_EXPORT( void )
|
||||
FT_Trace_Set_Level( const char* tracing_level );
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @function:
|
||||
* FT_Trace_Set_Default_Level
|
||||
*
|
||||
* @description:
|
||||
* Reset tracing value of FreeType's components to the default value
|
||||
* (i.e., to the value of the `FT2_DEBUG` environment value or to NULL
|
||||
* if `FT2_DEBUG` is not set).
|
||||
*
|
||||
* @note:
|
||||
* This function does nothing if compilation option `FT_DEBUG_LOGGING`
|
||||
* isn't set.
|
||||
*
|
||||
* @since:
|
||||
* 2.11
|
||||
*
|
||||
*/
|
||||
FT_EXPORT( void )
|
||||
FT_Trace_Set_Default_Level( void );
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @functype:
|
||||
* FT_Custom_Log_Handler
|
||||
*
|
||||
* @description:
|
||||
* A function typedef that is used to handle the logging of tracing and
|
||||
* debug messages on a file system.
|
||||
*
|
||||
* @input:
|
||||
* ft_component ::
|
||||
* The name of `FT_COMPONENT` from which the current debug or error
|
||||
* message is produced.
|
||||
*
|
||||
* fmt ::
|
||||
* Actual debug or tracing message.
|
||||
*
|
||||
* args::
|
||||
* Arguments of debug or tracing messages.
|
||||
*
|
||||
* @since:
|
||||
* 2.11
|
||||
*
|
||||
*/
|
||||
typedef void
|
||||
(*FT_Custom_Log_Handler)( const char* ft_component,
|
||||
const char* fmt,
|
||||
va_list args );
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @function:
|
||||
* FT_Set_Log_Handler
|
||||
*
|
||||
* @description:
|
||||
* A function to set a custom log handler.
|
||||
*
|
||||
* @input:
|
||||
* handler ::
|
||||
* New logging function.
|
||||
*
|
||||
* @note:
|
||||
* This function does nothing if compilation option `FT_DEBUG_LOGGING`
|
||||
* isn't set.
|
||||
*
|
||||
* @since:
|
||||
* 2.11
|
||||
*
|
||||
*/
|
||||
FT_EXPORT( void )
|
||||
FT_Set_Log_Handler( FT_Custom_Log_Handler handler );
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @function:
|
||||
* FT_Set_Default_Log_Handler
|
||||
*
|
||||
* @description:
|
||||
* A function to undo the effect of @FT_Set_Log_Handler, resetting the
|
||||
* log handler to FreeType's built-in version.
|
||||
*
|
||||
* @note:
|
||||
* This function does nothing if compilation option `FT_DEBUG_LOGGING`
|
||||
* isn't set.
|
||||
*
|
||||
* @since:
|
||||
* 2.11
|
||||
*
|
||||
*/
|
||||
FT_EXPORT( void )
|
||||
FT_Set_Default_Log_Handler( void );
|
||||
|
||||
/* */
|
||||
|
||||
|
||||
FT_END_HEADER
|
||||
|
||||
#endif /* FTLOGGING_H_ */
|
||||
|
||||
|
||||
/* END */
|
||||
24
Source/ThirdParty/freetype/ftlzw.h
vendored
24
Source/ThirdParty/freetype/ftlzw.h
vendored
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* LZW-compressed stream support.
|
||||
*
|
||||
* Copyright (C) 2004-2019 by
|
||||
* Copyright (C) 2004-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
@@ -19,8 +19,7 @@
|
||||
#ifndef FTLZW_H_
|
||||
#define FTLZW_H_
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_FREETYPE_H
|
||||
#include <freetype/freetype.h>
|
||||
|
||||
#ifdef FREETYPE_H
|
||||
#error "freetype.h of FreeType 1 has been loaded!"
|
||||
@@ -43,6 +42,16 @@ FT_BEGIN_HEADER
|
||||
* Using LZW-compressed font files.
|
||||
*
|
||||
* @description:
|
||||
* In certain builds of the library, LZW compression recognition is
|
||||
* automatically handled when calling @FT_New_Face or @FT_Open_Face.
|
||||
* This means that if no font driver is capable of handling the raw
|
||||
* compressed file, the library will try to open a LZW stream from it and
|
||||
* re-open the face with it.
|
||||
*
|
||||
* The stream implementation is very basic and resets the decompression
|
||||
* process each time seeking backwards is needed within the stream,
|
||||
* which significantly undermines the performance.
|
||||
*
|
||||
* This section contains the declaration of LZW-specific functions.
|
||||
*
|
||||
*/
|
||||
@@ -73,15 +82,6 @@ FT_BEGIN_HEADER
|
||||
* **not** call `FT_Stream_Close` on the source stream. None of the
|
||||
* stream objects will be released to the heap.
|
||||
*
|
||||
* The stream implementation is very basic and resets the decompression
|
||||
* process each time seeking backwards is needed within the stream
|
||||
*
|
||||
* In certain builds of the library, LZW compression recognition is
|
||||
* automatically handled when calling @FT_New_Face or @FT_Open_Face.
|
||||
* This means that if no font driver is capable of handling the raw
|
||||
* compressed file, the library will try to open a LZW stream from it and
|
||||
* re-open the face with it.
|
||||
*
|
||||
* This function may return `FT_Err_Unimplemented_Feature` if your build
|
||||
* of FreeType was not compiled with LZW support.
|
||||
*/
|
||||
|
||||
3
Source/ThirdParty/freetype/ftmac.h
vendored
3
Source/ThirdParty/freetype/ftmac.h
vendored
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* Additional Mac-specific API.
|
||||
*
|
||||
* Copyright (C) 1996-2019 by
|
||||
* Copyright (C) 1996-2023 by
|
||||
* Just van Rossum, David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
@@ -29,7 +29,6 @@
|
||||
#define FTMAC_H_
|
||||
|
||||
|
||||
#include <ft2build.h>
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
74
Source/ThirdParty/freetype/ftmm.h
vendored
74
Source/ThirdParty/freetype/ftmm.h
vendored
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* FreeType Multiple Master font interface (specification).
|
||||
*
|
||||
* Copyright (C) 1996-2019 by
|
||||
* Copyright (C) 1996-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
@@ -20,8 +20,7 @@
|
||||
#define FTMM_H_
|
||||
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_TYPE1_TABLES_H
|
||||
#include <freetype/t1tables.h>
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
@@ -48,6 +47,9 @@ FT_BEGIN_HEADER
|
||||
* MM fonts, others will work with all three types. They are similar
|
||||
* enough that a consistent interface makes sense.
|
||||
*
|
||||
* For Adobe MM fonts, macro @FT_IS_SFNT returns false. For GX and
|
||||
* OpenType variation fonts, it returns true.
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
@@ -151,7 +153,7 @@ FT_BEGIN_HEADER
|
||||
* @note:
|
||||
* The fields `minimum`, `def`, and `maximum` are 16.16 fractional values
|
||||
* for TrueType GX and OpenType variation fonts. For Adobe MM fonts, the
|
||||
* values are integers.
|
||||
* values are whole numbers (i.e., the fractional part is zero).
|
||||
*/
|
||||
typedef struct FT_Var_Axis_
|
||||
{
|
||||
@@ -396,6 +398,10 @@ FT_BEGIN_HEADER
|
||||
* FreeType error code. 0~means success.
|
||||
*
|
||||
* @note:
|
||||
* The design coordinates are 16.16 fractional values for TrueType GX and
|
||||
* OpenType variation fonts. For Adobe MM fonts, the values are supposed
|
||||
* 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
|
||||
* function with `num_coords` set to zero and `coords` set to `NULL`.
|
||||
* [Since 2.9] 'Default values' means the currently selected named
|
||||
@@ -438,6 +444,11 @@ FT_BEGIN_HEADER
|
||||
* @return:
|
||||
* FreeType error code. 0~means success.
|
||||
*
|
||||
* @note:
|
||||
* The design coordinates are 16.16 fractional values for TrueType GX and
|
||||
* OpenType variation fonts. For Adobe MM fonts, the values are whole
|
||||
* numbers (i.e., the fractional part is zero).
|
||||
*
|
||||
* @since:
|
||||
* 2.7.1
|
||||
*/
|
||||
@@ -469,9 +480,9 @@ FT_BEGIN_HEADER
|
||||
* the number of axes, use default values for the remaining axes.
|
||||
*
|
||||
* coords ::
|
||||
* The design coordinates array (each element must be between 0 and 1.0
|
||||
* for Adobe MM fonts, and between -1.0 and 1.0 for TrueType GX and
|
||||
* OpenType variation fonts).
|
||||
* The design coordinates array. Each element is a 16.16 fractional
|
||||
* value and must be between 0 and 1.0 for Adobe MM fonts, and between
|
||||
* -1.0 and 1.0 for TrueType GX and OpenType variation fonts.
|
||||
*
|
||||
* @return:
|
||||
* FreeType error code. 0~means success.
|
||||
@@ -516,7 +527,7 @@ FT_BEGIN_HEADER
|
||||
*
|
||||
* @output:
|
||||
* coords ::
|
||||
* The normalized blend coordinates array.
|
||||
* The normalized blend coordinates array (as 16.16 fractional values).
|
||||
*
|
||||
* @return:
|
||||
* FreeType error code. 0~means success.
|
||||
@@ -591,10 +602,12 @@ FT_BEGIN_HEADER
|
||||
*
|
||||
* @note:
|
||||
* Adobe Multiple Master fonts limit the number of designs, and thus the
|
||||
* length of the weight vector to~16.
|
||||
* length of the weight vector to 16~elements.
|
||||
*
|
||||
* If `len` is zero and `weightvector` is `NULL`, the weight vector array
|
||||
* is reset to the default values.
|
||||
* 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_IS_VARIATION will return true). If `len` is zero, this bit flag
|
||||
* is unset and the weight vector array is reset to the default values.
|
||||
*
|
||||
* The Adobe documentation also states that the values in the
|
||||
* WeightVector array must total 1.0 +/-~0.001. In practice this does
|
||||
@@ -742,6 +755,45 @@ FT_BEGIN_HEADER
|
||||
FT_Set_Named_Instance( FT_Face face,
|
||||
FT_UInt instance_index );
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @function:
|
||||
* FT_Get_Default_Named_Instance
|
||||
*
|
||||
* @description:
|
||||
* Retrieve the index of the default named instance, to be used with
|
||||
* @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
|
||||
* font does not contain such an entry.
|
||||
*
|
||||
* @input:
|
||||
* face ::
|
||||
* A handle to the source face.
|
||||
*
|
||||
* @output:
|
||||
* instance_index ::
|
||||
* The index of the default named instance.
|
||||
*
|
||||
* @return:
|
||||
* FreeType error code. 0~means success.
|
||||
*
|
||||
* @note:
|
||||
* For Adobe MM fonts (which don't have named instances) this function
|
||||
* always returns zero for `instance_index`.
|
||||
*
|
||||
* @since:
|
||||
* 2.13.1
|
||||
*/
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Get_Default_Named_Instance( FT_Face face,
|
||||
FT_UInt *instance_index );
|
||||
|
||||
/* */
|
||||
|
||||
|
||||
|
||||
42
Source/ThirdParty/freetype/ftmodapi.h
vendored
42
Source/ThirdParty/freetype/ftmodapi.h
vendored
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* FreeType modules public interface (specification).
|
||||
*
|
||||
* Copyright (C) 1996-2019 by
|
||||
* Copyright (C) 1996-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
@@ -20,8 +20,7 @@
|
||||
#define FTMODAPI_H_
|
||||
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_FREETYPE_H
|
||||
#include <freetype/freetype.h>
|
||||
|
||||
#ifdef FREETYPE_H
|
||||
#error "freetype.h of FreeType 1 has been loaded!"
|
||||
@@ -46,10 +45,12 @@ FT_BEGIN_HEADER
|
||||
*
|
||||
* @description:
|
||||
* The definitions below are used to manage modules within FreeType.
|
||||
* Modules can be added, upgraded, and removed at runtime. Additionally,
|
||||
* some module properties can be controlled also.
|
||||
* Internal and external modules can be added, upgraded, and removed at
|
||||
* runtime. For example, an alternative renderer or proprietary font
|
||||
* driver can be registered and prioritized. Additionally, some module
|
||||
* properties can also be controlled.
|
||||
*
|
||||
* Here is a list of possible values of the `module_name` field in the
|
||||
* Here is a list of existing values of the `module_name` field in the
|
||||
* @FT_Module_Class structure.
|
||||
*
|
||||
* ```
|
||||
@@ -65,7 +66,7 @@ FT_BEGIN_HEADER
|
||||
* psnames
|
||||
* raster1
|
||||
* sfnt
|
||||
* smooth, smooth-lcd, smooth-lcdv
|
||||
* smooth
|
||||
* truetype
|
||||
* type1
|
||||
* type42
|
||||
@@ -87,6 +88,7 @@ FT_BEGIN_HEADER
|
||||
* FT_Remove_Module
|
||||
* FT_Add_Default_Modules
|
||||
*
|
||||
* FT_FACE_DRIVER_NAME
|
||||
* FT_Property_Set
|
||||
* FT_Property_Get
|
||||
* FT_Set_Default_Properties
|
||||
@@ -329,6 +331,27 @@ FT_BEGIN_HEADER
|
||||
FT_Module module );
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @macro:
|
||||
* FT_FACE_DRIVER_NAME
|
||||
*
|
||||
* @description:
|
||||
* A macro that retrieves the name of a font driver from a face object.
|
||||
*
|
||||
* @note:
|
||||
* The font driver name is a valid `module_name` for @FT_Property_Set
|
||||
* and @FT_Property_Get. This is not the same as @FT_Get_Font_Format.
|
||||
*
|
||||
* @since:
|
||||
* 2.11
|
||||
*
|
||||
*/
|
||||
#define FT_FACE_DRIVER_NAME( face ) \
|
||||
( ( *FT_REINTERPRET_CAST( FT_Module_Class**, \
|
||||
( face )->driver ) )->module_name )
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @function:
|
||||
@@ -486,8 +509,7 @@ FT_BEGIN_HEADER
|
||||
*
|
||||
* ```
|
||||
* FREETYPE_PROPERTIES=truetype:interpreter-version=35 \
|
||||
* cff:no-stem-darkening=1 \
|
||||
* autofitter:warping=1
|
||||
* cff:no-stem-darkening=0
|
||||
* ```
|
||||
*
|
||||
* @inout:
|
||||
@@ -623,7 +645,7 @@ FT_BEGIN_HEADER
|
||||
* it is bytecode interpreter's execution context, `TT_ExecContext`,
|
||||
* which is declared in FreeType's internal header file `tttypes.h`.
|
||||
*/
|
||||
typedef void
|
||||
typedef FT_Error
|
||||
(*FT_DebugHook_Func)( void* arg );
|
||||
|
||||
|
||||
|
||||
5
Source/ThirdParty/freetype/ftmoderr.h
vendored
5
Source/ThirdParty/freetype/ftmoderr.h
vendored
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* FreeType module error offsets (specification).
|
||||
*
|
||||
* Copyright (C) 2001-2019 by
|
||||
* Copyright (C) 2001-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
@@ -94,7 +94,7 @@
|
||||
* const char* mod_err_msg
|
||||
* } ft_mod_errors[] =
|
||||
*
|
||||
* #include FT_MODULE_ERRORS_H
|
||||
* #include <freetype/ftmoderr.h>
|
||||
* ```
|
||||
*
|
||||
*/
|
||||
@@ -171,6 +171,7 @@
|
||||
FT_MODERRDEF( Type42, 0x1400, "Type 42 module" )
|
||||
FT_MODERRDEF( Winfonts, 0x1500, "Windows FON/FNT module" )
|
||||
FT_MODERRDEF( GXvalid, 0x1600, "GX validation module" )
|
||||
FT_MODERRDEF( Sdf, 0x1700, "Signed distance field raster module" )
|
||||
|
||||
|
||||
#ifdef FT_MODERR_END_LIST
|
||||
|
||||
5
Source/ThirdParty/freetype/ftotval.h
vendored
5
Source/ThirdParty/freetype/ftotval.h
vendored
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* FreeType API for validating OpenType tables (specification).
|
||||
*
|
||||
* Copyright (C) 2004-2019 by
|
||||
* Copyright (C) 2004-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
@@ -30,8 +30,7 @@
|
||||
#ifndef FTOTVAL_H_
|
||||
#define FTOTVAL_H_
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_FREETYPE_H
|
||||
#include <freetype/freetype.h>
|
||||
|
||||
#ifdef FREETYPE_H
|
||||
#error "freetype.h of FreeType 1 has been loaded!"
|
||||
|
||||
35
Source/ThirdParty/freetype/ftoutln.h
vendored
35
Source/ThirdParty/freetype/ftoutln.h
vendored
@@ -5,7 +5,7 @@
|
||||
* Support for the FT_Outline type used to store glyph shapes of
|
||||
* most scalable font formats (specification).
|
||||
*
|
||||
* Copyright (C) 1996-2019 by
|
||||
* Copyright (C) 1996-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
@@ -21,8 +21,7 @@
|
||||
#define FTOUTLN_H_
|
||||
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_FREETYPE_H
|
||||
#include <freetype/freetype.h>
|
||||
|
||||
#ifdef FREETYPE_H
|
||||
#error "freetype.h of FreeType 1 has been loaded!"
|
||||
@@ -110,14 +109,16 @@ FT_BEGIN_HEADER
|
||||
* FreeType error code. 0~means success.
|
||||
*
|
||||
* @note:
|
||||
* A contour that contains a single point only is represented by a 'move
|
||||
* to' operation followed by 'line to' to the same point. In most cases,
|
||||
* it is best to filter this out before using the outline for stroking
|
||||
* purposes (otherwise it would result in a visible dot when round caps
|
||||
* are used).
|
||||
* Degenerate contours, segments, and Bezier arcs may be reported. In
|
||||
* most cases, it is best to filter these out before using the outline
|
||||
* for stroking or other path modification purposes (which may cause
|
||||
* degenerate segments to become non-degenrate and visible, like when
|
||||
* stroke caps are used or the path is otherwise outset). Some glyph
|
||||
* outlines may contain deliberate degenerate single points for mark
|
||||
* attachement.
|
||||
*
|
||||
* Similarly, the function returns success for an empty outline also
|
||||
* (doing nothing, this is, not calling any emitter); if necessary, you
|
||||
* (doing nothing, that is, not calling any emitter); if necessary, you
|
||||
* should filter this out, too.
|
||||
*/
|
||||
FT_EXPORT( FT_Error )
|
||||
@@ -466,8 +467,6 @@ FT_BEGIN_HEADER
|
||||
*
|
||||
* @description:
|
||||
* Render an outline within a bitmap using the current scan-convert.
|
||||
* This function uses an @FT_Raster_Params structure as an argument,
|
||||
* allowing advanced features like direct composition, translucency, etc.
|
||||
*
|
||||
* @input:
|
||||
* library ::
|
||||
@@ -485,17 +484,13 @@ FT_BEGIN_HEADER
|
||||
* FreeType error code. 0~means success.
|
||||
*
|
||||
* @note:
|
||||
* You should know what you are doing and how @FT_Raster_Params works to
|
||||
* use this function.
|
||||
*
|
||||
* This advanced function uses @FT_Raster_Params as an argument.
|
||||
* The field `params.source` will be set to `outline` before the scan
|
||||
* converter is called, which means that the value you give to it is
|
||||
* actually ignored.
|
||||
*
|
||||
* The gray-level rasterizer always uses 256 gray levels. If you want
|
||||
* less gray levels, you have to provide your own span callback. See the
|
||||
* @FT_RASTER_FLAG_DIRECT value of the `flags` field in the
|
||||
* @FT_Raster_Params structure for more details.
|
||||
* actually ignored. Either `params.target` must point to preallocated
|
||||
* bitmap, or @FT_RASTER_FLAG_DIRECT must be set in `params.flags`
|
||||
* allowing FreeType rasterizer to be used for direct composition,
|
||||
* translucency, etc. See @FT_Raster_Params for more details.
|
||||
*/
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Outline_Render( FT_Library library,
|
||||
|
||||
20
Source/ThirdParty/freetype/ftparams.h
vendored
20
Source/ThirdParty/freetype/ftparams.h
vendored
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* FreeType API for possible FT_Parameter tags (specification only).
|
||||
*
|
||||
* Copyright (C) 2017-2019 by
|
||||
* Copyright (C) 2017-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
@@ -19,8 +19,7 @@
|
||||
#ifndef FTPARAMS_H_
|
||||
#define FTPARAMS_H_
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_FREETYPE_H
|
||||
#include <freetype/freetype.h>
|
||||
|
||||
#ifdef FREETYPE_H
|
||||
#error "freetype.h of FreeType 1 has been loaded!"
|
||||
@@ -113,6 +112,21 @@ FT_BEGIN_HEADER
|
||||
FT_MAKE_TAG( 'i', 'n', 'c', 'r' )
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @enum:
|
||||
* FT_PARAM_TAG_IGNORE_SBIX
|
||||
*
|
||||
* @description:
|
||||
* A tag for @FT_Parameter to make @FT_Open_Face ignore an 'sbix' table
|
||||
* while loading a font. Use this if @FT_FACE_FLAG_SBIX is set and you
|
||||
* want to access the outline glyphs in the font.
|
||||
*
|
||||
*/
|
||||
#define FT_PARAM_TAG_IGNORE_SBIX \
|
||||
FT_MAKE_TAG( 'i', 's', 'b', 'x' )
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @enum:
|
||||
|
||||
7
Source/ThirdParty/freetype/ftpfr.h
vendored
7
Source/ThirdParty/freetype/ftpfr.h
vendored
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* FreeType API for accessing PFR-specific data (specification only).
|
||||
*
|
||||
* Copyright (C) 2002-2019 by
|
||||
* Copyright (C) 2002-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
@@ -19,8 +19,7 @@
|
||||
#ifndef FTPFR_H_
|
||||
#define FTPFR_H_
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_FREETYPE_H
|
||||
#include <freetype/freetype.h>
|
||||
|
||||
#ifdef FREETYPE_H
|
||||
#error "freetype.h of FreeType 1 has been loaded!"
|
||||
@@ -162,7 +161,7 @@ FT_BEGIN_HEADER
|
||||
*
|
||||
* @note:
|
||||
* You can use the `x_scale` or `y_scale` results of @FT_Get_PFR_Metrics
|
||||
* to convert the advance to device subpixels (i.e., 1/64th of pixels).
|
||||
* to convert the advance to device subpixels (i.e., 1/64 of pixels).
|
||||
*/
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Get_PFR_Advance( FT_Face face,
|
||||
|
||||
9
Source/ThirdParty/freetype/ftrender.h
vendored
9
Source/ThirdParty/freetype/ftrender.h
vendored
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* FreeType renderer modules public interface (specification).
|
||||
*
|
||||
* Copyright (C) 1996-2019 by
|
||||
* Copyright (C) 1996-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
@@ -20,9 +20,8 @@
|
||||
#define FTRENDER_H_
|
||||
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_MODULE_H
|
||||
#include FT_GLYPH_H
|
||||
#include <freetype/ftmodapi.h>
|
||||
#include <freetype/ftglyph.h>
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
@@ -159,7 +158,7 @@ FT_BEGIN_HEADER
|
||||
FT_Renderer_GetCBoxFunc get_glyph_cbox;
|
||||
FT_Renderer_SetModeFunc set_mode;
|
||||
|
||||
FT_Raster_Funcs* raster_class;
|
||||
const FT_Raster_Funcs* raster_class;
|
||||
|
||||
} FT_Renderer_Class;
|
||||
|
||||
|
||||
5
Source/ThirdParty/freetype/ftsizes.h
vendored
5
Source/ThirdParty/freetype/ftsizes.h
vendored
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* FreeType size objects management (specification).
|
||||
*
|
||||
* Copyright (C) 1996-2019 by
|
||||
* Copyright (C) 1996-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
@@ -29,8 +29,7 @@
|
||||
#define FTSIZES_H_
|
||||
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_FREETYPE_H
|
||||
#include <freetype/freetype.h>
|
||||
|
||||
#ifdef FREETYPE_H
|
||||
#error "freetype.h of FreeType 1 has been loaded!"
|
||||
|
||||
7
Source/ThirdParty/freetype/ftsnames.h
vendored
7
Source/ThirdParty/freetype/ftsnames.h
vendored
@@ -7,7 +7,7 @@
|
||||
*
|
||||
* This is _not_ used to retrieve glyph names!
|
||||
*
|
||||
* Copyright (C) 1996-2019 by
|
||||
* Copyright (C) 1996-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
@@ -23,9 +23,8 @@
|
||||
#define FTSNAMES_H_
|
||||
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_FREETYPE_H
|
||||
#include FT_PARAMETER_TAGS_H
|
||||
#include <freetype/freetype.h>
|
||||
#include <freetype/ftparams.h>
|
||||
|
||||
#ifdef FREETYPE_H
|
||||
#error "freetype.h of FreeType 1 has been loaded!"
|
||||
|
||||
43
Source/ThirdParty/freetype/ftstroke.h
vendored
43
Source/ThirdParty/freetype/ftstroke.h
vendored
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* FreeType path stroker (specification).
|
||||
*
|
||||
* Copyright (C) 2002-2019 by
|
||||
* Copyright (C) 2002-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
@@ -19,9 +19,8 @@
|
||||
#ifndef FTSTROKE_H_
|
||||
#define FTSTROKE_H_
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_OUTLINE_H
|
||||
#include FT_GLYPH_H
|
||||
#include <freetype/ftoutln.h>
|
||||
#include <freetype/ftglyph.h>
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
@@ -44,7 +43,7 @@ FT_BEGIN_HEADER
|
||||
* borders of the stroke.
|
||||
*
|
||||
* This can be useful to generate 'bordered' glyph, i.e., glyphs
|
||||
* displayed with a coloured (and anti-aliased) border around their
|
||||
* displayed with a colored (and anti-aliased) border around their
|
||||
* shape.
|
||||
*
|
||||
* @order:
|
||||
@@ -114,22 +113,19 @@ FT_BEGIN_HEADER
|
||||
* FT_STROKER_LINEJOIN_MITER_FIXED ::
|
||||
* Used to render mitered line joins, with fixed bevels if the miter
|
||||
* limit is exceeded. The outer edges of the strokes for the two
|
||||
* segments are extended until they meet at an angle. If the segments
|
||||
* meet at too sharp an angle (such that the miter would extend from
|
||||
* the intersection of the segments a distance greater than the product
|
||||
* of the miter limit value and the border radius), then a bevel join
|
||||
* (see above) is used instead. This prevents long spikes being
|
||||
* created. `FT_STROKER_LINEJOIN_MITER_FIXED` generates a miter line
|
||||
* join as used in PostScript and PDF.
|
||||
* segments are extended until they meet at an angle. A bevel join
|
||||
* (see above) is used if the segments meet at too sharp an angle and
|
||||
* the outer edges meet beyond a distance corresponding to the meter
|
||||
* limit. This prevents long spikes being created.
|
||||
* `FT_STROKER_LINEJOIN_MITER_FIXED` generates a miter line join as
|
||||
* used in PostScript and PDF.
|
||||
*
|
||||
* FT_STROKER_LINEJOIN_MITER_VARIABLE ::
|
||||
* FT_STROKER_LINEJOIN_MITER ::
|
||||
* Used to render mitered line joins, with variable bevels if the miter
|
||||
* limit is exceeded. The intersection of the strokes is clipped at a
|
||||
* line perpendicular to the bisector of the angle between the strokes,
|
||||
* at the distance from the intersection of the segments equal to the
|
||||
* product of the miter limit value and the border radius. This
|
||||
* prevents long spikes being created.
|
||||
* limit is exceeded. The intersection of the strokes is clipped
|
||||
* perpendicularly to the bisector, at a distance corresponding to
|
||||
* the miter limit. This prevents long spikes being created.
|
||||
* `FT_STROKER_LINEJOIN_MITER_VARIABLE` generates a mitered line join
|
||||
* as used in XPS. `FT_STROKER_LINEJOIN_MITER` is an alias for
|
||||
* `FT_STROKER_LINEJOIN_MITER_VARIABLE`, retained for backward
|
||||
@@ -296,12 +292,17 @@ FT_BEGIN_HEADER
|
||||
* The line join style.
|
||||
*
|
||||
* miter_limit ::
|
||||
* The miter limit for the `FT_STROKER_LINEJOIN_MITER_FIXED` and
|
||||
* `FT_STROKER_LINEJOIN_MITER_VARIABLE` line join styles, expressed as
|
||||
* 16.16 fixed-point value.
|
||||
* The maximum reciprocal sine of half-angle at the miter join,
|
||||
* expressed as 16.16 fixed-point value.
|
||||
*
|
||||
* @note:
|
||||
* The radius is expressed in the same units as the outline coordinates.
|
||||
* The `radius` is expressed in the same units as the outline
|
||||
* coordinates.
|
||||
*
|
||||
* The `miter_limit` multiplied by the `radius` gives the maximum size
|
||||
* of a miter spike, at which it is clipped for
|
||||
* @FT_STROKER_LINEJOIN_MITER_VARIABLE or replaced with a bevel join for
|
||||
* @FT_STROKER_LINEJOIN_MITER_FIXED.
|
||||
*
|
||||
* This function calls @FT_Stroker_Rewind automatically.
|
||||
*/
|
||||
|
||||
28
Source/ThirdParty/freetype/ftsynth.h
vendored
28
Source/ThirdParty/freetype/ftsynth.h
vendored
@@ -5,7 +5,7 @@
|
||||
* FreeType synthesizing code for emboldening and slanting
|
||||
* (specification).
|
||||
*
|
||||
* Copyright (C) 2000-2019 by
|
||||
* Copyright (C) 2000-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
@@ -45,8 +45,7 @@
|
||||
#define FTSYNTH_H_
|
||||
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_FREETYPE_H
|
||||
#include <freetype/freetype.h>
|
||||
|
||||
#ifdef FREETYPE_H
|
||||
#error "freetype.h of FreeType 1 has been loaded!"
|
||||
@@ -69,10 +68,31 @@ FT_BEGIN_HEADER
|
||||
FT_EXPORT( void )
|
||||
FT_GlyphSlot_Embolden( FT_GlyphSlot slot );
|
||||
|
||||
/* Slant an outline glyph to the right by about 12 degrees. */
|
||||
/* Precisely adjust the glyph weight either horizontally or vertically. */
|
||||
/* The `xdelta` and `ydelta` values are fractions of the face Em size */
|
||||
/* (in fixed-point format). Considering that a regular face would have */
|
||||
/* stem widths on the order of 0.1 Em, a delta of 0.05 (0x0CCC) should */
|
||||
/* be very noticeable. To increase or decrease the weight, use positive */
|
||||
/* or negative values, respectively. */
|
||||
FT_EXPORT( void )
|
||||
FT_GlyphSlot_AdjustWeight( FT_GlyphSlot slot,
|
||||
FT_Fixed xdelta,
|
||||
FT_Fixed ydelta );
|
||||
|
||||
|
||||
/* Slant an outline glyph to the right by about 12 degrees. */
|
||||
FT_EXPORT( void )
|
||||
FT_GlyphSlot_Oblique( FT_GlyphSlot slot );
|
||||
|
||||
/* Slant an outline glyph by a given sine of an angle. You can apply */
|
||||
/* slant along either x- or y-axis by choosing a corresponding non-zero */
|
||||
/* argument. If both slants are non-zero, some affine transformation */
|
||||
/* will result. */
|
||||
FT_EXPORT( void )
|
||||
FT_GlyphSlot_Slant( FT_GlyphSlot slot,
|
||||
FT_Fixed xslant,
|
||||
FT_Fixed yslant );
|
||||
|
||||
/* */
|
||||
|
||||
|
||||
|
||||
13
Source/ThirdParty/freetype/ftsystem.h
vendored
13
Source/ThirdParty/freetype/ftsystem.h
vendored
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* FreeType low-level system interface definition (specification).
|
||||
*
|
||||
* Copyright (C) 1996-2019 by
|
||||
* Copyright (C) 1996-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
@@ -20,7 +20,6 @@
|
||||
#define FTSYSTEM_H_
|
||||
|
||||
|
||||
#include <ft2build.h>
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
@@ -230,7 +229,7 @@ FT_BEGIN_HEADER
|
||||
* A handle to the source stream.
|
||||
*
|
||||
* offset ::
|
||||
* The offset of read in stream (always from start).
|
||||
* The offset from the start of the stream to seek to.
|
||||
*
|
||||
* buffer ::
|
||||
* The address of the read buffer.
|
||||
@@ -239,11 +238,9 @@ FT_BEGIN_HEADER
|
||||
* The number of bytes to read from the stream.
|
||||
*
|
||||
* @return:
|
||||
* The number of bytes effectively read by the stream.
|
||||
*
|
||||
* @note:
|
||||
* This function might be called to perform a seek or skip operation with
|
||||
* a `count` of~0. A non-zero return value then indicates an error.
|
||||
* If count >~0, return the number of bytes effectively read by the
|
||||
* stream (after seeking to `offset`). If count ==~0, return the status
|
||||
* of the seek operation (non-zero indicates an error).
|
||||
*
|
||||
*/
|
||||
typedef unsigned long
|
||||
|
||||
4
Source/ThirdParty/freetype/fttrigon.h
vendored
4
Source/ThirdParty/freetype/fttrigon.h
vendored
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* FreeType trigonometric functions (specification).
|
||||
*
|
||||
* Copyright (C) 2001-2019 by
|
||||
* Copyright (C) 2001-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
@@ -19,7 +19,7 @@
|
||||
#ifndef FTTRIGON_H_
|
||||
#define FTTRIGON_H_
|
||||
|
||||
#include FT_FREETYPE_H
|
||||
#include <freetype/freetype.h>
|
||||
|
||||
#ifdef FREETYPE_H
|
||||
#error "freetype.h of FreeType 1 has been loaded!"
|
||||
|
||||
28
Source/ThirdParty/freetype/fttypes.h
vendored
28
Source/ThirdParty/freetype/fttypes.h
vendored
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* FreeType simple types definitions (specification only).
|
||||
*
|
||||
* Copyright (C) 1996-2019 by
|
||||
* Copyright (C) 1996-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
@@ -22,8 +22,8 @@
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_CONFIG_CONFIG_H
|
||||
#include FT_SYSTEM_H
|
||||
#include FT_IMAGE_H
|
||||
#include <freetype/ftsystem.h>
|
||||
#include <freetype/ftimage.h>
|
||||
|
||||
#include <stddef.h>
|
||||
|
||||
@@ -45,7 +45,10 @@ FT_BEGIN_HEADER
|
||||
* @description:
|
||||
* This section contains the basic data types defined by FreeType~2,
|
||||
* ranging from simple scalar types to bitmap descriptors. More
|
||||
* font-specific structures are defined in a different section.
|
||||
* font-specific structures are defined in a different section. Note
|
||||
* that FreeType does not use floating-point data types. Fractional
|
||||
* values are represented by fixed-point integers, with lower bits
|
||||
* storing the fractional part.
|
||||
*
|
||||
* @order:
|
||||
* FT_Byte
|
||||
@@ -413,7 +416,7 @@ FT_BEGIN_HEADER
|
||||
typedef struct FT_Data_
|
||||
{
|
||||
const FT_Byte* pointer;
|
||||
FT_Int length;
|
||||
FT_UInt length;
|
||||
|
||||
} FT_Data;
|
||||
|
||||
@@ -479,18 +482,17 @@ FT_BEGIN_HEADER
|
||||
*
|
||||
* @description:
|
||||
* This macro converts four-letter tags that are used to label TrueType
|
||||
* tables into an unsigned long, to be used within FreeType.
|
||||
* tables into an `FT_Tag` type, to be used within FreeType.
|
||||
*
|
||||
* @note:
|
||||
* The produced values **must** be 32-bit integers. Don't redefine this
|
||||
* macro.
|
||||
*/
|
||||
#define FT_MAKE_TAG( _x1, _x2, _x3, _x4 ) \
|
||||
(FT_Tag) \
|
||||
( ( (FT_ULong)_x1 << 24 ) | \
|
||||
( (FT_ULong)_x2 << 16 ) | \
|
||||
( (FT_ULong)_x3 << 8 ) | \
|
||||
(FT_ULong)_x4 )
|
||||
#define FT_MAKE_TAG( _x1, _x2, _x3, _x4 ) \
|
||||
( ( FT_STATIC_BYTE_CAST( FT_Tag, _x1 ) << 24 ) | \
|
||||
( FT_STATIC_BYTE_CAST( FT_Tag, _x2 ) << 16 ) | \
|
||||
( FT_STATIC_BYTE_CAST( FT_Tag, _x3 ) << 8 ) | \
|
||||
FT_STATIC_BYTE_CAST( FT_Tag, _x4 ) )
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
@@ -588,7 +590,7 @@ FT_BEGIN_HEADER
|
||||
|
||||
|
||||
#define FT_IS_EMPTY( list ) ( (list).head == 0 )
|
||||
#define FT_BOOL( x ) ( (FT_Bool)( (x) != 0 ) )
|
||||
#define FT_BOOL( x ) FT_STATIC_CAST( FT_Bool, (x) != 0 )
|
||||
|
||||
/* concatenate C tokens */
|
||||
#define FT_ERR_XCAT( x, y ) x ## y
|
||||
|
||||
9
Source/ThirdParty/freetype/ftwinfnt.h
vendored
9
Source/ThirdParty/freetype/ftwinfnt.h
vendored
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* FreeType API for accessing Windows fnt-specific data.
|
||||
*
|
||||
* Copyright (C) 2003-2019 by
|
||||
* Copyright (C) 2003-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
@@ -19,8 +19,7 @@
|
||||
#ifndef FTWINFNT_H_
|
||||
#define FTWINFNT_H_
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_FREETYPE_H
|
||||
#include <freetype/freetype.h>
|
||||
|
||||
#ifdef FREETYPE_H
|
||||
#error "freetype.h of FreeType 1 has been loaded!"
|
||||
@@ -56,9 +55,9 @@ FT_BEGIN_HEADER
|
||||
* FT_WinFNT_ID_XXX
|
||||
*
|
||||
* @description:
|
||||
* A list of valid values for the `charset` byte in @FT_WinFNT_HeaderRec.
|
||||
* A list of valid values for the `charset` byte in @FT_WinFNT_HeaderRec.
|
||||
* Exact mapping tables for the various 'cpXXXX' encodings (except for
|
||||
* 'cp1361') can be found at 'ftp://ftp.unicode.org/Public' in the
|
||||
* 'cp1361') can be found at 'ftp://ftp.unicode.org/Public/' in the
|
||||
* `MAPPINGS/VENDORS/MICSFT/WINDOWS` subdirectory. 'cp1361' is roughly a
|
||||
* superset of `MAPPINGS/OBSOLETE/EASTASIA/KSC/JOHAB.TXT`.
|
||||
*
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* High-level 'autohint' module-specific interface (specification).
|
||||
*
|
||||
* Copyright (C) 1996-2019 by
|
||||
* Copyright (C) 1996-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
@@ -70,8 +70,7 @@
|
||||
*/
|
||||
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_FREETYPE_H
|
||||
#include <freetype/freetype.h>
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
@@ -208,6 +207,9 @@ FT_BEGIN_HEADER
|
||||
} FT_AutoHinter_InterfaceRec, *FT_AutoHinter_Interface;
|
||||
|
||||
|
||||
#define FT_DECLARE_AUTOHINTER_INTERFACE( class_ ) \
|
||||
FT_CALLBACK_TABLE const FT_AutoHinter_InterfaceRec class_;
|
||||
|
||||
#define FT_DEFINE_AUTOHINTER_INTERFACE( \
|
||||
class_, \
|
||||
reset_face_, \
|
||||
|
||||
13
Source/ThirdParty/freetype/internal/cffotypes.h
vendored
13
Source/ThirdParty/freetype/internal/cffotypes.h
vendored
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* Basic OpenType/CFF object type definitions (specification).
|
||||
*
|
||||
* Copyright (C) 2017-2019 by
|
||||
* Copyright (C) 2017-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
@@ -19,12 +19,11 @@
|
||||
#ifndef CFFOTYPES_H_
|
||||
#define CFFOTYPES_H_
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_INTERNAL_OBJECTS_H
|
||||
#include FT_INTERNAL_CFF_TYPES_H
|
||||
#include FT_INTERNAL_TRUETYPE_TYPES_H
|
||||
#include FT_SERVICE_POSTSCRIPT_CMAPS_H
|
||||
#include FT_INTERNAL_POSTSCRIPT_HINTS_H
|
||||
#include <freetype/internal/ftobjs.h>
|
||||
#include <freetype/internal/cfftypes.h>
|
||||
#include <freetype/internal/tttypes.h>
|
||||
#include <freetype/internal/services/svpscmap.h>
|
||||
#include <freetype/internal/pshints.h>
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
17
Source/ThirdParty/freetype/internal/cfftypes.h
vendored
17
Source/ThirdParty/freetype/internal/cfftypes.h
vendored
@@ -5,7 +5,7 @@
|
||||
* Basic OpenType/CFF type definitions and interface (specification
|
||||
* only).
|
||||
*
|
||||
* Copyright (C) 1996-2019 by
|
||||
* Copyright (C) 1996-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
@@ -21,13 +21,12 @@
|
||||
#define CFFTYPES_H_
|
||||
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_FREETYPE_H
|
||||
#include FT_TYPE1_TABLES_H
|
||||
#include FT_INTERNAL_SERVICE_H
|
||||
#include FT_SERVICE_POSTSCRIPT_CMAPS_H
|
||||
#include FT_INTERNAL_POSTSCRIPT_HINTS_H
|
||||
#include FT_INTERNAL_TYPE1_TYPES_H
|
||||
#include <freetype/freetype.h>
|
||||
#include <freetype/t1tables.h>
|
||||
#include <freetype/internal/ftserv.h>
|
||||
#include <freetype/internal/services/svpscmap.h>
|
||||
#include <freetype/internal/pshints.h>
|
||||
#include <freetype/internal/t1types.h>
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
@@ -316,7 +315,7 @@ FT_BEGIN_HEADER
|
||||
/* The normal stack then points to these values instead of the DICT */
|
||||
/* because all other operators in Private DICT clear the stack. */
|
||||
/* `blend_stack' could be cleared at each operator other than blend. */
|
||||
/* Blended values are stored as 5-byte fixed point values. */
|
||||
/* Blended values are stored as 5-byte fixed-point values. */
|
||||
|
||||
FT_Byte* blend_stack; /* base of stack allocation */
|
||||
FT_Byte* blend_top; /* first empty slot */
|
||||
|
||||
343
Source/ThirdParty/freetype/internal/compiler-macros.h
vendored
Normal file
343
Source/ThirdParty/freetype/internal/compiler-macros.h
vendored
Normal file
@@ -0,0 +1,343 @@
|
||||
/****************************************************************************
|
||||
*
|
||||
* internal/compiler-macros.h
|
||||
*
|
||||
* Compiler-specific macro definitions used internally by FreeType.
|
||||
*
|
||||
* Copyright (C) 2020-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
* modified, and distributed under the terms of the FreeType project
|
||||
* license, LICENSE.TXT. By continuing to use, modify, or distribute
|
||||
* this file you indicate that you have read the license and
|
||||
* understand and accept it fully.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef INTERNAL_COMPILER_MACROS_H_
|
||||
#define INTERNAL_COMPILER_MACROS_H_
|
||||
|
||||
#include <freetype/config/public-macros.h>
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
/* Fix compiler warning with sgi compiler. */
|
||||
#if defined( __sgi ) && !defined( __GNUC__ )
|
||||
# if defined( _COMPILER_VERSION ) && ( _COMPILER_VERSION >= 730 )
|
||||
# pragma set woff 3505
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/* Fix compiler warning with sgi compiler. */
|
||||
#if defined( __sgi ) && !defined( __GNUC__ )
|
||||
# if defined( _COMPILER_VERSION ) && ( _COMPILER_VERSION >= 730 )
|
||||
# pragma set woff 3505
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/* Newer compilers warn for fall-through case statements. */
|
||||
#ifndef FALL_THROUGH
|
||||
# if ( defined( __STDC_VERSION__ ) && __STDC_VERSION__ > 201710L ) || \
|
||||
( defined( __cplusplus ) && __cplusplus > 201402L )
|
||||
# define FALL_THROUGH [[__fallthrough__]]
|
||||
# elif ( defined( __GNUC__ ) && __GNUC__ >= 7 ) || \
|
||||
( defined( __clang__ ) && \
|
||||
( defined( __apple_build_version__ ) \
|
||||
? __apple_build_version__ >= 12000000 \
|
||||
: __clang_major__ >= 10 ) )
|
||||
# define FALL_THROUGH __attribute__(( __fallthrough__ ))
|
||||
# else
|
||||
# define FALL_THROUGH ( (void)0 )
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/*
|
||||
* When defining a macro that expands to a non-trivial C statement, use
|
||||
* FT_BEGIN_STMNT and FT_END_STMNT to enclose the macro's body. This
|
||||
* ensures there are no surprises when the macro is invoked in conditional
|
||||
* branches.
|
||||
*
|
||||
* Example:
|
||||
*
|
||||
* #define LOG( ... ) \
|
||||
* FT_BEGIN_STMNT \
|
||||
* if ( logging_enabled ) \
|
||||
* log( __VA_ARGS__ ); \
|
||||
* FT_END_STMNT
|
||||
*/
|
||||
#define FT_BEGIN_STMNT do {
|
||||
#define FT_END_STMNT } while ( 0 )
|
||||
|
||||
/*
|
||||
* FT_DUMMY_STMNT expands to an empty C statement. Useful for
|
||||
* conditionally defined statement macros.
|
||||
*
|
||||
* Example:
|
||||
*
|
||||
* #ifdef BUILD_CONFIG_LOGGING
|
||||
* #define LOG( ... ) \
|
||||
* FT_BEGIN_STMNT \
|
||||
* if ( logging_enabled ) \
|
||||
* log( __VA_ARGS__ ); \
|
||||
* FT_END_STMNT
|
||||
* #else
|
||||
* # define LOG( ... ) FT_DUMMY_STMNT
|
||||
* #endif
|
||||
*/
|
||||
#define FT_DUMMY_STMNT FT_BEGIN_STMNT FT_END_STMNT
|
||||
|
||||
#ifdef __UINTPTR_TYPE__
|
||||
/*
|
||||
* GCC and Clang both provide a `__UINTPTR_TYPE__` that can be used to
|
||||
* avoid a dependency on `stdint.h`.
|
||||
*/
|
||||
# define FT_UINT_TO_POINTER( x ) (void *)(__UINTPTR_TYPE__)(x)
|
||||
#elif defined( _WIN64 )
|
||||
/* only 64bit Windows uses the LLP64 data model, i.e., */
|
||||
/* 32-bit integers, 64-bit pointers. */
|
||||
# define FT_UINT_TO_POINTER( x ) (void *)(unsigned __int64)(x)
|
||||
#else
|
||||
# define FT_UINT_TO_POINTER( x ) (void *)(unsigned long)(x)
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Use `FT_TYPEOF( type )` to cast a value to `type`. This is useful to
|
||||
* suppress signedness compilation warnings in macros.
|
||||
*
|
||||
* Example:
|
||||
*
|
||||
* #define PAD_( x, n ) ( (x) & ~FT_TYPEOF( x )( (n) - 1 ) )
|
||||
*
|
||||
* (The `typeof` condition is taken from gnulib's `intprops.h` header
|
||||
* file.)
|
||||
*/
|
||||
#if ( ( defined( __GNUC__ ) && __GNUC__ >= 2 ) || \
|
||||
( defined( __IBMC__ ) && __IBMC__ >= 1210 && \
|
||||
defined( __IBM__TYPEOF__ ) ) || \
|
||||
( defined( __SUNPRO_C ) && __SUNPRO_C >= 0x5110 && !__STDC__ ) )
|
||||
#define FT_TYPEOF( type ) ( __typeof__ ( type ) )
|
||||
#else
|
||||
#define FT_TYPEOF( type ) /* empty */
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Mark a function declaration as internal to the library. This ensures
|
||||
* that it will not be exposed by default to client code, and helps
|
||||
* generate smaller and faster code on ELF-based platforms. Place this
|
||||
* before a function declaration.
|
||||
*/
|
||||
|
||||
/* Visual C, mingw */
|
||||
#if defined( _WIN32 )
|
||||
#define FT_INTERNAL_FUNCTION_ATTRIBUTE /* empty */
|
||||
|
||||
/* gcc, clang */
|
||||
#elif ( defined( __GNUC__ ) && __GNUC__ >= 4 ) || defined( __clang__ )
|
||||
#define FT_INTERNAL_FUNCTION_ATTRIBUTE \
|
||||
__attribute__(( visibility( "hidden" ) ))
|
||||
|
||||
/* Sun */
|
||||
#elif defined( __SUNPRO_C ) && __SUNPRO_C >= 0x550
|
||||
#define FT_INTERNAL_FUNCTION_ATTRIBUTE __hidden
|
||||
|
||||
#else
|
||||
#define FT_INTERNAL_FUNCTION_ATTRIBUTE /* empty */
|
||||
#endif
|
||||
|
||||
/*
|
||||
* FreeType supports compilation of its C sources with a C++ compiler (in
|
||||
* C++ mode); this introduces a number of subtle issues.
|
||||
*
|
||||
* The main one is that a C++ function declaration and its definition must
|
||||
* have the same 'linkage'. Because all FreeType headers declare their
|
||||
* functions with C linkage (i.e., within an `extern "C" { ... }` block
|
||||
* due to the magic of FT_BEGIN_HEADER and FT_END_HEADER), their
|
||||
* definition in FreeType sources should also be prefixed with `extern
|
||||
* "C"` when compiled in C++ mode.
|
||||
*
|
||||
* The `FT_FUNCTION_DECLARATION` and `FT_FUNCTION_DEFINITION` macros are
|
||||
* provided to deal with this case, as well as `FT_CALLBACK_DEF` and its
|
||||
* siblings below.
|
||||
*/
|
||||
|
||||
/*
|
||||
* `FT_FUNCTION_DECLARATION( type )` can be used to write a C function
|
||||
* declaration to ensure it will have C linkage when the library is built
|
||||
* with a C++ compiler. The parameter is the function's return type, so a
|
||||
* declaration would look like
|
||||
*
|
||||
* FT_FUNCTION_DECLARATION( int )
|
||||
* foo( int x );
|
||||
*
|
||||
* NOTE: This requires that all uses are inside of `FT_BEGIN_HEADER ...
|
||||
* FT_END_HEADER` blocks, which guarantees that the declarations have C
|
||||
* linkage when the headers are included by C++ sources.
|
||||
*
|
||||
* NOTE: Do not use directly. Use `FT_LOCAL`, `FT_BASE`, and `FT_EXPORT`
|
||||
* instead.
|
||||
*/
|
||||
#define FT_FUNCTION_DECLARATION( x ) extern x
|
||||
|
||||
/*
|
||||
* Same as `FT_FUNCTION_DECLARATION`, but for function definitions instead.
|
||||
*
|
||||
* NOTE: Do not use directly. Use `FT_LOCAL_DEF`, `FT_BASE_DEF`, and
|
||||
* `FT_EXPORT_DEF` instead.
|
||||
*/
|
||||
#ifdef __cplusplus
|
||||
#define FT_FUNCTION_DEFINITION( x ) extern "C" x
|
||||
#else
|
||||
#define FT_FUNCTION_DEFINITION( x ) x
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Use `FT_LOCAL` and `FT_LOCAL_DEF` to declare and define, respectively,
|
||||
* an internal FreeType function that is only used by the sources of a
|
||||
* single `src/module/` directory. This ensures that the functions are
|
||||
* turned into static ones at build time, resulting in smaller and faster
|
||||
* code.
|
||||
*/
|
||||
#ifdef FT_MAKE_OPTION_SINGLE_OBJECT
|
||||
|
||||
#define FT_LOCAL( x ) static x
|
||||
#define FT_LOCAL_DEF( x ) static x
|
||||
|
||||
#else
|
||||
|
||||
#define FT_LOCAL( x ) FT_INTERNAL_FUNCTION_ATTRIBUTE \
|
||||
FT_FUNCTION_DECLARATION( x )
|
||||
#define FT_LOCAL_DEF( x ) FT_FUNCTION_DEFINITION( x )
|
||||
|
||||
#endif /* FT_MAKE_OPTION_SINGLE_OBJECT */
|
||||
|
||||
/*
|
||||
* Use `FT_LOCAL_ARRAY` and `FT_LOCAL_ARRAY_DEF` to declare and define,
|
||||
* respectively, a constant array that must be accessed from several
|
||||
* sources in the same `src/module/` sub-directory, and which are internal
|
||||
* to the library.
|
||||
*/
|
||||
#define FT_LOCAL_ARRAY( x ) FT_INTERNAL_FUNCTION_ATTRIBUTE \
|
||||
extern const x
|
||||
#define FT_LOCAL_ARRAY_DEF( x ) FT_FUNCTION_DEFINITION( const x )
|
||||
|
||||
/*
|
||||
* `Use FT_BASE` and `FT_BASE_DEF` to declare and define, respectively, an
|
||||
* internal library function that is used by more than a single module.
|
||||
*/
|
||||
#define FT_BASE( x ) FT_INTERNAL_FUNCTION_ATTRIBUTE \
|
||||
FT_FUNCTION_DECLARATION( x )
|
||||
#define FT_BASE_DEF( x ) FT_FUNCTION_DEFINITION( x )
|
||||
|
||||
|
||||
/*
|
||||
* NOTE: Conditionally define `FT_EXPORT_VAR` due to its definition in
|
||||
* `src/smooth/ftgrays.h` to make the header more portable.
|
||||
*/
|
||||
#ifndef FT_EXPORT_VAR
|
||||
#define FT_EXPORT_VAR( x ) FT_FUNCTION_DECLARATION( x )
|
||||
#endif
|
||||
|
||||
/*
|
||||
* When compiling FreeType as a DLL or DSO with hidden visibility,
|
||||
* some systems/compilers need a special attribute in front OR after
|
||||
* the return type of function declarations.
|
||||
*
|
||||
* Two macros are used within the FreeType source code to define
|
||||
* exported library functions: `FT_EXPORT` and `FT_EXPORT_DEF`.
|
||||
*
|
||||
* - `FT_EXPORT( return_type )`
|
||||
*
|
||||
* is used in a function declaration, as in
|
||||
*
|
||||
* ```
|
||||
* FT_EXPORT( FT_Error )
|
||||
* FT_Init_FreeType( FT_Library* alibrary );
|
||||
* ```
|
||||
*
|
||||
* - `FT_EXPORT_DEF( return_type )`
|
||||
*
|
||||
* is used in a function definition, as in
|
||||
*
|
||||
* ```
|
||||
* FT_EXPORT_DEF( FT_Error )
|
||||
* FT_Init_FreeType( FT_Library* alibrary )
|
||||
* {
|
||||
* ... some code ...
|
||||
* return FT_Err_Ok;
|
||||
* }
|
||||
* ```
|
||||
*
|
||||
* You can provide your own implementation of `FT_EXPORT` and
|
||||
* `FT_EXPORT_DEF` here if you want.
|
||||
*
|
||||
* To export a variable, use `FT_EXPORT_VAR`.
|
||||
*/
|
||||
|
||||
/* See `freetype/config/public-macros.h` for the `FT_EXPORT` definition */
|
||||
#define FT_EXPORT_DEF( x ) FT_FUNCTION_DEFINITION( x )
|
||||
|
||||
/*
|
||||
* The following macros are needed to compile the library with a
|
||||
* C++ compiler and with 16bit compilers.
|
||||
*/
|
||||
|
||||
/*
|
||||
* This is special. Within C++, you must specify `extern "C"` for
|
||||
* functions which are used via function pointers, and you also
|
||||
* must do that for structures which contain function pointers to
|
||||
* assure C linkage -- it's not possible to have (local) anonymous
|
||||
* functions which are accessed by (global) function pointers.
|
||||
*
|
||||
*
|
||||
* FT_CALLBACK_DEF is used to _define_ a callback function,
|
||||
* located in the same source code file as the structure that uses
|
||||
* it. FT_COMPARE_DEF, in addition, ensures the `cdecl` calling
|
||||
* convention on x86, required by the C library function `qsort`.
|
||||
*
|
||||
* FT_BASE_CALLBACK and FT_BASE_CALLBACK_DEF are used to declare
|
||||
* and define a callback function, respectively, in a similar way
|
||||
* as FT_BASE and FT_BASE_DEF work.
|
||||
*
|
||||
* FT_CALLBACK_TABLE is used to _declare_ a constant variable that
|
||||
* contains pointers to callback functions.
|
||||
*
|
||||
* FT_CALLBACK_TABLE_DEF is used to _define_ a constant variable
|
||||
* that contains pointers to callback functions.
|
||||
*
|
||||
*
|
||||
* Some 16bit compilers have to redefine these macros to insert
|
||||
* the infamous `_cdecl` or `__fastcall` declarations.
|
||||
*/
|
||||
#ifdef __cplusplus
|
||||
#define FT_CALLBACK_DEF( x ) extern "C" x
|
||||
#else
|
||||
#define FT_CALLBACK_DEF( x ) static x
|
||||
#endif
|
||||
|
||||
#if defined( __GNUC__ ) && defined( __i386__ )
|
||||
#define FT_COMPARE_DEF( x ) FT_CALLBACK_DEF( x ) __attribute__(( cdecl ))
|
||||
#elif defined( _MSC_VER ) && defined( _M_IX86 )
|
||||
#define FT_COMPARE_DEF( x ) FT_CALLBACK_DEF( x ) __cdecl
|
||||
#elif defined( __WATCOMC__ ) && __WATCOMC__ >= 1240
|
||||
#define FT_COMPARE_DEF( x ) FT_CALLBACK_DEF( x ) __watcall
|
||||
#else
|
||||
#define FT_COMPARE_DEF( x ) FT_CALLBACK_DEF( x )
|
||||
#endif
|
||||
|
||||
#define FT_BASE_CALLBACK( x ) FT_FUNCTION_DECLARATION( x )
|
||||
#define FT_BASE_CALLBACK_DEF( x ) FT_FUNCTION_DEFINITION( x )
|
||||
|
||||
#ifndef FT_CALLBACK_TABLE
|
||||
#ifdef __cplusplus
|
||||
#define FT_CALLBACK_TABLE extern "C"
|
||||
#define FT_CALLBACK_TABLE_DEF extern "C"
|
||||
#else
|
||||
#define FT_CALLBACK_TABLE extern
|
||||
#define FT_CALLBACK_TABLE_DEF /* nothing */
|
||||
#endif
|
||||
#endif /* FT_CALLBACK_TABLE */
|
||||
|
||||
FT_END_HEADER
|
||||
|
||||
#endif /* INTERNAL_COMPILER_MACROS_H_ */
|
||||
105
Source/ThirdParty/freetype/internal/ftcalc.h
vendored
105
Source/ThirdParty/freetype/internal/ftcalc.h
vendored
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* Arithmetic computations (specification).
|
||||
*
|
||||
* Copyright (C) 1996-2019 by
|
||||
* Copyright (C) 1996-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
@@ -20,9 +20,9 @@
|
||||
#define FTCALC_H_
|
||||
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_FREETYPE_H
|
||||
#include <freetype/freetype.h>
|
||||
|
||||
#include "compiler-macros.h"
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
@@ -278,6 +278,40 @@ FT_BEGIN_HEADER
|
||||
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
|
||||
* idea is that both `a' and `b' are scaled by factors of 10 so that the
|
||||
@@ -298,9 +332,9 @@ FT_BEGIN_HEADER
|
||||
* Based on geometric considerations we use the following inequality to
|
||||
* identify a degenerate matrix.
|
||||
*
|
||||
* 50 * abs(xx*yy - xy*yx) < xx^2 + xy^2 + yx^2 + yy^2
|
||||
* 32 * abs(xx*yy - xy*yx) < xx^2 + xy^2 + yx^2 + yy^2
|
||||
*
|
||||
* Value 50 is heuristic.
|
||||
* Value 32 is heuristic.
|
||||
*/
|
||||
FT_BASE( FT_Bool )
|
||||
FT_Matrix_Check( const FT_Matrix* matrix );
|
||||
@@ -359,8 +393,8 @@ FT_BEGIN_HEADER
|
||||
|
||||
#ifndef FT_CONFIG_OPTION_NO_ASSEMBLER
|
||||
|
||||
#if defined( __GNUC__ ) && \
|
||||
( __GNUC__ > 3 || ( __GNUC__ == 3 && __GNUC_MINOR__ >= 4 ) )
|
||||
#if defined( __clang__ ) || ( defined( __GNUC__ ) && \
|
||||
( __GNUC__ > 3 || ( __GNUC__ == 3 && __GNUC_MINOR__ >= 4 ) ) )
|
||||
|
||||
#if FT_SIZEOF_INT == 4
|
||||
|
||||
@@ -370,14 +404,28 @@ FT_BEGIN_HEADER
|
||||
|
||||
#define FT_MSB( x ) ( 31 - __builtin_clzl( x ) )
|
||||
|
||||
#endif /* __GNUC__ */
|
||||
#endif
|
||||
|
||||
#elif defined( _MSC_VER ) && _MSC_VER >= 1400
|
||||
|
||||
#elif defined( _MSC_VER ) && ( _MSC_VER >= 1400 )
|
||||
#if defined( _WIN32_WCE )
|
||||
|
||||
#if FT_SIZEOF_INT == 4
|
||||
#include <cmnintrin.h>
|
||||
#pragma intrinsic( _CountLeadingZeros )
|
||||
|
||||
#define FT_MSB( x ) ( 31 - _CountLeadingZeros( x ) )
|
||||
|
||||
#elif defined( _M_ARM64 ) || defined( _M_ARM )
|
||||
|
||||
#include <intrin.h>
|
||||
#pragma intrinsic( _CountLeadingZeros )
|
||||
|
||||
#define FT_MSB( x ) ( 31 - _CountLeadingZeros( x ) )
|
||||
|
||||
#elif defined( _M_IX86 ) || defined( _M_AMD64 ) || defined( _M_IA64 )
|
||||
|
||||
#include <intrin.h>
|
||||
#pragma intrinsic( _BitScanReverse )
|
||||
|
||||
static __inline FT_Int32
|
||||
FT_MSB_i386( FT_UInt32 x )
|
||||
@@ -385,21 +433,45 @@ FT_BEGIN_HEADER
|
||||
unsigned long where;
|
||||
|
||||
|
||||
/* not available in older VC versions */
|
||||
_BitScanReverse( &where, x );
|
||||
|
||||
return (FT_Int32)where;
|
||||
}
|
||||
|
||||
#define FT_MSB( x ) ( FT_MSB_i386( x ) )
|
||||
#define FT_MSB( x ) FT_MSB_i386( x )
|
||||
|
||||
#endif
|
||||
|
||||
#endif /* _MSC_VER */
|
||||
#elif defined( __WATCOMC__ ) && defined( __386__ )
|
||||
|
||||
extern __inline FT_Int32
|
||||
FT_MSB_i386( FT_UInt32 x );
|
||||
|
||||
#pragma aux FT_MSB_i386 = \
|
||||
"bsr eax, eax" \
|
||||
__parm [__eax] __nomemory \
|
||||
__value [__eax] \
|
||||
__modify __exact [__eax] __nomemory;
|
||||
|
||||
#define FT_MSB( x ) FT_MSB_i386( x )
|
||||
|
||||
#elif defined( __DECC ) || defined( __DECCXX )
|
||||
|
||||
#include <builtins.h>
|
||||
|
||||
#define FT_MSB( x ) (FT_Int)( 63 - _leadz( x ) )
|
||||
|
||||
#elif defined( _CRAYC )
|
||||
|
||||
#include <intrinsics.h>
|
||||
|
||||
#define FT_MSB( x ) (FT_Int)( 31 - _leadz32( x ) )
|
||||
|
||||
#endif /* FT_MSB macro definitions */
|
||||
|
||||
#endif /* !FT_CONFIG_OPTION_NO_ASSEMBLER */
|
||||
|
||||
|
||||
#ifndef FT_MSB
|
||||
|
||||
FT_BASE( FT_Int )
|
||||
@@ -449,8 +521,7 @@ FT_BEGIN_HEADER
|
||||
#define F2DOT14_TO_FIXED( x ) ( (FT_Long)(x) * 4 ) /* << 2 */
|
||||
#define FIXED_TO_INT( x ) ( FT_RoundFix( x ) >> 16 )
|
||||
|
||||
#define ROUND_F26DOT6( x ) ( x >= 0 ? ( ( (x) + 32 ) & -64 ) \
|
||||
: ( -( ( 32 - (x) ) & -64 ) ) )
|
||||
#define ROUND_F26DOT6( x ) ( ( (x) + 32 - ( x < 0 ) ) & -64 )
|
||||
|
||||
/*
|
||||
* The following macros have two purposes.
|
||||
@@ -488,7 +559,7 @@ FT_BEGIN_HEADER
|
||||
#define NEG_INT32( a ) \
|
||||
(FT_Int32)( (FT_UInt32)0 - (FT_UInt32)(a) )
|
||||
|
||||
#ifdef FT_LONG64
|
||||
#ifdef FT_INT64
|
||||
|
||||
#define ADD_INT64( a, b ) \
|
||||
(FT_Int64)( (FT_UInt64)(a) + (FT_UInt64)(b) )
|
||||
@@ -499,7 +570,7 @@ FT_BEGIN_HEADER
|
||||
#define NEG_INT64( a ) \
|
||||
(FT_Int64)( (FT_UInt64)0 - (FT_UInt64)(a) )
|
||||
|
||||
#endif /* FT_LONG64 */
|
||||
#endif /* FT_INT64 */
|
||||
|
||||
|
||||
FT_END_HEADER
|
||||
|
||||
179
Source/ThirdParty/freetype/internal/ftdebug.h
vendored
179
Source/ThirdParty/freetype/internal/ftdebug.h
vendored
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* Debugging and logging component (specification).
|
||||
*
|
||||
* Copyright (C) 1996-2019 by
|
||||
* Copyright (C) 1996-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
@@ -27,11 +27,28 @@
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_CONFIG_CONFIG_H
|
||||
#include FT_FREETYPE_H
|
||||
#include <freetype/freetype.h>
|
||||
|
||||
#include "compiler-macros.h"
|
||||
|
||||
#ifdef FT_DEBUG_LOGGING
|
||||
#define DLG_STATIC
|
||||
#include <dlg/output.h>
|
||||
#include <dlg/dlg.h>
|
||||
|
||||
#include <freetype/ftlogging.h>
|
||||
#endif /* FT_DEBUG_LOGGING */
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
/* force the definition of FT_DEBUG_LEVEL_TRACE if FT_DEBUG_LOGGING is */
|
||||
/* already defined. */
|
||||
/* */
|
||||
#ifdef FT_DEBUG_LOGGING
|
||||
#undef FT_DEBUG_LEVEL_TRACE
|
||||
#define FT_DEBUG_LEVEL_TRACE
|
||||
#endif
|
||||
|
||||
/* force the definition of FT_DEBUG_LEVEL_ERROR if FT_DEBUG_LEVEL_TRACE */
|
||||
/* is already defined; this simplifies the following #ifdefs */
|
||||
@@ -56,7 +73,7 @@ FT_BEGIN_HEADER
|
||||
/* defining the enumeration */
|
||||
typedef enum FT_Trace_
|
||||
{
|
||||
#include FT_INTERNAL_TRACE_H
|
||||
#include <freetype/internal/fttrace.h>
|
||||
trace_count
|
||||
|
||||
} FT_Trace;
|
||||
@@ -80,20 +97,66 @@ FT_BEGIN_HEADER
|
||||
* Each component must define the macro FT_COMPONENT to a valid FT_Trace
|
||||
* value before using any TRACE macro.
|
||||
*
|
||||
* To get consistent logging output, there should be no newline character
|
||||
* (i.e., '\n') or a single trailing one in the message string of
|
||||
* `FT_TRACEx` and `FT_ERROR`.
|
||||
*/
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* If FT_DEBUG_LOGGING is enabled, tracing messages are sent to dlg's API.
|
||||
* If FT_DEBUG_LOGGING is disabled, tracing messages are sent to
|
||||
* `FT_Message` (defined in ftdebug.c).
|
||||
*/
|
||||
#ifdef FT_DEBUG_LOGGING
|
||||
|
||||
/* we need two macros to convert the names of `FT_COMPONENT` to a string */
|
||||
#define FT_LOGGING_TAG( x ) FT_LOGGING_TAG_( x )
|
||||
#define FT_LOGGING_TAG_( x ) #x
|
||||
|
||||
/* we need two macros to convert the component and the trace level */
|
||||
/* to a string that combines them */
|
||||
#define FT_LOGGING_TAGX( x, y ) FT_LOGGING_TAGX_( x, y )
|
||||
#define FT_LOGGING_TAGX_( x, y ) #x ":" #y
|
||||
|
||||
|
||||
#define FT_LOG( level, varformat ) \
|
||||
do \
|
||||
{ \
|
||||
const char* dlg_tag = FT_LOGGING_TAGX( FT_COMPONENT, level ); \
|
||||
\
|
||||
\
|
||||
ft_add_tag( dlg_tag ); \
|
||||
if ( ft_trace_levels[FT_TRACE_COMP( FT_COMPONENT )] >= level ) \
|
||||
{ \
|
||||
if ( custom_output_handler != NULL ) \
|
||||
FT_Logging_Callback varformat; \
|
||||
else \
|
||||
dlg_trace varformat; \
|
||||
} \
|
||||
ft_remove_tag( dlg_tag ); \
|
||||
} while( 0 )
|
||||
|
||||
#else /* !FT_DEBUG_LOGGING */
|
||||
|
||||
#define FT_LOG( level, varformat ) \
|
||||
do \
|
||||
{ \
|
||||
if ( ft_trace_levels[FT_TRACE_COMP( FT_COMPONENT )] >= level ) \
|
||||
FT_Message varformat; \
|
||||
} while ( 0 )
|
||||
|
||||
#endif /* !FT_DEBUG_LOGGING */
|
||||
|
||||
|
||||
#ifdef FT_DEBUG_LEVEL_TRACE
|
||||
|
||||
/* we need two macros here to make cpp expand `FT_COMPONENT' */
|
||||
#define FT_TRACE_COMP( x ) FT_TRACE_COMP_( x )
|
||||
#define FT_TRACE_COMP_( x ) trace_ ## x
|
||||
|
||||
#define FT_TRACE( level, varformat ) \
|
||||
do \
|
||||
{ \
|
||||
if ( ft_trace_levels[FT_TRACE_COMP( FT_COMPONENT )] >= level ) \
|
||||
FT_Message varformat; \
|
||||
} while ( 0 )
|
||||
#define FT_TRACE( level, varformat ) FT_LOG( level, varformat )
|
||||
|
||||
#else /* !FT_DEBUG_LEVEL_TRACE */
|
||||
|
||||
@@ -202,7 +265,32 @@ FT_BEGIN_HEADER
|
||||
|
||||
#ifdef FT_DEBUG_LEVEL_ERROR
|
||||
|
||||
#define FT_ERROR( varformat ) FT_Message varformat
|
||||
/**************************************************************************
|
||||
*
|
||||
* If FT_DEBUG_LOGGING is enabled, error messages are sent to dlg's API.
|
||||
* If FT_DEBUG_LOGGING is disabled, error messages are sent to `FT_Message`
|
||||
* (defined in ftdebug.c).
|
||||
*
|
||||
*/
|
||||
#ifdef FT_DEBUG_LOGGING
|
||||
|
||||
#define FT_ERROR( varformat ) \
|
||||
do \
|
||||
{ \
|
||||
const char* dlg_tag = FT_LOGGING_TAG( FT_COMPONENT ); \
|
||||
\
|
||||
\
|
||||
ft_add_tag( dlg_tag ); \
|
||||
dlg_trace varformat; \
|
||||
ft_remove_tag( dlg_tag ); \
|
||||
} while ( 0 )
|
||||
|
||||
#else /* !FT_DEBUG_LOGGING */
|
||||
|
||||
#define FT_ERROR( varformat ) FT_Message varformat
|
||||
|
||||
#endif /* !FT_DEBUG_LOGGING */
|
||||
|
||||
|
||||
#else /* !FT_DEBUG_LEVEL_ERROR */
|
||||
|
||||
@@ -275,6 +363,77 @@ FT_BEGIN_HEADER
|
||||
FT_BASE( void )
|
||||
ft_debug_init( void );
|
||||
|
||||
|
||||
#ifdef FT_DEBUG_LOGGING
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* 'dlg' uses output handlers to control how and where log messages are
|
||||
* printed. Therefore we need to define a default output handler for
|
||||
* FreeType.
|
||||
*/
|
||||
FT_BASE( void )
|
||||
ft_log_handler( const struct dlg_origin* origin,
|
||||
const char* string,
|
||||
void* data );
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* 1. `ft_default_log_handler` stores the function pointer that is used
|
||||
* internally by FreeType to print logs to a file.
|
||||
*
|
||||
* 2. `custom_output_handler` stores the function pointer to the callback
|
||||
* function provided by the user.
|
||||
*
|
||||
* It is defined in `ftdebug.c`.
|
||||
*/
|
||||
extern dlg_handler ft_default_log_handler;
|
||||
extern FT_Custom_Log_Handler custom_output_handler;
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* If FT_DEBUG_LOGGING macro is enabled, FreeType needs to initialize and
|
||||
* un-initialize `FILE*`.
|
||||
*
|
||||
* These functions are defined in `ftdebug.c`.
|
||||
*/
|
||||
FT_BASE( void )
|
||||
ft_logging_init( void );
|
||||
|
||||
FT_BASE( void )
|
||||
ft_logging_deinit( void );
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* For printing the name of `FT_COMPONENT` along with the actual log we
|
||||
* need to add a tag with the name of `FT_COMPONENT`.
|
||||
*
|
||||
* These functions are defined in `ftdebug.c`.
|
||||
*/
|
||||
FT_BASE( void )
|
||||
ft_add_tag( const char* tag );
|
||||
|
||||
FT_BASE( void )
|
||||
ft_remove_tag( const char* tag );
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* A function to print log data using a custom callback logging function
|
||||
* (which is set using `FT_Set_Log_Handler`).
|
||||
*
|
||||
* This function is defined in `ftdebug.c`.
|
||||
*/
|
||||
FT_BASE( void )
|
||||
FT_Logging_Callback( const char* fmt,
|
||||
... );
|
||||
|
||||
#endif /* FT_DEBUG_LOGGING */
|
||||
|
||||
|
||||
FT_END_HEADER
|
||||
|
||||
#endif /* FTDEBUG_H_ */
|
||||
|
||||
7
Source/ThirdParty/freetype/internal/ftdrv.h
vendored
7
Source/ThirdParty/freetype/internal/ftdrv.h
vendored
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* FreeType internal font driver interface (specification).
|
||||
*
|
||||
* Copyright (C) 1996-2019 by
|
||||
* Copyright (C) 1996-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
@@ -20,9 +20,9 @@
|
||||
#define FTDRV_H_
|
||||
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_MODULE_H
|
||||
#include <freetype/ftmodapi.h>
|
||||
|
||||
#include "compiler-macros.h"
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
@@ -157,6 +157,7 @@ FT_BEGIN_HEADER
|
||||
* A handle to a function used to select a new fixed size. It is used
|
||||
* only if @FT_FACE_FLAG_FIXED_SIZES is set. Can be set to 0 if the
|
||||
* scaling done in the base layer suffices.
|
||||
*
|
||||
* @note:
|
||||
* Most function pointers, with the exception of `load_glyph`, can be set
|
||||
* to 0 to indicate a default behaviour.
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* The FreeType glyph loader (specification).
|
||||
*
|
||||
* Copyright (C) 2002-2019 by
|
||||
* Copyright (C) 2002-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
@@ -20,9 +20,9 @@
|
||||
#define FTGLOADR_H_
|
||||
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_FREETYPE_H
|
||||
#include <freetype/freetype.h>
|
||||
|
||||
#include "compiler-macros.h"
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
@@ -138,8 +138,6 @@ FT_BEGIN_HEADER
|
||||
FT_BASE( void )
|
||||
FT_GlyphLoader_Add( FT_GlyphLoader loader );
|
||||
|
||||
/* */
|
||||
|
||||
|
||||
FT_END_HEADER
|
||||
|
||||
|
||||
3
Source/ThirdParty/freetype/internal/fthash.h
vendored
3
Source/ThirdParty/freetype/internal/fthash.h
vendored
@@ -43,8 +43,7 @@
|
||||
#define FTHASH_H_
|
||||
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_FREETYPE_H
|
||||
#include <freetype/freetype.h>
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
46
Source/ThirdParty/freetype/internal/ftmemory.h
vendored
46
Source/ThirdParty/freetype/internal/ftmemory.h
vendored
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* The FreeType memory management macros (specification).
|
||||
*
|
||||
* Copyright (C) 1996-2019 by
|
||||
* Copyright (C) 1996-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
@@ -22,8 +22,9 @@
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_CONFIG_CONFIG_H
|
||||
#include FT_TYPES_H
|
||||
#include <freetype/fttypes.h>
|
||||
|
||||
#include "compiler-macros.h"
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
@@ -57,6 +58,14 @@ FT_BEGIN_HEADER
|
||||
/*************************************************************************/
|
||||
|
||||
|
||||
/* The calculation `NULL + n' is undefined in C. Even if the resulting */
|
||||
/* pointer doesn't get dereferenced, this causes warnings with */
|
||||
/* sanitizers. */
|
||||
/* */
|
||||
/* We thus provide a macro that should be used if `base' can be NULL. */
|
||||
#define FT_OFFSET( base, count ) ( (base) ? (base) + (count) : NULL )
|
||||
|
||||
|
||||
/*
|
||||
* C++ refuses to handle statements like p = (void*)anything, with `p' a
|
||||
* typed pointer. Since we don't have a `typeof' operator in standard C++,
|
||||
@@ -87,15 +96,15 @@ extern "C++"
|
||||
|
||||
#ifdef FT_DEBUG_MEMORY
|
||||
|
||||
FT_BASE( const char* ) _ft_debug_file;
|
||||
FT_BASE( long ) _ft_debug_lineno;
|
||||
FT_BASE( const char* ) ft_debug_file_;
|
||||
FT_BASE( long ) ft_debug_lineno_;
|
||||
|
||||
#define FT_DEBUG_INNER( exp ) ( _ft_debug_file = __FILE__, \
|
||||
_ft_debug_lineno = __LINE__, \
|
||||
#define FT_DEBUG_INNER( exp ) ( ft_debug_file_ = __FILE__, \
|
||||
ft_debug_lineno_ = __LINE__, \
|
||||
(exp) )
|
||||
|
||||
#define FT_ASSIGNP_INNER( p, exp ) ( _ft_debug_file = __FILE__, \
|
||||
_ft_debug_lineno = __LINE__, \
|
||||
#define FT_ASSIGNP_INNER( p, exp ) ( ft_debug_file_ = __FILE__, \
|
||||
ft_debug_lineno_ = __LINE__, \
|
||||
FT_ASSIGNP( p, exp ) )
|
||||
|
||||
#else /* !FT_DEBUG_MEMORY */
|
||||
@@ -153,10 +162,10 @@ extern "C++"
|
||||
(FT_Long)(size), \
|
||||
&error ) )
|
||||
|
||||
#define FT_MEM_FREE( ptr ) \
|
||||
FT_BEGIN_STMNT \
|
||||
ft_mem_free( memory, (ptr) ); \
|
||||
(ptr) = NULL; \
|
||||
#define FT_MEM_FREE( ptr ) \
|
||||
FT_BEGIN_STMNT \
|
||||
FT_DEBUG_INNER( ft_mem_free( memory, (ptr) ) ); \
|
||||
(ptr) = NULL; \
|
||||
FT_END_STMNT
|
||||
|
||||
#define FT_MEM_NEW( ptr ) \
|
||||
@@ -335,14 +344,13 @@ extern "C++"
|
||||
#define FT_RENEW_ARRAY( ptr, curcnt, newcnt ) \
|
||||
FT_MEM_SET_ERROR( FT_MEM_RENEW_ARRAY( ptr, curcnt, newcnt ) )
|
||||
|
||||
#define FT_QNEW( ptr ) \
|
||||
FT_MEM_SET_ERROR( FT_MEM_QNEW( ptr ) )
|
||||
#define FT_QNEW( ptr ) FT_MEM_SET_ERROR( FT_MEM_QNEW( ptr ) )
|
||||
|
||||
#define FT_QNEW_ARRAY( ptr, count ) \
|
||||
FT_MEM_SET_ERROR( FT_MEM_NEW_ARRAY( ptr, count ) )
|
||||
#define FT_QNEW_ARRAY( ptr, count ) \
|
||||
FT_MEM_SET_ERROR( FT_MEM_QNEW_ARRAY( ptr, count ) )
|
||||
|
||||
#define FT_QRENEW_ARRAY( ptr, curcnt, newcnt ) \
|
||||
FT_MEM_SET_ERROR( FT_MEM_RENEW_ARRAY( ptr, curcnt, newcnt ) )
|
||||
#define FT_QRENEW_ARRAY( ptr, curcnt, newcnt ) \
|
||||
FT_MEM_SET_ERROR( FT_MEM_QRENEW_ARRAY( ptr, curcnt, newcnt ) )
|
||||
|
||||
|
||||
FT_BASE( FT_Pointer )
|
||||
@@ -381,8 +389,6 @@ extern "C++"
|
||||
#define FT_STRCPYN( dst, src, size ) \
|
||||
ft_mem_strcpyn( (char*)dst, (const char*)(src), (FT_ULong)(size) )
|
||||
|
||||
/* */
|
||||
|
||||
|
||||
FT_END_HEADER
|
||||
|
||||
|
||||
91
Source/ThirdParty/freetype/internal/ftmmtypes.h
vendored
Normal file
91
Source/ThirdParty/freetype/internal/ftmmtypes.h
vendored
Normal file
@@ -0,0 +1,91 @@
|
||||
/****************************************************************************
|
||||
*
|
||||
* ftmmtypes.h
|
||||
*
|
||||
* OpenType Variations type definitions for internal use
|
||||
* with the multi-masters service (specification).
|
||||
*
|
||||
* Copyright (C) 2022-2023 by
|
||||
* David Turner, Robert Wilhelm, Werner Lemberg, George Williams, and
|
||||
* Dominik Röttsches.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
* modified, and distributed under the terms of the FreeType project
|
||||
* license, LICENSE.TXT. By continuing to use, modify, or distribute
|
||||
* this file you indicate that you have read the license and
|
||||
* understand and accept it fully.
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#ifndef FTMMTYPES_H_
|
||||
#define FTMMTYPES_H_
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
|
||||
typedef FT_Int32 FT_ItemVarDelta;
|
||||
|
||||
typedef struct GX_ItemVarDataRec_
|
||||
{
|
||||
FT_UInt itemCount; /* Number of delta sets per item. */
|
||||
FT_UInt regionIdxCount; /* Number of region indices. */
|
||||
FT_UInt* regionIndices; /* Array of `regionCount` indices; */
|
||||
/* these index `varRegionList`. */
|
||||
FT_Byte* deltaSet; /* Array of `itemCount` deltas; */
|
||||
/* use `innerIndex` for this array. */
|
||||
FT_UShort wordDeltaCount; /* Number of the first 32-bit ints */
|
||||
/* or 16-bit ints of `deltaSet` */
|
||||
/* depending on `longWords`. */
|
||||
FT_Bool longWords; /* If true, `deltaSet` is a 32-bit */
|
||||
/* array followed by a 16-bit */
|
||||
/* array, otherwise a 16-bit array */
|
||||
/* followed by an 8-bit array. */
|
||||
} GX_ItemVarDataRec, *GX_ItemVarData;
|
||||
|
||||
|
||||
/* contribution of one axis to a region */
|
||||
typedef struct GX_AxisCoordsRec_
|
||||
{
|
||||
FT_Fixed startCoord;
|
||||
FT_Fixed peakCoord; /* zero means no effect (factor = 1) */
|
||||
FT_Fixed endCoord;
|
||||
|
||||
} GX_AxisCoordsRec, *GX_AxisCoords;
|
||||
|
||||
|
||||
typedef struct GX_VarRegionRec_
|
||||
{
|
||||
GX_AxisCoords axisList; /* array of axisCount records */
|
||||
|
||||
} GX_VarRegionRec, *GX_VarRegion;
|
||||
|
||||
|
||||
/* item variation store */
|
||||
typedef struct GX_ItemVarStoreRec_
|
||||
{
|
||||
FT_UInt dataCount;
|
||||
GX_ItemVarData varData; /* array of dataCount records; */
|
||||
/* use `outerIndex' for this array */
|
||||
FT_UShort axisCount;
|
||||
FT_UInt regionCount; /* total number of regions defined */
|
||||
GX_VarRegion varRegionList;
|
||||
|
||||
} GX_ItemVarStoreRec, *GX_ItemVarStore;
|
||||
|
||||
|
||||
typedef struct GX_DeltaSetIdxMapRec_
|
||||
{
|
||||
FT_ULong mapCount;
|
||||
FT_UInt* outerIndex; /* indices to item var data */
|
||||
FT_UInt* innerIndex; /* indices to delta set */
|
||||
|
||||
} GX_DeltaSetIdxMapRec, *GX_DeltaSetIdxMap;
|
||||
|
||||
|
||||
FT_END_HEADER
|
||||
|
||||
#endif /* FTMMTYPES_H_ */
|
||||
|
||||
|
||||
/* END */
|
||||
44
Source/ThirdParty/freetype/internal/ftobjs.h
vendored
44
Source/ThirdParty/freetype/internal/ftobjs.h
vendored
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* The FreeType private base classes (specification).
|
||||
*
|
||||
* Copyright (C) 1996-2019 by
|
||||
* Copyright (C) 1996-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
@@ -26,21 +26,21 @@
|
||||
#ifndef FTOBJS_H_
|
||||
#define FTOBJS_H_
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_RENDER_H
|
||||
#include FT_SIZES_H
|
||||
#include FT_LCD_FILTER_H
|
||||
#include FT_INTERNAL_MEMORY_H
|
||||
#include FT_INTERNAL_GLYPH_LOADER_H
|
||||
#include FT_INTERNAL_DRIVER_H
|
||||
#include FT_INTERNAL_AUTOHINT_H
|
||||
#include FT_INTERNAL_SERVICE_H
|
||||
#include FT_INTERNAL_CALC_H
|
||||
#include <freetype/ftrender.h>
|
||||
#include <freetype/ftsizes.h>
|
||||
#include <freetype/ftlcdfil.h>
|
||||
#include <freetype/internal/ftmemory.h>
|
||||
#include <freetype/internal/ftgloadr.h>
|
||||
#include <freetype/internal/ftdrv.h>
|
||||
#include <freetype/internal/autohint.h>
|
||||
#include <freetype/internal/ftserv.h>
|
||||
#include <freetype/internal/ftcalc.h>
|
||||
|
||||
#ifdef FT_CONFIG_OPTION_INCREMENTAL
|
||||
#include FT_INCREMENTAL_H
|
||||
#include <freetype/ftincrem.h>
|
||||
#endif
|
||||
|
||||
#include "compiler-macros.h"
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
@@ -226,8 +226,8 @@ FT_BEGIN_HEADER
|
||||
} FT_CMap_ClassRec;
|
||||
|
||||
|
||||
#define FT_DECLARE_CMAP_CLASS( class_ ) \
|
||||
FT_CALLBACK_TABLE const FT_CMap_ClassRec class_;
|
||||
#define FT_DECLARE_CMAP_CLASS( class_ ) \
|
||||
FT_CALLBACK_TABLE const FT_CMap_ClassRec class_;
|
||||
|
||||
#define FT_DEFINE_CMAP_CLASS( \
|
||||
class_, \
|
||||
@@ -278,14 +278,12 @@ FT_BEGIN_HEADER
|
||||
#ifdef FT_CONFIG_OPTION_SUBPIXEL_RENDERING
|
||||
|
||||
typedef void (*FT_Bitmap_LcdFilterFunc)( FT_Bitmap* bitmap,
|
||||
FT_Render_Mode render_mode,
|
||||
FT_Byte* weights );
|
||||
|
||||
|
||||
/* This is the default LCD filter, an in-place, 5-tap FIR filter. */
|
||||
FT_BASE( void )
|
||||
ft_lcd_filter_fir( FT_Bitmap* bitmap,
|
||||
FT_Render_Mode mode,
|
||||
FT_LcdFiveTapFilter weights );
|
||||
|
||||
#endif /* FT_CONFIG_OPTION_SUBPIXEL_RENDERING */
|
||||
@@ -420,7 +418,8 @@ FT_BEGIN_HEADER
|
||||
* initializing the glyph slot.
|
||||
*/
|
||||
|
||||
#define FT_GLYPH_OWN_BITMAP 0x1U
|
||||
#define FT_GLYPH_OWN_BITMAP 0x1U
|
||||
#define FT_GLYPH_OWN_GZIP_SVG 0x2U
|
||||
|
||||
typedef struct FT_Slot_InternalRec_
|
||||
{
|
||||
@@ -655,7 +654,7 @@ FT_BEGIN_HEADER
|
||||
FT_BASE( void )
|
||||
FT_Done_GlyphSlot( FT_GlyphSlot slot );
|
||||
|
||||
/* */
|
||||
/* */
|
||||
|
||||
#define FT_REQUEST_WIDTH( req ) \
|
||||
( (req)->horiResolution \
|
||||
@@ -675,7 +674,7 @@ FT_BEGIN_HEADER
|
||||
|
||||
|
||||
/* Set the metrics according to a size request. */
|
||||
FT_BASE( void )
|
||||
FT_BASE( FT_Error )
|
||||
FT_Request_Metrics( FT_Face face,
|
||||
FT_Size_Request req );
|
||||
|
||||
@@ -941,8 +940,8 @@ FT_BEGIN_HEADER
|
||||
FT_UInt buffer_max );
|
||||
|
||||
typedef FT_UInt
|
||||
(*FT_Face_GetGlyphNameIndexFunc)( FT_Face face,
|
||||
FT_String* glyph_name );
|
||||
(*FT_Face_GetGlyphNameIndexFunc)( FT_Face face,
|
||||
const FT_String* glyph_name );
|
||||
|
||||
|
||||
#ifndef FT_CONFIG_OPTION_NO_DEFAULT_SYSTEM
|
||||
@@ -1059,6 +1058,9 @@ FT_BEGIN_HEADER
|
||||
* The struct will be allocated in the global scope (or the scope where
|
||||
* the macro is used).
|
||||
*/
|
||||
#define FT_DECLARE_GLYPH( class_ ) \
|
||||
FT_CALLBACK_TABLE const FT_Glyph_Class class_;
|
||||
|
||||
#define FT_DEFINE_GLYPH( \
|
||||
class_, \
|
||||
size_, \
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* Get and set properties of PostScript drivers (specification).
|
||||
*
|
||||
* Copyright (C) 2017-2019 by
|
||||
* Copyright (C) 2017-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
@@ -20,8 +20,7 @@
|
||||
#define FTPSPROP_H_
|
||||
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_FREETYPE_H
|
||||
#include <freetype/freetype.h>
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* Embedded resource forks accessor (specification).
|
||||
*
|
||||
* Copyright (C) 2004-2019 by
|
||||
* Copyright (C) 2004-2023 by
|
||||
* Masatake YAMATO and Redhat K.K.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
@@ -25,8 +25,7 @@
|
||||
#define FTRFORK_H_
|
||||
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_INTERNAL_OBJECTS_H
|
||||
#include <freetype/internal/ftobjs.h>
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
30
Source/ThirdParty/freetype/internal/ftserv.h
vendored
30
Source/ThirdParty/freetype/internal/ftserv.h
vendored
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* The FreeType services (specification only).
|
||||
*
|
||||
* Copyright (C) 2003-2019 by
|
||||
* Copyright (C) 2003-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
@@ -31,6 +31,7 @@
|
||||
#ifndef FTSERV_H_
|
||||
#define FTSERV_H_
|
||||
|
||||
#include "compiler-macros.h"
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
@@ -486,33 +487,6 @@ FT_BEGIN_HEADER
|
||||
|
||||
/* */
|
||||
|
||||
/*
|
||||
* The header files containing the services.
|
||||
*/
|
||||
|
||||
#define FT_SERVICE_BDF_H <freetype/internal/services/svbdf.h>
|
||||
#define FT_SERVICE_CFF_TABLE_LOAD_H <freetype/internal/services/svcfftl.h>
|
||||
#define FT_SERVICE_CID_H <freetype/internal/services/svcid.h>
|
||||
#define FT_SERVICE_FONT_FORMAT_H <freetype/internal/services/svfntfmt.h>
|
||||
#define FT_SERVICE_GLYPH_DICT_H <freetype/internal/services/svgldict.h>
|
||||
#define FT_SERVICE_GX_VALIDATE_H <freetype/internal/services/svgxval.h>
|
||||
#define FT_SERVICE_KERNING_H <freetype/internal/services/svkern.h>
|
||||
#define FT_SERVICE_METRICS_VARIATIONS_H <freetype/internal/services/svmetric.h>
|
||||
#define FT_SERVICE_MULTIPLE_MASTERS_H <freetype/internal/services/svmm.h>
|
||||
#define FT_SERVICE_OPENTYPE_VALIDATE_H <freetype/internal/services/svotval.h>
|
||||
#define FT_SERVICE_PFR_H <freetype/internal/services/svpfr.h>
|
||||
#define FT_SERVICE_POSTSCRIPT_CMAPS_H <freetype/internal/services/svpscmap.h>
|
||||
#define FT_SERVICE_POSTSCRIPT_INFO_H <freetype/internal/services/svpsinfo.h>
|
||||
#define FT_SERVICE_POSTSCRIPT_NAME_H <freetype/internal/services/svpostnm.h>
|
||||
#define FT_SERVICE_PROPERTIES_H <freetype/internal/services/svprop.h>
|
||||
#define FT_SERVICE_SFNT_H <freetype/internal/services/svsfnt.h>
|
||||
#define FT_SERVICE_TRUETYPE_ENGINE_H <freetype/internal/services/svtteng.h>
|
||||
#define FT_SERVICE_TRUETYPE_GLYF_H <freetype/internal/services/svttglyf.h>
|
||||
#define FT_SERVICE_TT_CMAP_H <freetype/internal/services/svttcmap.h>
|
||||
#define FT_SERVICE_WINFNT_H <freetype/internal/services/svwinfnt.h>
|
||||
|
||||
/* */
|
||||
|
||||
FT_END_HEADER
|
||||
|
||||
#endif /* FTSERV_H_ */
|
||||
|
||||
151
Source/ThirdParty/freetype/internal/ftstream.h
vendored
151
Source/ThirdParty/freetype/internal/ftstream.h
vendored
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* Stream handling (specification).
|
||||
*
|
||||
* Copyright (C) 1996-2019 by
|
||||
* Copyright (C) 1996-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
@@ -21,8 +21,8 @@
|
||||
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_SYSTEM_H
|
||||
#include FT_INTERNAL_OBJECTS_H
|
||||
#include <freetype/ftsystem.h>
|
||||
#include <freetype/internal/ftobjs.h>
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
@@ -165,6 +165,17 @@ FT_BEGIN_HEADER
|
||||
#define FT_BYTE_U32( p, i, s ) ( FT_UINT32( FT_BYTE_( p, i ) ) << (s) )
|
||||
|
||||
|
||||
/*
|
||||
* function acts on increases does range for emits
|
||||
* pointer checking frames error
|
||||
* -------------------------------------------------------------------
|
||||
* FT_PEEK_XXX buffer pointer no no no no
|
||||
* FT_NEXT_XXX buffer pointer yes no no no
|
||||
* FT_GET_XXX stream->cursor yes yes yes no
|
||||
* FT_READ_XXX stream->pos yes yes no yes
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* `FT_PEEK_XXX' are generic macros to get data from a buffer position. No
|
||||
* safety checks are performed.
|
||||
@@ -185,9 +196,9 @@ FT_BEGIN_HEADER
|
||||
FT_BYTE_U32( p, 2, 8 ) | \
|
||||
FT_BYTE_U32( p, 3, 0 ) )
|
||||
|
||||
#define FT_PEEK_OFF3( p ) FT_INT32( FT_BYTE_U32( p, 0, 16 ) | \
|
||||
FT_BYTE_U32( p, 1, 8 ) | \
|
||||
FT_BYTE_U32( p, 2, 0 ) )
|
||||
#define FT_PEEK_OFF3( p ) ( FT_INT32( FT_BYTE_U32( p, 0, 24 ) | \
|
||||
FT_BYTE_U32( p, 1, 16 ) | \
|
||||
FT_BYTE_U32( p, 2, 8 ) ) >> 8 )
|
||||
|
||||
#define FT_PEEK_UOFF3( p ) FT_UINT32( FT_BYTE_U32( p, 0, 16 ) | \
|
||||
FT_BYTE_U32( p, 1, 8 ) | \
|
||||
@@ -209,9 +220,9 @@ FT_BEGIN_HEADER
|
||||
FT_BYTE_U32( p, 1, 8 ) | \
|
||||
FT_BYTE_U32( p, 0, 0 ) )
|
||||
|
||||
#define FT_PEEK_OFF3_LE( p ) FT_INT32( FT_BYTE_U32( p, 2, 16 ) | \
|
||||
FT_BYTE_U32( p, 1, 8 ) | \
|
||||
FT_BYTE_U32( p, 0, 0 ) )
|
||||
#define FT_PEEK_OFF3_LE( p ) ( FT_INT32( FT_BYTE_U32( p, 2, 24 ) | \
|
||||
FT_BYTE_U32( p, 1, 16 ) | \
|
||||
FT_BYTE_U32( p, 0, 8 ) ) >> 8 )
|
||||
|
||||
#define FT_PEEK_UOFF3_LE( p ) FT_UINT32( FT_BYTE_U32( p, 2, 16 ) | \
|
||||
FT_BYTE_U32( p, 1, 8 ) | \
|
||||
@@ -227,42 +238,42 @@ FT_BEGIN_HEADER
|
||||
#define FT_NEXT_BYTE( buffer ) \
|
||||
( (unsigned char)*buffer++ )
|
||||
|
||||
#define FT_NEXT_SHORT( buffer ) \
|
||||
( (short)( buffer += 2, FT_PEEK_SHORT( buffer - 2 ) ) )
|
||||
#define FT_NEXT_SHORT( buffer ) \
|
||||
( buffer += 2, FT_PEEK_SHORT( buffer - 2 ) )
|
||||
|
||||
#define FT_NEXT_USHORT( buffer ) \
|
||||
( (unsigned short)( buffer += 2, FT_PEEK_USHORT( buffer - 2 ) ) )
|
||||
#define FT_NEXT_USHORT( buffer ) \
|
||||
( buffer += 2, FT_PEEK_USHORT( buffer - 2 ) )
|
||||
|
||||
#define FT_NEXT_OFF3( buffer ) \
|
||||
( (long)( buffer += 3, FT_PEEK_OFF3( buffer - 3 ) ) )
|
||||
#define FT_NEXT_OFF3( buffer ) \
|
||||
( buffer += 3, FT_PEEK_OFF3( buffer - 3 ) )
|
||||
|
||||
#define FT_NEXT_UOFF3( buffer ) \
|
||||
( (unsigned long)( buffer += 3, FT_PEEK_UOFF3( buffer - 3 ) ) )
|
||||
#define FT_NEXT_UOFF3( buffer ) \
|
||||
( buffer += 3, FT_PEEK_UOFF3( buffer - 3 ) )
|
||||
|
||||
#define FT_NEXT_LONG( buffer ) \
|
||||
( (long)( buffer += 4, FT_PEEK_LONG( buffer - 4 ) ) )
|
||||
#define FT_NEXT_LONG( buffer ) \
|
||||
( buffer += 4, FT_PEEK_LONG( buffer - 4 ) )
|
||||
|
||||
#define FT_NEXT_ULONG( buffer ) \
|
||||
( (unsigned long)( buffer += 4, FT_PEEK_ULONG( buffer - 4 ) ) )
|
||||
#define FT_NEXT_ULONG( buffer ) \
|
||||
( buffer += 4, FT_PEEK_ULONG( buffer - 4 ) )
|
||||
|
||||
|
||||
#define FT_NEXT_SHORT_LE( buffer ) \
|
||||
( (short)( buffer += 2, FT_PEEK_SHORT_LE( buffer - 2 ) ) )
|
||||
#define FT_NEXT_SHORT_LE( buffer ) \
|
||||
( buffer += 2, FT_PEEK_SHORT_LE( buffer - 2 ) )
|
||||
|
||||
#define FT_NEXT_USHORT_LE( buffer ) \
|
||||
( (unsigned short)( buffer += 2, FT_PEEK_USHORT_LE( buffer - 2 ) ) )
|
||||
#define FT_NEXT_USHORT_LE( buffer ) \
|
||||
( buffer += 2, FT_PEEK_USHORT_LE( buffer - 2 ) )
|
||||
|
||||
#define FT_NEXT_OFF3_LE( buffer ) \
|
||||
( (long)( buffer += 3, FT_PEEK_OFF3_LE( buffer - 3 ) ) )
|
||||
#define FT_NEXT_OFF3_LE( buffer ) \
|
||||
( buffer += 3, FT_PEEK_OFF3_LE( buffer - 3 ) )
|
||||
|
||||
#define FT_NEXT_UOFF3_LE( buffer ) \
|
||||
( (unsigned long)( buffer += 3, FT_PEEK_UOFF3_LE( buffer - 3 ) ) )
|
||||
#define FT_NEXT_UOFF3_LE( buffer ) \
|
||||
( buffer += 3, FT_PEEK_UOFF3_LE( buffer - 3 ) )
|
||||
|
||||
#define FT_NEXT_LONG_LE( buffer ) \
|
||||
( (long)( buffer += 4, FT_PEEK_LONG_LE( buffer - 4 ) ) )
|
||||
#define FT_NEXT_LONG_LE( buffer ) \
|
||||
( buffer += 4, FT_PEEK_LONG_LE( buffer - 4 ) )
|
||||
|
||||
#define FT_NEXT_ULONG_LE( buffer ) \
|
||||
( (unsigned long)( buffer += 4, FT_PEEK_ULONG_LE( buffer - 4 ) ) )
|
||||
#define FT_NEXT_ULONG_LE( buffer ) \
|
||||
( buffer += 4, FT_PEEK_ULONG_LE( buffer - 4 ) )
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
@@ -294,20 +305,19 @@ FT_BEGIN_HEADER
|
||||
#else
|
||||
#define FT_GET_MACRO( func, type ) ( (type)func( stream ) )
|
||||
|
||||
#define FT_GET_CHAR() FT_GET_MACRO( FT_Stream_GetChar, FT_Char )
|
||||
#define FT_GET_BYTE() FT_GET_MACRO( FT_Stream_GetChar, FT_Byte )
|
||||
#define FT_GET_SHORT() FT_GET_MACRO( FT_Stream_GetUShort, FT_Short )
|
||||
#define FT_GET_USHORT() FT_GET_MACRO( FT_Stream_GetUShort, FT_UShort )
|
||||
#define FT_GET_OFF3() FT_GET_MACRO( FT_Stream_GetUOffset, FT_Long )
|
||||
#define FT_GET_UOFF3() FT_GET_MACRO( FT_Stream_GetUOffset, FT_ULong )
|
||||
#define FT_GET_LONG() FT_GET_MACRO( FT_Stream_GetULong, FT_Long )
|
||||
#define FT_GET_ULONG() FT_GET_MACRO( FT_Stream_GetULong, FT_ULong )
|
||||
#define FT_GET_TAG4() FT_GET_MACRO( FT_Stream_GetULong, FT_ULong )
|
||||
#define FT_GET_CHAR() FT_GET_MACRO( FT_Stream_GetByte, FT_Char )
|
||||
#define FT_GET_BYTE() FT_GET_MACRO( FT_Stream_GetByte, FT_Byte )
|
||||
#define FT_GET_SHORT() FT_GET_MACRO( FT_Stream_GetUShort, FT_Int16 )
|
||||
#define FT_GET_USHORT() FT_GET_MACRO( FT_Stream_GetUShort, FT_UInt16 )
|
||||
#define FT_GET_UOFF3() FT_GET_MACRO( FT_Stream_GetUOffset, FT_UInt32 )
|
||||
#define FT_GET_LONG() FT_GET_MACRO( FT_Stream_GetULong, FT_Int32 )
|
||||
#define FT_GET_ULONG() FT_GET_MACRO( FT_Stream_GetULong, FT_UInt32 )
|
||||
#define FT_GET_TAG4() FT_GET_MACRO( FT_Stream_GetULong, FT_UInt32 )
|
||||
|
||||
#define FT_GET_SHORT_LE() FT_GET_MACRO( FT_Stream_GetUShortLE, FT_Short )
|
||||
#define FT_GET_USHORT_LE() FT_GET_MACRO( FT_Stream_GetUShortLE, FT_UShort )
|
||||
#define FT_GET_LONG_LE() FT_GET_MACRO( FT_Stream_GetULongLE, FT_Long )
|
||||
#define FT_GET_ULONG_LE() FT_GET_MACRO( FT_Stream_GetULongLE, FT_ULong )
|
||||
#define FT_GET_SHORT_LE() FT_GET_MACRO( FT_Stream_GetUShortLE, FT_Int16 )
|
||||
#define FT_GET_USHORT_LE() FT_GET_MACRO( FT_Stream_GetUShortLE, FT_UInt16 )
|
||||
#define FT_GET_LONG_LE() FT_GET_MACRO( FT_Stream_GetULongLE, FT_Int32 )
|
||||
#define FT_GET_ULONG_LE() FT_GET_MACRO( FT_Stream_GetULongLE, FT_UInt32 )
|
||||
#endif
|
||||
|
||||
|
||||
@@ -322,19 +332,18 @@ FT_BEGIN_HEADER
|
||||
* `FT_STREAM_POS'. They use the full machinery to check whether a read is
|
||||
* valid.
|
||||
*/
|
||||
#define FT_READ_BYTE( var ) FT_READ_MACRO( FT_Stream_ReadChar, FT_Byte, var )
|
||||
#define FT_READ_CHAR( var ) FT_READ_MACRO( FT_Stream_ReadChar, FT_Char, var )
|
||||
#define FT_READ_SHORT( var ) FT_READ_MACRO( FT_Stream_ReadUShort, FT_Short, var )
|
||||
#define FT_READ_USHORT( var ) FT_READ_MACRO( FT_Stream_ReadUShort, FT_UShort, var )
|
||||
#define FT_READ_OFF3( var ) FT_READ_MACRO( FT_Stream_ReadUOffset, FT_Long, var )
|
||||
#define FT_READ_UOFF3( var ) FT_READ_MACRO( FT_Stream_ReadUOffset, FT_ULong, var )
|
||||
#define FT_READ_LONG( var ) FT_READ_MACRO( FT_Stream_ReadULong, FT_Long, var )
|
||||
#define FT_READ_ULONG( var ) FT_READ_MACRO( FT_Stream_ReadULong, FT_ULong, var )
|
||||
#define FT_READ_BYTE( var ) FT_READ_MACRO( FT_Stream_ReadByte, FT_Byte, var )
|
||||
#define FT_READ_CHAR( var ) FT_READ_MACRO( FT_Stream_ReadByte, FT_Char, var )
|
||||
#define FT_READ_SHORT( var ) FT_READ_MACRO( FT_Stream_ReadUShort, FT_Int16, var )
|
||||
#define FT_READ_USHORT( var ) FT_READ_MACRO( FT_Stream_ReadUShort, FT_UInt16, var )
|
||||
#define FT_READ_UOFF3( var ) FT_READ_MACRO( FT_Stream_ReadUOffset, FT_UInt32, var )
|
||||
#define FT_READ_LONG( var ) FT_READ_MACRO( FT_Stream_ReadULong, FT_Int32, var )
|
||||
#define FT_READ_ULONG( var ) FT_READ_MACRO( FT_Stream_ReadULong, FT_UInt32, var )
|
||||
|
||||
#define FT_READ_SHORT_LE( var ) FT_READ_MACRO( FT_Stream_ReadUShortLE, FT_Short, var )
|
||||
#define FT_READ_USHORT_LE( var ) FT_READ_MACRO( FT_Stream_ReadUShortLE, FT_UShort, var )
|
||||
#define FT_READ_LONG_LE( var ) FT_READ_MACRO( FT_Stream_ReadULongLE, FT_Long, var )
|
||||
#define FT_READ_ULONG_LE( var ) FT_READ_MACRO( FT_Stream_ReadULongLE, FT_ULong, var )
|
||||
#define FT_READ_SHORT_LE( var ) FT_READ_MACRO( FT_Stream_ReadUShortLE, FT_Int16, var )
|
||||
#define FT_READ_USHORT_LE( var ) FT_READ_MACRO( FT_Stream_ReadUShortLE, FT_UInt16, var )
|
||||
#define FT_READ_LONG_LE( var ) FT_READ_MACRO( FT_Stream_ReadULongLE, FT_Int32, var )
|
||||
#define FT_READ_ULONG_LE( var ) FT_READ_MACRO( FT_Stream_ReadULongLE, FT_UInt32, var )
|
||||
|
||||
|
||||
#ifndef FT_CONFIG_OPTION_NO_DEFAULT_SYSTEM
|
||||
@@ -446,37 +455,37 @@ FT_BEGIN_HEADER
|
||||
|
||||
|
||||
/* read a byte from an entered frame */
|
||||
FT_BASE( FT_Char )
|
||||
FT_Stream_GetChar( FT_Stream stream );
|
||||
FT_BASE( FT_Byte )
|
||||
FT_Stream_GetByte( FT_Stream stream );
|
||||
|
||||
/* read a 16-bit big-endian unsigned integer from an entered frame */
|
||||
FT_BASE( FT_UShort )
|
||||
FT_BASE( FT_UInt16 )
|
||||
FT_Stream_GetUShort( FT_Stream stream );
|
||||
|
||||
/* read a 24-bit big-endian unsigned integer from an entered frame */
|
||||
FT_BASE( FT_ULong )
|
||||
FT_BASE( FT_UInt32 )
|
||||
FT_Stream_GetUOffset( FT_Stream stream );
|
||||
|
||||
/* read a 32-bit big-endian unsigned integer from an entered frame */
|
||||
FT_BASE( FT_ULong )
|
||||
FT_BASE( FT_UInt32 )
|
||||
FT_Stream_GetULong( FT_Stream stream );
|
||||
|
||||
/* read a 16-bit little-endian unsigned integer from an entered frame */
|
||||
FT_BASE( FT_UShort )
|
||||
FT_BASE( FT_UInt16 )
|
||||
FT_Stream_GetUShortLE( FT_Stream stream );
|
||||
|
||||
/* read a 32-bit little-endian unsigned integer from an entered frame */
|
||||
FT_BASE( FT_ULong )
|
||||
FT_BASE( FT_UInt32 )
|
||||
FT_Stream_GetULongLE( FT_Stream stream );
|
||||
|
||||
|
||||
/* read a byte from a stream */
|
||||
FT_BASE( FT_Char )
|
||||
FT_Stream_ReadChar( FT_Stream stream,
|
||||
FT_BASE( FT_Byte )
|
||||
FT_Stream_ReadByte( FT_Stream stream,
|
||||
FT_Error* error );
|
||||
|
||||
/* read a 16-bit big-endian unsigned integer from a stream */
|
||||
FT_BASE( FT_UShort )
|
||||
FT_BASE( FT_UInt16 )
|
||||
FT_Stream_ReadUShort( FT_Stream stream,
|
||||
FT_Error* error );
|
||||
|
||||
@@ -486,17 +495,17 @@ FT_BEGIN_HEADER
|
||||
FT_Error* error );
|
||||
|
||||
/* read a 32-bit big-endian integer from a stream */
|
||||
FT_BASE( FT_ULong )
|
||||
FT_BASE( FT_UInt32 )
|
||||
FT_Stream_ReadULong( FT_Stream stream,
|
||||
FT_Error* error );
|
||||
|
||||
/* read a 16-bit little-endian unsigned integer from a stream */
|
||||
FT_BASE( FT_UShort )
|
||||
FT_BASE( FT_UInt16 )
|
||||
FT_Stream_ReadUShortLE( FT_Stream stream,
|
||||
FT_Error* error );
|
||||
|
||||
/* read a 32-bit little-endian unsigned integer from a stream */
|
||||
FT_BASE( FT_ULong )
|
||||
FT_BASE( FT_UInt32 )
|
||||
FT_Stream_ReadULongLE( FT_Stream stream,
|
||||
FT_Error* error );
|
||||
|
||||
|
||||
30
Source/ThirdParty/freetype/internal/fttrace.h
vendored
30
Source/ThirdParty/freetype/internal/fttrace.h
vendored
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* Tracing handling (specification only).
|
||||
*
|
||||
* Copyright (C) 2002-2019 by
|
||||
* Copyright (C) 2002-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
@@ -18,6 +18,11 @@
|
||||
|
||||
/* definitions of trace levels for FreeType 2 */
|
||||
|
||||
/* the maximum string length (if the argument to `FT_TRACE_DEF` */
|
||||
/* gets used as a string) plus one charachter for ':' plus */
|
||||
/* another one for the trace level */
|
||||
#define FT_MAX_TRACE_LEVEL_LENGTH (9 + 1 + 1)
|
||||
|
||||
/* the first level must always be `trace_any' */
|
||||
FT_TRACE_DEF( any )
|
||||
|
||||
@@ -38,20 +43,28 @@ FT_TRACE_DEF( checksum ) /* bitmap checksum (ftobjs.c) */
|
||||
FT_TRACE_DEF( mm ) /* MM interface (ftmm.c) */
|
||||
FT_TRACE_DEF( psprops ) /* PS driver properties (ftpsprop.c) */
|
||||
FT_TRACE_DEF( raccess ) /* resource fork accessor (ftrfork.c) */
|
||||
FT_TRACE_DEF( raster ) /* monochrome rasterizer (ftraster.c) */
|
||||
FT_TRACE_DEF( smooth ) /* anti-aliasing raster (ftgrays.c) */
|
||||
FT_TRACE_DEF( synth ) /* bold/slant synthesizer (ftsynth.c) */
|
||||
|
||||
/* Cache sub-system */
|
||||
FT_TRACE_DEF( cache ) /* cache sub-system (ftcache.c, etc.) */
|
||||
/* rasterizers */
|
||||
FT_TRACE_DEF( raster ) /* monochrome rasterizer (ftraster.c) */
|
||||
FT_TRACE_DEF( smooth ) /* anti-aliasing raster (ftgrays.c) */
|
||||
|
||||
/* ot-svg module */
|
||||
FT_TRACE_DEF( otsvg ) /* OT-SVG renderer (ftsvg.c) */
|
||||
|
||||
/* cache sub-system */
|
||||
FT_TRACE_DEF( cache ) /* cache sub-system (ftcache.c, etc.) */
|
||||
|
||||
/* SFNT driver components */
|
||||
FT_TRACE_DEF( sfdriver ) /* SFNT font driver (sfdriver.c) */
|
||||
FT_TRACE_DEF( sfobjs ) /* SFNT object handler (sfobjs.c) */
|
||||
FT_TRACE_DEF( sfwoff ) /* WOFF format handler (sfwoff.c) */
|
||||
FT_TRACE_DEF( sfwoff2 ) /* WOFF2 format handler (sfwoff2.c) */
|
||||
FT_TRACE_DEF( ttbdf ) /* TrueType embedded BDF (ttbdf.c) */
|
||||
FT_TRACE_DEF( ttcmap ) /* charmap handler (ttcmap.c) */
|
||||
FT_TRACE_DEF( ttcolr ) /* glyph layer table (ttcolr.c) */
|
||||
FT_TRACE_DEF( ttcpal ) /* color palette table (ttcpal.c) */
|
||||
FT_TRACE_DEF( ttsvg ) /* OpenType SVG table (ttsvg.c) */
|
||||
FT_TRACE_DEF( ttkern ) /* kerning handler (ttkern.c) */
|
||||
FT_TRACE_DEF( ttload ) /* basic TrueType tables (ttload.c) */
|
||||
FT_TRACE_DEF( ttmtx ) /* metrics-related tables (ttmtx.c) */
|
||||
@@ -75,6 +88,7 @@ FT_TRACE_DEF( t1objs )
|
||||
FT_TRACE_DEF( t1parse )
|
||||
|
||||
/* PostScript helper module `psaux' */
|
||||
FT_TRACE_DEF( afmparse )
|
||||
FT_TRACE_DEF( cffdecode )
|
||||
FT_TRACE_DEF( psconv )
|
||||
FT_TRACE_DEF( psobjs )
|
||||
@@ -149,8 +163,10 @@ FT_TRACE_DEF( afglobal )
|
||||
FT_TRACE_DEF( afhints )
|
||||
FT_TRACE_DEF( afmodule )
|
||||
FT_TRACE_DEF( aflatin )
|
||||
FT_TRACE_DEF( aflatin2 )
|
||||
FT_TRACE_DEF( afshaper )
|
||||
FT_TRACE_DEF( afwarp )
|
||||
|
||||
/* SDF components */
|
||||
FT_TRACE_DEF( sdf ) /* signed distance raster for outlines (ftsdf.c) */
|
||||
FT_TRACE_DEF( bsdf ) /* signed distance raster for bitmaps (ftbsdf.c) */
|
||||
|
||||
/* END */
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* FreeType validation support (specification).
|
||||
*
|
||||
* Copyright (C) 2004-2019 by
|
||||
* Copyright (C) 2004-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
@@ -20,8 +20,9 @@
|
||||
#define FTVALID_H_
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_CONFIG_STANDARD_LIBRARY_H /* for ft_setjmp and ft_longjmp */
|
||||
#include FT_CONFIG_STANDARD_LIBRARY_H /* for ft_jmpbuf */
|
||||
|
||||
#include "compiler-macros.h"
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
|
||||
66
Source/ThirdParty/freetype/internal/internal.h
vendored
66
Source/ThirdParty/freetype/internal/internal.h
vendored
@@ -1,66 +0,0 @@
|
||||
/****************************************************************************
|
||||
*
|
||||
* internal.h
|
||||
*
|
||||
* Internal header files (specification only).
|
||||
*
|
||||
* Copyright (C) 1996-2019 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
* modified, and distributed under the terms of the FreeType project
|
||||
* license, LICENSE.TXT. By continuing to use, modify, or distribute
|
||||
* this file you indicate that you have read the license and
|
||||
* understand and accept it fully.
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* This file is automatically included by `ft2build.h`. Do not include it
|
||||
* manually!
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#define FT_INTERNAL_OBJECTS_H <freetype/internal/ftobjs.h>
|
||||
#define FT_INTERNAL_STREAM_H <freetype/internal/ftstream.h>
|
||||
#define FT_INTERNAL_MEMORY_H <freetype/internal/ftmemory.h>
|
||||
#define FT_INTERNAL_DEBUG_H <freetype/internal/ftdebug.h>
|
||||
#define FT_INTERNAL_CALC_H <freetype/internal/ftcalc.h>
|
||||
#define FT_INTERNAL_HASH_H <freetype/internal/fthash.h>
|
||||
#define FT_INTERNAL_DRIVER_H <freetype/internal/ftdrv.h>
|
||||
#define FT_INTERNAL_TRACE_H <freetype/internal/fttrace.h>
|
||||
#define FT_INTERNAL_GLYPH_LOADER_H <freetype/internal/ftgloadr.h>
|
||||
#define FT_INTERNAL_SFNT_H <freetype/internal/sfnt.h>
|
||||
#define FT_INTERNAL_SERVICE_H <freetype/internal/ftserv.h>
|
||||
#define FT_INTERNAL_RFORK_H <freetype/internal/ftrfork.h>
|
||||
#define FT_INTERNAL_VALIDATE_H <freetype/internal/ftvalid.h>
|
||||
|
||||
#define FT_INTERNAL_TRUETYPE_TYPES_H <freetype/internal/tttypes.h>
|
||||
#define FT_INTERNAL_TYPE1_TYPES_H <freetype/internal/t1types.h>
|
||||
|
||||
#define FT_INTERNAL_POSTSCRIPT_AUX_H <freetype/internal/psaux.h>
|
||||
#define FT_INTERNAL_POSTSCRIPT_HINTS_H <freetype/internal/pshints.h>
|
||||
#define FT_INTERNAL_POSTSCRIPT_PROPS_H <freetype/internal/ftpsprop.h>
|
||||
|
||||
#define FT_INTERNAL_AUTOHINT_H <freetype/internal/autohint.h>
|
||||
|
||||
#define FT_INTERNAL_CFF_TYPES_H <freetype/internal/cfftypes.h>
|
||||
#define FT_INTERNAL_CFF_OBJECTS_TYPES_H <freetype/internal/cffotypes.h>
|
||||
|
||||
|
||||
#if defined( _MSC_VER ) /* Visual C++ (and Intel C++) */
|
||||
|
||||
/* We disable the warning `conditional expression is constant' here */
|
||||
/* in order to compile cleanly with the maximum level of warnings. */
|
||||
/* In particular, the warning complains about stuff like `while(0)' */
|
||||
/* which is very useful in macro definitions. There is no benefit */
|
||||
/* in having it enabled. */
|
||||
#pragma warning( disable : 4127 )
|
||||
|
||||
#endif /* _MSC_VER */
|
||||
|
||||
|
||||
/* END */
|
||||
29
Source/ThirdParty/freetype/internal/psaux.h
vendored
29
Source/ThirdParty/freetype/internal/psaux.h
vendored
@@ -5,7 +5,7 @@
|
||||
* Auxiliary functions and data structures related to PostScript fonts
|
||||
* (specification).
|
||||
*
|
||||
* Copyright (C) 1996-2019 by
|
||||
* Copyright (C) 1996-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
@@ -21,14 +21,13 @@
|
||||
#define PSAUX_H_
|
||||
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_INTERNAL_OBJECTS_H
|
||||
#include FT_INTERNAL_TYPE1_TYPES_H
|
||||
#include FT_INTERNAL_HASH_H
|
||||
#include FT_INTERNAL_TRUETYPE_TYPES_H
|
||||
#include FT_SERVICE_POSTSCRIPT_CMAPS_H
|
||||
#include FT_INTERNAL_CFF_TYPES_H
|
||||
#include FT_INTERNAL_CFF_OBJECTS_TYPES_H
|
||||
#include <freetype/internal/ftobjs.h>
|
||||
#include <freetype/internal/t1types.h>
|
||||
#include <freetype/internal/fthash.h>
|
||||
#include <freetype/internal/tttypes.h>
|
||||
#include <freetype/internal/services/svpscmap.h>
|
||||
#include <freetype/internal/cfftypes.h>
|
||||
#include <freetype/internal/cffotypes.h>
|
||||
|
||||
|
||||
|
||||
@@ -96,10 +95,10 @@ FT_BEGIN_HEADER
|
||||
(*done)( PS_Table table );
|
||||
|
||||
FT_Error
|
||||
(*add)( PS_Table table,
|
||||
FT_Int idx,
|
||||
void* object,
|
||||
FT_UInt length );
|
||||
(*add)( PS_Table table,
|
||||
FT_Int idx,
|
||||
const void* object,
|
||||
FT_UInt length );
|
||||
|
||||
void
|
||||
(*release)( PS_Table table );
|
||||
@@ -133,9 +132,6 @@ FT_BEGIN_HEADER
|
||||
* max_elems ::
|
||||
* The maximum number of elements in table.
|
||||
*
|
||||
* num_elems ::
|
||||
* The current number of elements in table.
|
||||
*
|
||||
* elements ::
|
||||
* A table of element addresses within the block.
|
||||
*
|
||||
@@ -156,7 +152,6 @@ FT_BEGIN_HEADER
|
||||
FT_ULong init;
|
||||
|
||||
FT_Int max_elems;
|
||||
FT_Int num_elems;
|
||||
FT_Byte** elements; /* addresses of table elements */
|
||||
FT_UInt* lengths; /* lengths of table elements */
|
||||
|
||||
|
||||
11
Source/ThirdParty/freetype/internal/pshints.h
vendored
11
Source/ThirdParty/freetype/internal/pshints.h
vendored
@@ -6,7 +6,7 @@
|
||||
* recorders (specification only). These are used to support native
|
||||
* T1/T2 hints in the 'type1', 'cid', and 'cff' font drivers.
|
||||
*
|
||||
* Copyright (C) 2001-2019 by
|
||||
* Copyright (C) 2001-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
@@ -22,9 +22,8 @@
|
||||
#define PSHINTS_H_
|
||||
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_FREETYPE_H
|
||||
#include FT_TYPE1_TABLES_H
|
||||
#include <freetype/freetype.h>
|
||||
#include <freetype/t1tables.h>
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
@@ -295,7 +294,7 @@ FT_BEGIN_HEADER
|
||||
*
|
||||
* @note:
|
||||
* On input, all points within the outline are in font coordinates. On
|
||||
* output, they are in 1/64th of pixels.
|
||||
* output, they are in 1/64 of pixels.
|
||||
*
|
||||
* The scaling transformation is taken from the 'globals' object which
|
||||
* must correspond to the same font as the glyph.
|
||||
@@ -608,7 +607,7 @@ FT_BEGIN_HEADER
|
||||
*
|
||||
* @note:
|
||||
* On input, all points within the outline are in font coordinates. On
|
||||
* output, they are in 1/64th of pixels.
|
||||
* output, they are in 1/64 of pixels.
|
||||
*
|
||||
* The scaling transformation is taken from the 'globals' object which
|
||||
* must correspond to the same font than the glyph.
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* The FreeType BDF services (specification).
|
||||
*
|
||||
* Copyright (C) 2003-2019 by
|
||||
* Copyright (C) 2003-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
@@ -19,8 +19,8 @@
|
||||
#ifndef SVBDF_H_
|
||||
#define SVBDF_H_
|
||||
|
||||
#include FT_BDF_H
|
||||
#include FT_INTERNAL_SERVICE_H
|
||||
#include <freetype/ftbdf.h>
|
||||
#include <freetype/internal/ftserv.h>
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* The FreeType CFF tables loader service (specification).
|
||||
*
|
||||
* Copyright (C) 2017-2019 by
|
||||
* Copyright (C) 2017-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
@@ -19,8 +19,8 @@
|
||||
#ifndef SVCFFTL_H_
|
||||
#define SVCFFTL_H_
|
||||
|
||||
#include FT_INTERNAL_SERVICE_H
|
||||
#include FT_INTERNAL_CFF_TYPES_H
|
||||
#include <freetype/internal/ftserv.h>
|
||||
#include <freetype/internal/cfftypes.h>
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* The FreeType CID font services (specification).
|
||||
*
|
||||
* Copyright (C) 2007-2019 by
|
||||
* Copyright (C) 2007-2023 by
|
||||
* Derek Clegg and Michael Toftdal.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
@@ -19,7 +19,7 @@
|
||||
#ifndef SVCID_H_
|
||||
#define SVCID_H_
|
||||
|
||||
#include FT_INTERNAL_SERVICE_H
|
||||
#include <freetype/internal/ftserv.h>
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* The FreeType font format service (specification only).
|
||||
*
|
||||
* Copyright (C) 2003-2019 by
|
||||
* Copyright (C) 2003-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
@@ -19,7 +19,7 @@
|
||||
#ifndef SVFNTFMT_H_
|
||||
#define SVFNTFMT_H_
|
||||
|
||||
#include FT_INTERNAL_SERVICE_H
|
||||
#include <freetype/internal/ftserv.h>
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* The FreeType glyph dictionary services (specification).
|
||||
*
|
||||
* Copyright (C) 2003-2019 by
|
||||
* Copyright (C) 2003-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
@@ -19,7 +19,7 @@
|
||||
#ifndef SVGLDICT_H_
|
||||
#define SVGLDICT_H_
|
||||
|
||||
#include FT_INTERNAL_SERVICE_H
|
||||
#include <freetype/internal/ftserv.h>
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
@@ -41,8 +41,8 @@ FT_BEGIN_HEADER
|
||||
FT_UInt buffer_max );
|
||||
|
||||
typedef FT_UInt
|
||||
(*FT_GlyphDict_NameIndexFunc)( FT_Face face,
|
||||
FT_String* glyph_name );
|
||||
(*FT_GlyphDict_NameIndexFunc)( FT_Face face,
|
||||
const FT_String* glyph_name );
|
||||
|
||||
|
||||
FT_DEFINE_SERVICE( GlyphDict )
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* FreeType API for validating TrueTypeGX/AAT tables (specification).
|
||||
*
|
||||
* Copyright (C) 2004-2019 by
|
||||
* Copyright (C) 2004-2023 by
|
||||
* Masatake YAMATO, Red Hat K.K.,
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
@@ -28,8 +28,8 @@
|
||||
#ifndef SVGXVAL_H_
|
||||
#define SVGXVAL_H_
|
||||
|
||||
#include FT_GX_VALIDATE_H
|
||||
#include FT_INTERNAL_VALIDATE_H
|
||||
#include <freetype/ftgxval.h>
|
||||
#include <freetype/internal/ftvalid.h>
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* The FreeType Kerning service (specification).
|
||||
*
|
||||
* Copyright (C) 2006-2019 by
|
||||
* Copyright (C) 2006-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
@@ -19,8 +19,8 @@
|
||||
#ifndef SVKERN_H_
|
||||
#define SVKERN_H_
|
||||
|
||||
#include FT_INTERNAL_SERVICE_H
|
||||
#include FT_TRUETYPE_TABLES_H
|
||||
#include <freetype/internal/ftserv.h>
|
||||
#include <freetype/tttables.h>
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* The FreeType services for metrics variations (specification).
|
||||
*
|
||||
* Copyright (C) 2016-2019 by
|
||||
* Copyright (C) 2016-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
@@ -19,7 +19,7 @@
|
||||
#ifndef SVMETRIC_H_
|
||||
#define SVMETRIC_H_
|
||||
|
||||
#include FT_INTERNAL_SERVICE_H
|
||||
#include <freetype/internal/ftserv.h>
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
@@ -77,6 +77,9 @@ FT_BEGIN_HEADER
|
||||
typedef void
|
||||
(*FT_Metrics_Adjust_Func)( FT_Face face );
|
||||
|
||||
typedef FT_Error
|
||||
(*FT_Size_Reset_Func)( FT_Size size );
|
||||
|
||||
|
||||
FT_DEFINE_SERVICE( MetricsVariations )
|
||||
{
|
||||
@@ -90,6 +93,7 @@ FT_BEGIN_HEADER
|
||||
FT_VOrg_Adjust_Func vorg_adjust;
|
||||
|
||||
FT_Metrics_Adjust_Func metrics_adjust;
|
||||
FT_Size_Reset_Func size_reset;
|
||||
};
|
||||
|
||||
|
||||
@@ -101,7 +105,8 @@ FT_BEGIN_HEADER
|
||||
tsb_adjust_, \
|
||||
bsb_adjust_, \
|
||||
vorg_adjust_, \
|
||||
metrics_adjust_ ) \
|
||||
metrics_adjust_, \
|
||||
size_reset_ ) \
|
||||
static const FT_Service_MetricsVariationsRec class_ = \
|
||||
{ \
|
||||
hadvance_adjust_, \
|
||||
@@ -111,7 +116,8 @@ FT_BEGIN_HEADER
|
||||
tsb_adjust_, \
|
||||
bsb_adjust_, \
|
||||
vorg_adjust_, \
|
||||
metrics_adjust_ \
|
||||
metrics_adjust_, \
|
||||
size_reset_ \
|
||||
};
|
||||
|
||||
/* */
|
||||
|
||||
160
Source/ThirdParty/freetype/internal/services/svmm.h
vendored
160
Source/ThirdParty/freetype/internal/services/svmm.h
vendored
@@ -4,8 +4,8 @@
|
||||
*
|
||||
* The FreeType Multiple Masters and GX var services (specification).
|
||||
*
|
||||
* Copyright (C) 2003-2019 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
* Copyright (C) 2003-2023 by
|
||||
* David Turner, Robert Wilhelm, Werner Lemberg, and Dominik Röttsches.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
* modified, and distributed under the terms of the FreeType project
|
||||
@@ -19,7 +19,9 @@
|
||||
#ifndef SVMM_H_
|
||||
#define SVMM_H_
|
||||
|
||||
#include FT_INTERNAL_SERVICE_H
|
||||
#include <freetype/ftmm.h>
|
||||
#include <freetype/internal/ftserv.h>
|
||||
#include <freetype/internal/ftmmtypes.h>
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
@@ -58,9 +60,9 @@ FT_BEGIN_HEADER
|
||||
/* use return value -1 to indicate that the new coordinates */
|
||||
/* are equal to the current ones; no changes are thus needed */
|
||||
typedef FT_Error
|
||||
(*FT_Set_MM_Blend_Func)( FT_Face face,
|
||||
FT_UInt num_coords,
|
||||
FT_Long* coords );
|
||||
(*FT_Set_MM_Blend_Func)( FT_Face face,
|
||||
FT_UInt num_coords,
|
||||
FT_Fixed* coords );
|
||||
|
||||
typedef FT_Error
|
||||
(*FT_Get_Var_Design_Func)( FT_Face face,
|
||||
@@ -68,13 +70,17 @@ FT_BEGIN_HEADER
|
||||
FT_Fixed* coords );
|
||||
|
||||
typedef FT_Error
|
||||
(*FT_Set_Instance_Func)( FT_Face face,
|
||||
FT_UInt instance_index );
|
||||
(*FT_Set_Named_Instance_Func)( FT_Face face,
|
||||
FT_UInt instance_index );
|
||||
|
||||
typedef FT_Error
|
||||
(*FT_Get_MM_Blend_Func)( FT_Face face,
|
||||
FT_UInt num_coords,
|
||||
FT_Long* coords );
|
||||
(*FT_Get_Default_Named_Instance_Func)( FT_Face face,
|
||||
FT_UInt *instance_index );
|
||||
|
||||
typedef FT_Error
|
||||
(*FT_Get_MM_Blend_Func)( FT_Face face,
|
||||
FT_UInt num_coords,
|
||||
FT_Fixed* coords );
|
||||
|
||||
typedef FT_Error
|
||||
(*FT_Get_Var_Blend_Func)( FT_Face face,
|
||||
@@ -84,7 +90,7 @@ FT_BEGIN_HEADER
|
||||
FT_MM_Var* *mm_var );
|
||||
|
||||
typedef void
|
||||
(*FT_Done_Blend_Func)( FT_Face );
|
||||
(*FT_Done_Blend_Func)( FT_Face face );
|
||||
|
||||
typedef FT_Error
|
||||
(*FT_Set_MM_WeightVector_Func)( FT_Face face,
|
||||
@@ -96,53 +102,105 @@ FT_BEGIN_HEADER
|
||||
FT_UInt* len,
|
||||
FT_Fixed* weight_vector );
|
||||
|
||||
typedef void
|
||||
(*FT_Construct_PS_Name_Func)( FT_Face face );
|
||||
|
||||
typedef FT_Error
|
||||
(*FT_Var_Load_Delta_Set_Idx_Map_Func)( FT_Face face,
|
||||
FT_ULong offset,
|
||||
GX_DeltaSetIdxMap map,
|
||||
GX_ItemVarStore itemStore,
|
||||
FT_ULong table_len );
|
||||
|
||||
typedef FT_Error
|
||||
(*FT_Var_Load_Item_Var_Store_Func)( FT_Face face,
|
||||
FT_ULong offset,
|
||||
GX_ItemVarStore itemStore );
|
||||
|
||||
typedef FT_ItemVarDelta
|
||||
(*FT_Var_Get_Item_Delta_Func)( FT_Face face,
|
||||
GX_ItemVarStore itemStore,
|
||||
FT_UInt outerIndex,
|
||||
FT_UInt innerIndex );
|
||||
|
||||
typedef void
|
||||
(*FT_Var_Done_Item_Var_Store_Func)( FT_Face face,
|
||||
GX_ItemVarStore itemStore );
|
||||
|
||||
typedef void
|
||||
(*FT_Var_Done_Delta_Set_Idx_Map_Func)( FT_Face face,
|
||||
GX_DeltaSetIdxMap deltaSetIdxMap );
|
||||
|
||||
|
||||
FT_DEFINE_SERVICE( MultiMasters )
|
||||
{
|
||||
FT_Get_MM_Func get_mm;
|
||||
FT_Set_MM_Design_Func set_mm_design;
|
||||
FT_Set_MM_Blend_Func set_mm_blend;
|
||||
FT_Get_MM_Blend_Func get_mm_blend;
|
||||
FT_Get_MM_Var_Func get_mm_var;
|
||||
FT_Set_Var_Design_Func set_var_design;
|
||||
FT_Get_Var_Design_Func get_var_design;
|
||||
FT_Set_Instance_Func set_instance;
|
||||
FT_Set_MM_WeightVector_Func set_mm_weightvector;
|
||||
FT_Get_MM_WeightVector_Func get_mm_weightvector;
|
||||
FT_Get_MM_Func get_mm;
|
||||
FT_Set_MM_Design_Func set_mm_design;
|
||||
FT_Set_MM_Blend_Func set_mm_blend;
|
||||
FT_Get_MM_Blend_Func get_mm_blend;
|
||||
FT_Get_MM_Var_Func get_mm_var;
|
||||
FT_Set_Var_Design_Func set_var_design;
|
||||
FT_Get_Var_Design_Func get_var_design;
|
||||
FT_Set_Named_Instance_Func set_named_instance;
|
||||
FT_Get_Default_Named_Instance_Func get_default_named_instance;
|
||||
FT_Set_MM_WeightVector_Func set_mm_weightvector;
|
||||
FT_Get_MM_WeightVector_Func get_mm_weightvector;
|
||||
|
||||
/* for internal use; only needed for code sharing between modules */
|
||||
FT_Get_Var_Blend_Func get_var_blend;
|
||||
FT_Done_Blend_Func done_blend;
|
||||
FT_Construct_PS_Name_Func construct_ps_name;
|
||||
FT_Var_Load_Delta_Set_Idx_Map_Func load_delta_set_idx_map;
|
||||
FT_Var_Load_Item_Var_Store_Func load_item_var_store;
|
||||
FT_Var_Get_Item_Delta_Func get_item_delta;
|
||||
FT_Var_Done_Item_Var_Store_Func done_item_var_store;
|
||||
FT_Var_Done_Delta_Set_Idx_Map_Func done_delta_set_idx_map;
|
||||
FT_Get_Var_Blend_Func get_var_blend;
|
||||
FT_Done_Blend_Func done_blend;
|
||||
};
|
||||
|
||||
|
||||
#define FT_DEFINE_SERVICE_MULTIMASTERSREC( class_, \
|
||||
get_mm_, \
|
||||
set_mm_design_, \
|
||||
set_mm_blend_, \
|
||||
get_mm_blend_, \
|
||||
get_mm_var_, \
|
||||
set_var_design_, \
|
||||
get_var_design_, \
|
||||
set_instance_, \
|
||||
set_weightvector_, \
|
||||
get_weightvector_, \
|
||||
get_var_blend_, \
|
||||
done_blend_ ) \
|
||||
static const FT_Service_MultiMastersRec class_ = \
|
||||
{ \
|
||||
get_mm_, \
|
||||
set_mm_design_, \
|
||||
set_mm_blend_, \
|
||||
get_mm_blend_, \
|
||||
get_mm_var_, \
|
||||
set_var_design_, \
|
||||
get_var_design_, \
|
||||
set_instance_, \
|
||||
set_weightvector_, \
|
||||
get_weightvector_, \
|
||||
get_var_blend_, \
|
||||
done_blend_ \
|
||||
#define FT_DEFINE_SERVICE_MULTIMASTERSREC( class_, \
|
||||
get_mm_, \
|
||||
set_mm_design_, \
|
||||
set_mm_blend_, \
|
||||
get_mm_blend_, \
|
||||
get_mm_var_, \
|
||||
set_var_design_, \
|
||||
get_var_design_, \
|
||||
set_named_instance_, \
|
||||
get_default_named_instance_, \
|
||||
set_mm_weightvector_, \
|
||||
get_mm_weightvector_, \
|
||||
\
|
||||
construct_ps_name_, \
|
||||
load_delta_set_idx_map_, \
|
||||
load_item_var_store_, \
|
||||
get_item_delta_, \
|
||||
done_item_var_store_, \
|
||||
done_delta_set_idx_map_, \
|
||||
get_var_blend_, \
|
||||
done_blend_ ) \
|
||||
static const FT_Service_MultiMastersRec class_ = \
|
||||
{ \
|
||||
get_mm_, \
|
||||
set_mm_design_, \
|
||||
set_mm_blend_, \
|
||||
get_mm_blend_, \
|
||||
get_mm_var_, \
|
||||
set_var_design_, \
|
||||
get_var_design_, \
|
||||
set_named_instance_, \
|
||||
get_default_named_instance_, \
|
||||
set_mm_weightvector_, \
|
||||
get_mm_weightvector_, \
|
||||
\
|
||||
construct_ps_name_, \
|
||||
load_delta_set_idx_map_, \
|
||||
load_item_var_store_, \
|
||||
get_item_delta_, \
|
||||
done_item_var_store_, \
|
||||
done_delta_set_idx_map_, \
|
||||
get_var_blend_, \
|
||||
done_blend_ \
|
||||
};
|
||||
|
||||
/* */
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* The FreeType OpenType validation service (specification).
|
||||
*
|
||||
* Copyright (C) 2004-2019 by
|
||||
* Copyright (C) 2004-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
@@ -19,8 +19,8 @@
|
||||
#ifndef SVOTVAL_H_
|
||||
#define SVOTVAL_H_
|
||||
|
||||
#include FT_OPENTYPE_VALIDATE_H
|
||||
#include FT_INTERNAL_VALIDATE_H
|
||||
#include <freetype/ftotval.h>
|
||||
#include <freetype/internal/ftvalid.h>
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* Internal PFR service functions (specification).
|
||||
*
|
||||
* Copyright (C) 2003-2019 by
|
||||
* Copyright (C) 2003-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
@@ -19,8 +19,8 @@
|
||||
#ifndef SVPFR_H_
|
||||
#define SVPFR_H_
|
||||
|
||||
#include FT_PFR_H
|
||||
#include FT_INTERNAL_SERVICE_H
|
||||
#include <freetype/ftpfr.h>
|
||||
#include <freetype/internal/ftserv.h>
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
@@ -56,7 +56,6 @@ FT_BEGIN_HEADER
|
||||
|
||||
};
|
||||
|
||||
/* */
|
||||
|
||||
FT_END_HEADER
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* The FreeType PostScript name services (specification).
|
||||
*
|
||||
* Copyright (C) 2003-2019 by
|
||||
* Copyright (C) 2003-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
@@ -19,7 +19,7 @@
|
||||
#ifndef SVPOSTNM_H_
|
||||
#define SVPOSTNM_H_
|
||||
|
||||
#include FT_INTERNAL_SERVICE_H
|
||||
#include <freetype/internal/ftserv.h>
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* The FreeType property service (specification).
|
||||
*
|
||||
* Copyright (C) 2012-2019 by
|
||||
* Copyright (C) 2012-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* The FreeType PostScript charmap service (specification).
|
||||
*
|
||||
* Copyright (C) 2003-2019 by
|
||||
* Copyright (C) 2003-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
@@ -19,7 +19,7 @@
|
||||
#ifndef SVPSCMAP_H_
|
||||
#define SVPSCMAP_H_
|
||||
|
||||
#include FT_INTERNAL_OBJECTS_H
|
||||
#include <freetype/internal/ftobjs.h>
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
@@ -97,7 +97,7 @@ FT_BEGIN_HEADER
|
||||
(*PS_Unicodes_CharIndexFunc)( PS_Unicodes unicodes,
|
||||
FT_UInt32 unicode );
|
||||
|
||||
typedef FT_UInt32
|
||||
typedef FT_UInt
|
||||
(*PS_Unicodes_CharNextFunc)( PS_Unicodes unicodes,
|
||||
FT_UInt32 *unicode );
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* The FreeType PostScript info service (specification).
|
||||
*
|
||||
* Copyright (C) 2003-2019 by
|
||||
* Copyright (C) 2003-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
@@ -19,8 +19,8 @@
|
||||
#ifndef SVPSINFO_H_
|
||||
#define SVPSINFO_H_
|
||||
|
||||
#include FT_INTERNAL_SERVICE_H
|
||||
#include FT_INTERNAL_TYPE1_TYPES_H
|
||||
#include <freetype/internal/ftserv.h>
|
||||
#include <freetype/internal/t1types.h>
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* The FreeType SFNT table loading service (specification).
|
||||
*
|
||||
* Copyright (C) 2003-2019 by
|
||||
* Copyright (C) 2003-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
@@ -19,8 +19,8 @@
|
||||
#ifndef SVSFNT_H_
|
||||
#define SVSFNT_H_
|
||||
|
||||
#include FT_INTERNAL_SERVICE_H
|
||||
#include FT_TRUETYPE_TABLES_H
|
||||
#include <freetype/internal/ftserv.h>
|
||||
#include <freetype/tttables.h>
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* The FreeType TrueType/sfnt cmap extra information service.
|
||||
*
|
||||
* Copyright (C) 2003-2019 by
|
||||
* Copyright (C) 2003-2023 by
|
||||
* Masatake YAMATO, Redhat K.K.,
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
@@ -22,8 +22,8 @@
|
||||
#ifndef SVTTCMAP_H_
|
||||
#define SVTTCMAP_H_
|
||||
|
||||
#include FT_INTERNAL_SERVICE_H
|
||||
#include FT_TRUETYPE_TABLES_H
|
||||
#include <freetype/internal/ftserv.h>
|
||||
#include <freetype/tttables.h>
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* The FreeType TrueType engine query service (specification).
|
||||
*
|
||||
* Copyright (C) 2006-2019 by
|
||||
* Copyright (C) 2006-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
@@ -19,8 +19,8 @@
|
||||
#ifndef SVTTENG_H_
|
||||
#define SVTTENG_H_
|
||||
|
||||
#include FT_INTERNAL_SERVICE_H
|
||||
#include FT_MODULE_H
|
||||
#include <freetype/internal/ftserv.h>
|
||||
#include <freetype/ftmodapi.h>
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* The FreeType TrueType glyph service.
|
||||
*
|
||||
* Copyright (C) 2007-2019 by
|
||||
* Copyright (C) 2007-2023 by
|
||||
* David Turner.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
@@ -18,8 +18,8 @@
|
||||
#ifndef SVTTGLYF_H_
|
||||
#define SVTTGLYF_H_
|
||||
|
||||
#include FT_INTERNAL_SERVICE_H
|
||||
#include FT_TRUETYPE_TABLES_H
|
||||
#include <freetype/internal/ftserv.h>
|
||||
#include <freetype/tttables.h>
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* The FreeType Windows FNT/FONT service (specification).
|
||||
*
|
||||
* Copyright (C) 2003-2019 by
|
||||
* Copyright (C) 2003-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
@@ -19,8 +19,8 @@
|
||||
#ifndef SVWINFNT_H_
|
||||
#define SVWINFNT_H_
|
||||
|
||||
#include FT_INTERNAL_SERVICE_H
|
||||
#include FT_WINFONTS_H
|
||||
#include <freetype/internal/ftserv.h>
|
||||
#include <freetype/ftwinfnt.h>
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
301
Source/ThirdParty/freetype/internal/sfnt.h
vendored
301
Source/ThirdParty/freetype/internal/sfnt.h
vendored
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* High-level 'sfnt' driver interface (specification).
|
||||
*
|
||||
* Copyright (C) 1996-2019 by
|
||||
* Copyright (C) 1996-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
@@ -20,9 +20,9 @@
|
||||
#define SFNT_H_
|
||||
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_INTERNAL_DRIVER_H
|
||||
#include FT_INTERNAL_TRUETYPE_TYPES_H
|
||||
#include <freetype/internal/ftdrv.h>
|
||||
#include <freetype/internal/tttypes.h>
|
||||
#include <freetype/internal/wofftypes.h>
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
@@ -311,6 +311,33 @@ FT_BEGIN_HEADER
|
||||
TT_SBit_MetricsRec *ametrics );
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @functype:
|
||||
* TT_Load_Svg_Doc_Func
|
||||
*
|
||||
* @description:
|
||||
* Scan the SVG document list to find the document containing the glyph
|
||||
* that has the ID 'glyph*XXX*', where *XXX* is the value of
|
||||
* `glyph_index` as a decimal integer.
|
||||
*
|
||||
* @inout:
|
||||
* glyph ::
|
||||
* The glyph slot from which pointers to the SVG document list is to be
|
||||
* grabbed. The results are stored back in the slot.
|
||||
*
|
||||
* @input:
|
||||
* glyph_index ::
|
||||
* The index of the glyph that is to be looked up.
|
||||
*
|
||||
* @return:
|
||||
* FreeType error code. 0 means success.
|
||||
*/
|
||||
typedef FT_Error
|
||||
(*TT_Load_Svg_Doc_Func)( FT_GlyphSlot glyph,
|
||||
FT_UInt glyph_index );
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @functype:
|
||||
@@ -524,6 +551,170 @@ FT_BEGIN_HEADER
|
||||
FT_LayerIterator* iterator );
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @functype:
|
||||
* TT_Get_Color_Glyph_Paint_Func
|
||||
*
|
||||
* @description:
|
||||
* Find the root @FT_OpaquePaint object for a given glyph ID.
|
||||
*
|
||||
* @input:
|
||||
* face ::
|
||||
* The target face object.
|
||||
*
|
||||
* base_glyph ::
|
||||
* The glyph index the colored glyph layers are associated with.
|
||||
*
|
||||
* @output:
|
||||
* paint ::
|
||||
* The root @FT_OpaquePaint object.
|
||||
*
|
||||
* @return:
|
||||
* Value~1 if everything is OK. If no color glyph is found, or the root
|
||||
* paint could not be retrieved, value~0 gets returned. In case of an
|
||||
* error, value~0 is returned also.
|
||||
*/
|
||||
typedef FT_Bool
|
||||
( *TT_Get_Color_Glyph_Paint_Func )( TT_Face face,
|
||||
FT_UInt base_glyph,
|
||||
FT_Color_Root_Transform root_transform,
|
||||
FT_OpaquePaint *paint );
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @functype:
|
||||
* TT_Get_Color_Glyph_ClipBox_Func
|
||||
*
|
||||
* @description:
|
||||
* Search for a 'COLR' v1 clip box for the specified `base_glyph` and
|
||||
* fill the `clip_box` parameter with the 'COLR' v1 'ClipBox' information
|
||||
* if one is found.
|
||||
*
|
||||
* @input:
|
||||
* face ::
|
||||
* A handle to the parent face object.
|
||||
*
|
||||
* base_glyph ::
|
||||
* The glyph index for which to retrieve the clip box.
|
||||
*
|
||||
* @output:
|
||||
* clip_box ::
|
||||
* The clip box for the requested `base_glyph` if one is found. The
|
||||
* clip box is computed taking scale and transformations configured on
|
||||
* the @FT_Face into account. @FT_ClipBox contains @FT_Vector values
|
||||
* in 26.6 format.
|
||||
*
|
||||
* @note:
|
||||
* To retrieve the clip box in font units, reset scale to units-per-em
|
||||
* and remove transforms configured using @FT_Set_Transform.
|
||||
*
|
||||
* @return:
|
||||
* Value~1 if a ClipBox is found. If no clip box is found or an
|
||||
* error occured, value~0 is returned.
|
||||
*/
|
||||
typedef FT_Bool
|
||||
( *TT_Get_Color_Glyph_ClipBox_Func )( TT_Face face,
|
||||
FT_UInt base_glyph,
|
||||
FT_ClipBox* clip_box );
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @functype:
|
||||
* TT_Get_Paint_Layers_Func
|
||||
*
|
||||
* @description:
|
||||
* Access the layers of a `PaintColrLayers` table.
|
||||
*
|
||||
* @input:
|
||||
* face ::
|
||||
* The target face object.
|
||||
*
|
||||
* @inout:
|
||||
* iterator ::
|
||||
* The @FT_LayerIterator from an @FT_PaintColrLayers object, for which
|
||||
* the layers are to be retrieved. The internal state of the iterator
|
||||
* is incremented after one call to this function for retrieving one
|
||||
* layer.
|
||||
*
|
||||
* @output:
|
||||
* paint ::
|
||||
* The root @FT_OpaquePaint object referencing the actual paint table.
|
||||
*
|
||||
* @return:
|
||||
* Value~1 if everything is OK. Value~0 gets returned when the paint
|
||||
* object can not be retrieved or any other error occurs.
|
||||
*/
|
||||
typedef FT_Bool
|
||||
( *TT_Get_Paint_Layers_Func )( TT_Face face,
|
||||
FT_LayerIterator* iterator,
|
||||
FT_OpaquePaint *paint );
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @functype:
|
||||
* TT_Get_Colorline_Stops_Func
|
||||
*
|
||||
* @description:
|
||||
* Get the gradient and solid fill information for a given glyph.
|
||||
*
|
||||
* @input:
|
||||
* face ::
|
||||
* The target face object.
|
||||
*
|
||||
* @inout:
|
||||
* iterator ::
|
||||
* An @FT_ColorStopIterator object. For the first call you should set
|
||||
* `iterator->p` to `NULL`. For all following calls, simply use the
|
||||
* same object again.
|
||||
*
|
||||
* @output:
|
||||
* color_stop ::
|
||||
* Color index and alpha value for the retrieved color stop.
|
||||
*
|
||||
* @return:
|
||||
* Value~1 if everything is OK. If there are no more color stops,
|
||||
* value~0 gets returned. In case of an error, value~0 is returned
|
||||
* also.
|
||||
*/
|
||||
typedef FT_Bool
|
||||
( *TT_Get_Colorline_Stops_Func )( TT_Face face,
|
||||
FT_ColorStop *color_stop,
|
||||
FT_ColorStopIterator* iterator );
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @functype:
|
||||
* TT_Get_Paint_Func
|
||||
*
|
||||
* @description:
|
||||
* Get the paint details for a given @FT_OpaquePaint object.
|
||||
*
|
||||
* @input:
|
||||
* face ::
|
||||
* The target face object.
|
||||
*
|
||||
* opaque_paint ::
|
||||
* The @FT_OpaquePaint object.
|
||||
*
|
||||
* @output:
|
||||
* paint ::
|
||||
* An @FT_COLR_Paint object holding the details on `opaque_paint`.
|
||||
*
|
||||
* @return:
|
||||
* Value~1 if everything is OK. Value~0 if no details can be found for
|
||||
* this paint or any other error occured.
|
||||
*/
|
||||
typedef FT_Bool
|
||||
( *TT_Get_Paint_Func )( TT_Face face,
|
||||
FT_OpaquePaint opaque_paint,
|
||||
FT_COLR_Paint *paint );
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @functype:
|
||||
@@ -709,73 +900,83 @@ FT_BEGIN_HEADER
|
||||
*/
|
||||
typedef struct SFNT_Interface_
|
||||
{
|
||||
TT_Loader_GotoTableFunc goto_table;
|
||||
TT_Loader_GotoTableFunc goto_table;
|
||||
|
||||
TT_Init_Face_Func init_face;
|
||||
TT_Load_Face_Func load_face;
|
||||
TT_Done_Face_Func done_face;
|
||||
FT_Module_Requester get_interface;
|
||||
TT_Init_Face_Func init_face;
|
||||
TT_Load_Face_Func load_face;
|
||||
TT_Done_Face_Func done_face;
|
||||
FT_Module_Requester get_interface;
|
||||
|
||||
TT_Load_Any_Func load_any;
|
||||
TT_Load_Any_Func load_any;
|
||||
|
||||
/* these functions are called by `load_face' but they can also */
|
||||
/* be called from external modules, if there is a need to do so */
|
||||
TT_Load_Table_Func load_head;
|
||||
TT_Load_Metrics_Func load_hhea;
|
||||
TT_Load_Table_Func load_cmap;
|
||||
TT_Load_Table_Func load_maxp;
|
||||
TT_Load_Table_Func load_os2;
|
||||
TT_Load_Table_Func load_post;
|
||||
TT_Load_Table_Func load_head;
|
||||
TT_Load_Metrics_Func load_hhea;
|
||||
TT_Load_Table_Func load_cmap;
|
||||
TT_Load_Table_Func load_maxp;
|
||||
TT_Load_Table_Func load_os2;
|
||||
TT_Load_Table_Func load_post;
|
||||
|
||||
TT_Load_Table_Func load_name;
|
||||
TT_Free_Table_Func free_name;
|
||||
TT_Load_Table_Func load_name;
|
||||
TT_Free_Table_Func free_name;
|
||||
|
||||
/* this field was called `load_kerning' up to version 2.1.10 */
|
||||
TT_Load_Table_Func load_kern;
|
||||
TT_Load_Table_Func load_kern;
|
||||
|
||||
TT_Load_Table_Func load_gasp;
|
||||
TT_Load_Table_Func load_pclt;
|
||||
TT_Load_Table_Func load_gasp;
|
||||
TT_Load_Table_Func load_pclt;
|
||||
|
||||
/* see `ttload.h'; this field was called `load_bitmap_header' up to */
|
||||
/* version 2.1.10 */
|
||||
TT_Load_Table_Func load_bhed;
|
||||
TT_Load_Table_Func load_bhed;
|
||||
|
||||
TT_Load_SBit_Image_Func load_sbit_image;
|
||||
TT_Load_SBit_Image_Func load_sbit_image;
|
||||
|
||||
/* see `ttpost.h' */
|
||||
TT_Get_PS_Name_Func get_psname;
|
||||
TT_Free_Table_Func free_psnames;
|
||||
TT_Get_PS_Name_Func get_psname;
|
||||
TT_Free_Table_Func free_psnames;
|
||||
|
||||
/* starting here, the structure differs from version 2.1.7 */
|
||||
|
||||
/* this field was introduced in version 2.1.8, named `get_psname' */
|
||||
TT_Face_GetKerningFunc get_kerning;
|
||||
TT_Face_GetKerningFunc get_kerning;
|
||||
|
||||
/* new elements introduced after version 2.1.10 */
|
||||
|
||||
/* load the font directory, i.e., the offset table and */
|
||||
/* the table directory */
|
||||
TT_Load_Table_Func load_font_dir;
|
||||
TT_Load_Metrics_Func load_hmtx;
|
||||
TT_Load_Table_Func load_font_dir;
|
||||
TT_Load_Metrics_Func load_hmtx;
|
||||
|
||||
TT_Load_Table_Func load_eblc;
|
||||
TT_Free_Table_Func free_eblc;
|
||||
TT_Load_Table_Func load_eblc;
|
||||
TT_Free_Table_Func free_eblc;
|
||||
|
||||
TT_Set_SBit_Strike_Func set_sbit_strike;
|
||||
TT_Load_Strike_Metrics_Func load_strike_metrics;
|
||||
|
||||
TT_Load_Table_Func load_cpal;
|
||||
TT_Load_Table_Func load_colr;
|
||||
TT_Free_Table_Func free_cpal;
|
||||
TT_Free_Table_Func free_colr;
|
||||
TT_Set_Palette_Func set_palette;
|
||||
TT_Get_Colr_Layer_Func get_colr_layer;
|
||||
TT_Blend_Colr_Func colr_blend;
|
||||
TT_Load_Table_Func load_cpal;
|
||||
TT_Load_Table_Func load_colr;
|
||||
TT_Free_Table_Func free_cpal;
|
||||
TT_Free_Table_Func free_colr;
|
||||
TT_Set_Palette_Func set_palette;
|
||||
TT_Get_Colr_Layer_Func get_colr_layer;
|
||||
TT_Get_Color_Glyph_Paint_Func get_colr_glyph_paint;
|
||||
TT_Get_Color_Glyph_ClipBox_Func get_color_glyph_clipbox;
|
||||
TT_Get_Paint_Layers_Func get_paint_layers;
|
||||
TT_Get_Colorline_Stops_Func get_colorline_stops;
|
||||
TT_Get_Paint_Func get_paint;
|
||||
TT_Blend_Colr_Func colr_blend;
|
||||
|
||||
TT_Get_Metrics_Func get_metrics;
|
||||
TT_Get_Metrics_Func get_metrics;
|
||||
|
||||
TT_Get_Name_Func get_name;
|
||||
TT_Get_Name_ID_Func get_name_id;
|
||||
TT_Get_Name_Func get_name;
|
||||
TT_Get_Name_ID_Func get_name_id;
|
||||
|
||||
/* OpenType SVG Support */
|
||||
TT_Load_Table_Func load_svg;
|
||||
TT_Free_Table_Func free_svg;
|
||||
TT_Load_Svg_Doc_Func load_svg_doc;
|
||||
|
||||
} SFNT_Interface;
|
||||
|
||||
@@ -820,10 +1021,18 @@ FT_BEGIN_HEADER
|
||||
free_colr_, \
|
||||
set_palette_, \
|
||||
get_colr_layer_, \
|
||||
get_colr_glyph_paint_, \
|
||||
get_color_glyph_clipbox, \
|
||||
get_paint_layers_, \
|
||||
get_colorline_stops_, \
|
||||
get_paint_, \
|
||||
colr_blend_, \
|
||||
get_metrics_, \
|
||||
get_name_, \
|
||||
get_name_id_ ) \
|
||||
get_name_id_, \
|
||||
load_svg_, \
|
||||
free_svg_, \
|
||||
load_svg_doc_ ) \
|
||||
static const SFNT_Interface class_ = \
|
||||
{ \
|
||||
goto_table_, \
|
||||
@@ -860,10 +1069,18 @@ FT_BEGIN_HEADER
|
||||
free_colr_, \
|
||||
set_palette_, \
|
||||
get_colr_layer_, \
|
||||
get_colr_glyph_paint_, \
|
||||
get_color_glyph_clipbox, \
|
||||
get_paint_layers_, \
|
||||
get_colorline_stops_, \
|
||||
get_paint_, \
|
||||
colr_blend_, \
|
||||
get_metrics_, \
|
||||
get_name_, \
|
||||
get_name_id_ \
|
||||
get_name_id_, \
|
||||
load_svg_, \
|
||||
free_svg_, \
|
||||
load_svg_doc_ \
|
||||
};
|
||||
|
||||
|
||||
|
||||
46
Source/ThirdParty/freetype/internal/svginterface.h
vendored
Normal file
46
Source/ThirdParty/freetype/internal/svginterface.h
vendored
Normal file
@@ -0,0 +1,46 @@
|
||||
/****************************************************************************
|
||||
*
|
||||
* svginterface.h
|
||||
*
|
||||
* Interface of ot-svg module (specification only).
|
||||
*
|
||||
* Copyright (C) 2022-2023 by
|
||||
* David Turner, Robert Wilhelm, Werner Lemberg, and Moazin Khatti.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
* modified, and distributed under the terms of the FreeType project
|
||||
* license, LICENSE.TXT. By continuing to use, modify, or distribute
|
||||
* this file you indicate that you have read the license and
|
||||
* understand and accept it fully.
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#ifndef SVGINTERFACE_H_
|
||||
#define SVGINTERFACE_H_
|
||||
|
||||
#include <ft2build.h>
|
||||
#include <freetype/otsvg.h>
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
typedef FT_Error
|
||||
(*Preset_Bitmap_Func)( FT_Module module,
|
||||
FT_GlyphSlot slot,
|
||||
FT_Bool cache );
|
||||
|
||||
typedef struct SVG_Interface_
|
||||
{
|
||||
Preset_Bitmap_Func preset_slot;
|
||||
|
||||
} SVG_Interface;
|
||||
|
||||
typedef SVG_Interface* SVG_Service;
|
||||
|
||||
FT_END_HEADER
|
||||
|
||||
#endif /* SVGINTERFACE_H_ */
|
||||
|
||||
|
||||
/* END */
|
||||
47
Source/ThirdParty/freetype/internal/t1types.h
vendored
47
Source/ThirdParty/freetype/internal/t1types.h
vendored
@@ -5,7 +5,7 @@
|
||||
* Basic Type1/Type2 type definitions and interface (specification
|
||||
* only).
|
||||
*
|
||||
* Copyright (C) 1996-2019 by
|
||||
* Copyright (C) 1996-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
@@ -21,12 +21,11 @@
|
||||
#define T1TYPES_H_
|
||||
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_TYPE1_TABLES_H
|
||||
#include FT_INTERNAL_POSTSCRIPT_HINTS_H
|
||||
#include FT_INTERNAL_SERVICE_H
|
||||
#include FT_INTERNAL_HASH_H
|
||||
#include FT_SERVICE_POSTSCRIPT_CMAPS_H
|
||||
#include <freetype/t1tables.h>
|
||||
#include <freetype/internal/pshints.h>
|
||||
#include <freetype/internal/ftserv.h>
|
||||
#include <freetype/internal/fthash.h>
|
||||
#include <freetype/internal/services/svpscmap.h>
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
@@ -76,8 +75,8 @@ FT_BEGIN_HEADER
|
||||
FT_Int code_first;
|
||||
FT_Int code_last;
|
||||
|
||||
FT_UShort* char_index;
|
||||
FT_String** char_name;
|
||||
FT_UShort* char_index;
|
||||
const FT_String** char_name;
|
||||
|
||||
} T1_EncodingRec, *T1_Encoding;
|
||||
|
||||
@@ -173,8 +172,8 @@ FT_BEGIN_HEADER
|
||||
{
|
||||
FT_Bool IsCIDFont;
|
||||
FT_BBox FontBBox;
|
||||
FT_Fixed Ascender;
|
||||
FT_Fixed Descender;
|
||||
FT_Fixed Ascender; /* optional, mind the zero */
|
||||
FT_Fixed Descender; /* optional, mind the zero */
|
||||
AFM_TrackKern TrackKerns; /* free if non-NULL */
|
||||
FT_UInt NumTrackKern;
|
||||
AFM_KernPair KernPairs; /* free if non-NULL */
|
||||
@@ -202,30 +201,30 @@ FT_BEGIN_HEADER
|
||||
|
||||
typedef struct T1_FaceRec_
|
||||
{
|
||||
FT_FaceRec root;
|
||||
T1_FontRec type1;
|
||||
const void* psnames;
|
||||
const void* psaux;
|
||||
const void* afm_data;
|
||||
FT_CharMapRec charmaprecs[2];
|
||||
FT_CharMap charmaps[2];
|
||||
FT_FaceRec root;
|
||||
T1_FontRec type1;
|
||||
const void* psnames;
|
||||
const void* psaux;
|
||||
const void* afm_data;
|
||||
FT_CharMapRec charmaprecs[2];
|
||||
FT_CharMap charmaps[2];
|
||||
|
||||
/* support for Multiple Masters fonts */
|
||||
PS_Blend blend;
|
||||
PS_Blend blend;
|
||||
|
||||
/* undocumented, optional: indices of subroutines that express */
|
||||
/* the NormalizeDesignVector and the ConvertDesignVector procedure, */
|
||||
/* respectively, as Type 2 charstrings; -1 if keywords not present */
|
||||
FT_Int ndv_idx;
|
||||
FT_Int cdv_idx;
|
||||
FT_Int ndv_idx;
|
||||
FT_Int cdv_idx;
|
||||
|
||||
/* undocumented, optional: has the same meaning as len_buildchar */
|
||||
/* for Type 2 fonts; manipulated by othersubrs 19, 24, and 25 */
|
||||
FT_UInt len_buildchar;
|
||||
FT_Long* buildchar;
|
||||
FT_UInt len_buildchar;
|
||||
FT_Long* buildchar;
|
||||
|
||||
/* since version 2.1 - interface to PostScript hinter */
|
||||
const void* pshinter;
|
||||
const void* pshinter;
|
||||
|
||||
} T1_FaceRec;
|
||||
|
||||
|
||||
249
Source/ThirdParty/freetype/internal/tttypes.h
vendored
249
Source/ThirdParty/freetype/internal/tttypes.h
vendored
@@ -5,7 +5,7 @@
|
||||
* Basic SFNT/TrueType type definitions and interface (specification
|
||||
* only).
|
||||
*
|
||||
* Copyright (C) 1996-2019 by
|
||||
* Copyright (C) 1996-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
@@ -21,13 +21,12 @@
|
||||
#define TTTYPES_H_
|
||||
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_TRUETYPE_TABLES_H
|
||||
#include FT_INTERNAL_OBJECTS_H
|
||||
#include FT_COLOR_H
|
||||
#include <freetype/tttables.h>
|
||||
#include <freetype/internal/ftobjs.h>
|
||||
#include <freetype/ftcolor.h>
|
||||
|
||||
#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
|
||||
#include FT_MULTIPLE_MASTERS_H
|
||||
#include <freetype/ftmm.h>
|
||||
#endif
|
||||
|
||||
|
||||
@@ -150,81 +149,6 @@ FT_BEGIN_HEADER
|
||||
} TT_TableRec, *TT_Table;
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @struct:
|
||||
* WOFF_HeaderRec
|
||||
*
|
||||
* @description:
|
||||
* WOFF file format header.
|
||||
*
|
||||
* @fields:
|
||||
* See
|
||||
*
|
||||
* https://www.w3.org/TR/WOFF/#WOFFHeader
|
||||
*/
|
||||
typedef struct WOFF_HeaderRec_
|
||||
{
|
||||
FT_ULong signature;
|
||||
FT_ULong flavor;
|
||||
FT_ULong length;
|
||||
FT_UShort num_tables;
|
||||
FT_UShort reserved;
|
||||
FT_ULong totalSfntSize;
|
||||
FT_UShort majorVersion;
|
||||
FT_UShort minorVersion;
|
||||
FT_ULong metaOffset;
|
||||
FT_ULong metaLength;
|
||||
FT_ULong metaOrigLength;
|
||||
FT_ULong privOffset;
|
||||
FT_ULong privLength;
|
||||
|
||||
} WOFF_HeaderRec, *WOFF_Header;
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @struct:
|
||||
* WOFF_TableRec
|
||||
*
|
||||
* @description:
|
||||
* This structure describes a given table of a WOFF font.
|
||||
*
|
||||
* @fields:
|
||||
* Tag ::
|
||||
* A four-bytes tag describing the table.
|
||||
*
|
||||
* Offset ::
|
||||
* The offset of the table from the start of the WOFF font in its
|
||||
* resource.
|
||||
*
|
||||
* CompLength ::
|
||||
* Compressed table length (in bytes).
|
||||
*
|
||||
* OrigLength ::
|
||||
* Uncompressed table length (in bytes).
|
||||
*
|
||||
* CheckSum ::
|
||||
* The table checksum. This value can be ignored.
|
||||
*
|
||||
* OrigOffset ::
|
||||
* The uncompressed table file offset. This value gets computed while
|
||||
* constructing the (uncompressed) SFNT header. It is not contained in
|
||||
* the WOFF file.
|
||||
*/
|
||||
typedef struct WOFF_TableRec_
|
||||
{
|
||||
FT_ULong Tag; /* table ID */
|
||||
FT_ULong Offset; /* table file offset */
|
||||
FT_ULong CompLength; /* compressed table length */
|
||||
FT_ULong OrigLength; /* uncompressed table length */
|
||||
FT_ULong CheckSum; /* uncompressed checksum */
|
||||
|
||||
FT_ULong OrigOffset; /* uncompressed table file offset */
|
||||
/* (not in the WOFF file) */
|
||||
} WOFF_TableRec, *WOFF_Table;
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @struct:
|
||||
@@ -855,13 +779,15 @@ FT_BEGIN_HEADER
|
||||
/**************************************************************************
|
||||
*
|
||||
* @struct:
|
||||
* TT_Post_20Rec
|
||||
* TT_Post_NamesRec
|
||||
*
|
||||
* @description:
|
||||
* Postscript names sub-table, format 2.0. Stores the PS name of each
|
||||
* glyph in the font face.
|
||||
* Postscript names table, either format 2.0 or 2.5.
|
||||
*
|
||||
* @fields:
|
||||
* loaded ::
|
||||
* A flag to indicate whether the PS names are loaded.
|
||||
*
|
||||
* num_glyphs ::
|
||||
* The number of named glyphs in the table.
|
||||
*
|
||||
@@ -874,68 +800,13 @@ FT_BEGIN_HEADER
|
||||
* glyph_names ::
|
||||
* The PS names not in Mac Encoding.
|
||||
*/
|
||||
typedef struct TT_Post_20Rec_
|
||||
typedef struct TT_Post_NamesRec_
|
||||
{
|
||||
FT_Bool loaded;
|
||||
FT_UShort num_glyphs;
|
||||
FT_UShort num_names;
|
||||
FT_UShort* glyph_indices;
|
||||
FT_Char** glyph_names;
|
||||
|
||||
} TT_Post_20Rec, *TT_Post_20;
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @struct:
|
||||
* TT_Post_25Rec
|
||||
*
|
||||
* @description:
|
||||
* Postscript names sub-table, format 2.5. Stores the PS name of each
|
||||
* glyph in the font face.
|
||||
*
|
||||
* @fields:
|
||||
* num_glyphs ::
|
||||
* The number of glyphs in the table.
|
||||
*
|
||||
* offsets ::
|
||||
* An array of signed offsets in a normal Mac Postscript name encoding.
|
||||
*/
|
||||
typedef struct TT_Post_25_
|
||||
{
|
||||
FT_UShort num_glyphs;
|
||||
FT_Char* offsets;
|
||||
|
||||
} TT_Post_25Rec, *TT_Post_25;
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @struct:
|
||||
* TT_Post_NamesRec
|
||||
*
|
||||
* @description:
|
||||
* Postscript names table, either format 2.0 or 2.5.
|
||||
*
|
||||
* @fields:
|
||||
* loaded ::
|
||||
* A flag to indicate whether the PS names are loaded.
|
||||
*
|
||||
* format_20 ::
|
||||
* The sub-table used for format 2.0.
|
||||
*
|
||||
* format_25 ::
|
||||
* The sub-table used for format 2.5.
|
||||
*/
|
||||
typedef struct TT_Post_NamesRec_
|
||||
{
|
||||
FT_Bool loaded;
|
||||
|
||||
union
|
||||
{
|
||||
TT_Post_20Rec format_20;
|
||||
TT_Post_25Rec format_25;
|
||||
|
||||
} names;
|
||||
FT_Byte** glyph_names;
|
||||
|
||||
} TT_Post_NamesRec, *TT_Post_Names;
|
||||
|
||||
@@ -1329,12 +1200,16 @@ FT_BEGIN_HEADER
|
||||
* mm ::
|
||||
* A pointer to the Multiple Masters service.
|
||||
*
|
||||
* var ::
|
||||
* A pointer to the Metrics Variations service.
|
||||
* tt_var ::
|
||||
* A pointer to the Metrics Variations service for the "truetype"
|
||||
* driver.
|
||||
*
|
||||
* hdmx ::
|
||||
* The face's horizontal device metrics ('hdmx' table). This table is
|
||||
* optional in TrueType/OpenType fonts.
|
||||
* face_var ::
|
||||
* A pointer to the Metrics Variations service for this `TT_Face`'s
|
||||
* driver.
|
||||
*
|
||||
* psaux ::
|
||||
* A pointer to the PostScript Auxiliary service.
|
||||
*
|
||||
* gasp ::
|
||||
* The grid-fitting and scaling properties table ('gasp'). This table
|
||||
@@ -1395,8 +1270,10 @@ FT_BEGIN_HEADER
|
||||
*
|
||||
* cvt ::
|
||||
* The face's original control value table. Coordinates are expressed
|
||||
* in unscaled font units. Comes from the 'cvt~' table. Ignored for
|
||||
* Type 2 fonts.
|
||||
* in unscaled font units (in 26.6 format). Comes from the 'cvt~'
|
||||
* table. Ignored for Type 2 fonts.
|
||||
*
|
||||
* If varied by the `CVAR' table, non-integer values are possible.
|
||||
*
|
||||
* interpreter ::
|
||||
* A pointer to the TrueType bytecode interpreters field is also used
|
||||
@@ -1438,6 +1315,12 @@ FT_BEGIN_HEADER
|
||||
* var_postscript_prefix_len ::
|
||||
* The length of the `var_postscript_prefix` string.
|
||||
*
|
||||
* var_default_named_instance ::
|
||||
* The index of the default named instance.
|
||||
*
|
||||
* non_var_style_name ::
|
||||
* The non-variation style name, used as a backup.
|
||||
*
|
||||
* horz_metrics_size ::
|
||||
* The size of the 'hmtx' table.
|
||||
*
|
||||
@@ -1446,7 +1329,7 @@ FT_BEGIN_HEADER
|
||||
*
|
||||
* num_locations ::
|
||||
* The number of glyph locations in this TrueType file. This should be
|
||||
* identical to the number of glyphs. Ignored for Type 2 fonts.
|
||||
* one more than the number of glyphs. Ignored for Type 2 fonts.
|
||||
*
|
||||
* glyph_locations ::
|
||||
* An array of longs. These are offsets to glyph data within the
|
||||
@@ -1464,8 +1347,8 @@ FT_BEGIN_HEADER
|
||||
* hdmx_record_size ::
|
||||
* The size of a single hdmx record.
|
||||
*
|
||||
* hdmx_record_sizes ::
|
||||
* An array holding the ppem sizes available in the 'hdmx' table.
|
||||
* hdmx_records ::
|
||||
* A array of pointers to the 'hdmx' table records sorted by ppem.
|
||||
*
|
||||
* sbit_table ::
|
||||
* A pointer to the font's embedded bitmap location table.
|
||||
@@ -1484,14 +1367,6 @@ FT_BEGIN_HEADER
|
||||
* A mapping between the strike indices exposed by the API and the
|
||||
* indices used in the font's sbit table.
|
||||
*
|
||||
* cpal ::
|
||||
* A pointer to data related to the 'CPAL' table. `NULL` if the table
|
||||
* is not available.
|
||||
*
|
||||
* colr ::
|
||||
* A pointer to data related to the 'COLR' table. `NULL` if the table
|
||||
* is not available.
|
||||
*
|
||||
* kern_table ::
|
||||
* A pointer to the 'kern' table.
|
||||
*
|
||||
@@ -1519,19 +1394,23 @@ FT_BEGIN_HEADER
|
||||
* vert_metrics_offset ::
|
||||
* The file offset of the 'vmtx' table.
|
||||
*
|
||||
* sph_found_func_flags ::
|
||||
* Flags identifying special bytecode functions (used by the v38
|
||||
* implementation of the bytecode interpreter).
|
||||
*
|
||||
* sph_compatibility_mode ::
|
||||
* This flag is set if we are in ClearType backward compatibility mode
|
||||
* (used by the v38 implementation of the bytecode interpreter).
|
||||
*
|
||||
* ebdt_start ::
|
||||
* The file offset of the sbit data table (CBDT, bdat, etc.).
|
||||
*
|
||||
* ebdt_size ::
|
||||
* The size of the sbit data table.
|
||||
*
|
||||
* cpal ::
|
||||
* A pointer to data related to the 'CPAL' table. `NULL` if the table
|
||||
* is not available.
|
||||
*
|
||||
* colr ::
|
||||
* A pointer to data related to the 'COLR' table. `NULL` if the table
|
||||
* is not available.
|
||||
*
|
||||
* svg ::
|
||||
* A pointer to data related to the 'SVG' table. `NULL` if the table
|
||||
* is not available.
|
||||
*/
|
||||
typedef struct TT_FaceRec_
|
||||
{
|
||||
@@ -1582,8 +1461,14 @@ FT_BEGIN_HEADER
|
||||
void* mm;
|
||||
|
||||
/* a typeless pointer to the FT_Service_MetricsVariationsRec table */
|
||||
/* used to handle the HVAR, VVAR, and MVAR OpenType tables */
|
||||
void* var;
|
||||
/* used to handle the HVAR, VVAR, and MVAR OpenType tables by the */
|
||||
/* "truetype" driver */
|
||||
void* tt_var;
|
||||
|
||||
/* a typeless pointer to the FT_Service_MetricsVariationsRec table */
|
||||
/* used to handle the HVAR, VVAR, and MVAR OpenType tables by this */
|
||||
/* TT_Face's driver */
|
||||
void* face_var; /* since 2.13.1 */
|
||||
#endif
|
||||
|
||||
/* a typeless pointer to the PostScript Aux service */
|
||||
@@ -1633,7 +1518,7 @@ FT_BEGIN_HEADER
|
||||
|
||||
/* the original, unscaled, control value table */
|
||||
FT_ULong cvt_size;
|
||||
FT_Short* cvt;
|
||||
FT_Int32* cvt;
|
||||
|
||||
/* A pointer to the bytecode interpreter to use. This is also */
|
||||
/* used to hook the debugger for the `ttdebug' utility. */
|
||||
@@ -1665,6 +1550,9 @@ FT_BEGIN_HEADER
|
||||
const char* var_postscript_prefix; /* since 2.7.2 */
|
||||
FT_UInt var_postscript_prefix_len; /* since 2.7.2 */
|
||||
|
||||
FT_UInt var_default_named_instance; /* since 2.13.1 */
|
||||
|
||||
const char* non_var_style_name; /* since 2.13.1 */
|
||||
#endif
|
||||
|
||||
/* since version 2.2 */
|
||||
@@ -1672,14 +1560,14 @@ FT_BEGIN_HEADER
|
||||
FT_ULong horz_metrics_size;
|
||||
FT_ULong vert_metrics_size;
|
||||
|
||||
FT_ULong num_locations; /* in broken TTF, gid > 0xFFFF */
|
||||
FT_ULong num_locations; /* up to 0xFFFF + 1 */
|
||||
FT_Byte* glyph_locations;
|
||||
|
||||
FT_Byte* hdmx_table;
|
||||
FT_ULong hdmx_table_size;
|
||||
FT_UInt hdmx_record_count;
|
||||
FT_ULong hdmx_record_size;
|
||||
FT_Byte* hdmx_record_sizes;
|
||||
FT_Byte** hdmx_records;
|
||||
|
||||
FT_Byte* sbit_table;
|
||||
FT_ULong sbit_table_size;
|
||||
@@ -1701,13 +1589,6 @@ FT_BEGIN_HEADER
|
||||
FT_ULong horz_metrics_offset;
|
||||
FT_ULong vert_metrics_offset;
|
||||
|
||||
#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
|
||||
/* since 2.4.12 */
|
||||
FT_ULong sph_found_func_flags; /* special functions found */
|
||||
/* for this face */
|
||||
FT_Bool sph_compatibility_mode;
|
||||
#endif /* TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY */
|
||||
|
||||
#ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS
|
||||
/* since 2.7 */
|
||||
FT_ULong ebdt_start; /* either `CBDT', `EBDT', or `bdat' */
|
||||
@@ -1718,6 +1599,9 @@ FT_BEGIN_HEADER
|
||||
void* cpal;
|
||||
void* colr;
|
||||
|
||||
/* since 2.12 */
|
||||
void* svg;
|
||||
|
||||
} TT_FaceRec;
|
||||
|
||||
|
||||
@@ -1808,7 +1692,7 @@ FT_BEGIN_HEADER
|
||||
FT_UInt glyph_index;
|
||||
|
||||
FT_Stream stream;
|
||||
FT_Int byte_len;
|
||||
FT_UInt byte_len;
|
||||
|
||||
FT_Short n_contours;
|
||||
FT_BBox bbox;
|
||||
@@ -1843,6 +1727,9 @@ FT_BEGIN_HEADER
|
||||
/* since version 2.6.2 */
|
||||
FT_ListRec composites;
|
||||
|
||||
/* since version 2.11.2 */
|
||||
FT_Byte* widthp;
|
||||
|
||||
} TT_LoaderRec;
|
||||
|
||||
|
||||
|
||||
312
Source/ThirdParty/freetype/internal/wofftypes.h
vendored
Normal file
312
Source/ThirdParty/freetype/internal/wofftypes.h
vendored
Normal file
@@ -0,0 +1,312 @@
|
||||
/****************************************************************************
|
||||
*
|
||||
* wofftypes.h
|
||||
*
|
||||
* Basic WOFF/WOFF2 type definitions and interface (specification
|
||||
* only).
|
||||
*
|
||||
* Copyright (C) 1996-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
* modified, and distributed under the terms of the FreeType project
|
||||
* license, LICENSE.TXT. By continuing to use, modify, or distribute
|
||||
* this file you indicate that you have read the license and
|
||||
* understand and accept it fully.
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#ifndef WOFFTYPES_H_
|
||||
#define WOFFTYPES_H_
|
||||
|
||||
|
||||
#include <freetype/tttables.h>
|
||||
#include <freetype/internal/ftobjs.h>
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @struct:
|
||||
* WOFF_HeaderRec
|
||||
*
|
||||
* @description:
|
||||
* WOFF file format header.
|
||||
*
|
||||
* @fields:
|
||||
* See
|
||||
*
|
||||
* https://www.w3.org/TR/WOFF/#WOFFHeader
|
||||
*/
|
||||
typedef struct WOFF_HeaderRec_
|
||||
{
|
||||
FT_ULong signature;
|
||||
FT_ULong flavor;
|
||||
FT_ULong length;
|
||||
FT_UShort num_tables;
|
||||
FT_UShort reserved;
|
||||
FT_ULong totalSfntSize;
|
||||
FT_UShort majorVersion;
|
||||
FT_UShort minorVersion;
|
||||
FT_ULong metaOffset;
|
||||
FT_ULong metaLength;
|
||||
FT_ULong metaOrigLength;
|
||||
FT_ULong privOffset;
|
||||
FT_ULong privLength;
|
||||
|
||||
} WOFF_HeaderRec, *WOFF_Header;
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @struct:
|
||||
* WOFF_TableRec
|
||||
*
|
||||
* @description:
|
||||
* This structure describes a given table of a WOFF font.
|
||||
*
|
||||
* @fields:
|
||||
* Tag ::
|
||||
* A four-bytes tag describing the table.
|
||||
*
|
||||
* Offset ::
|
||||
* The offset of the table from the start of the WOFF font in its
|
||||
* resource.
|
||||
*
|
||||
* CompLength ::
|
||||
* Compressed table length (in bytes).
|
||||
*
|
||||
* OrigLength ::
|
||||
* Uncompressed table length (in bytes).
|
||||
*
|
||||
* CheckSum ::
|
||||
* The table checksum. This value can be ignored.
|
||||
*
|
||||
* OrigOffset ::
|
||||
* The uncompressed table file offset. This value gets computed while
|
||||
* constructing the (uncompressed) SFNT header. It is not contained in
|
||||
* the WOFF file.
|
||||
*/
|
||||
typedef struct WOFF_TableRec_
|
||||
{
|
||||
FT_Tag Tag; /* table ID */
|
||||
FT_ULong Offset; /* table file offset */
|
||||
FT_ULong CompLength; /* compressed table length */
|
||||
FT_ULong OrigLength; /* uncompressed table length */
|
||||
FT_ULong CheckSum; /* uncompressed checksum */
|
||||
|
||||
FT_ULong OrigOffset; /* uncompressed table file offset */
|
||||
/* (not in the WOFF file) */
|
||||
} WOFF_TableRec, *WOFF_Table;
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @struct:
|
||||
* WOFF2_TtcFontRec
|
||||
*
|
||||
* @description:
|
||||
* Metadata for a TTC font entry in WOFF2.
|
||||
*
|
||||
* @fields:
|
||||
* flavor ::
|
||||
* TTC font flavor.
|
||||
*
|
||||
* num_tables ::
|
||||
* Number of tables in TTC, indicating number of elements in
|
||||
* `table_indices`.
|
||||
*
|
||||
* table_indices ::
|
||||
* Array of table indices for each TTC font.
|
||||
*/
|
||||
typedef struct WOFF2_TtcFontRec_
|
||||
{
|
||||
FT_ULong flavor;
|
||||
FT_UShort num_tables;
|
||||
FT_UShort* table_indices;
|
||||
|
||||
} WOFF2_TtcFontRec, *WOFF2_TtcFont;
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @struct:
|
||||
* WOFF2_HeaderRec
|
||||
*
|
||||
* @description:
|
||||
* WOFF2 file format header.
|
||||
*
|
||||
* @fields:
|
||||
* See
|
||||
*
|
||||
* https://www.w3.org/TR/WOFF2/#woff20Header
|
||||
*
|
||||
* @note:
|
||||
* We don't care about the fields `reserved`, `majorVersion` and
|
||||
* `minorVersion`, so they are not included. The `totalSfntSize` field
|
||||
* does not necessarily represent the actual size of the uncompressed
|
||||
* SFNT font stream, so that is used as a reference value instead.
|
||||
*/
|
||||
typedef struct WOFF2_HeaderRec_
|
||||
{
|
||||
FT_ULong signature;
|
||||
FT_ULong flavor;
|
||||
FT_ULong length;
|
||||
FT_UShort num_tables;
|
||||
FT_ULong totalSfntSize;
|
||||
FT_ULong totalCompressedSize;
|
||||
FT_ULong metaOffset;
|
||||
FT_ULong metaLength;
|
||||
FT_ULong metaOrigLength;
|
||||
FT_ULong privOffset;
|
||||
FT_ULong privLength;
|
||||
|
||||
FT_ULong uncompressed_size; /* uncompressed brotli stream size */
|
||||
FT_ULong compressed_offset; /* compressed stream offset */
|
||||
FT_ULong header_version; /* version of original TTC Header */
|
||||
FT_UShort num_fonts; /* number of fonts in TTC */
|
||||
FT_ULong actual_sfnt_size; /* actual size of sfnt stream */
|
||||
|
||||
WOFF2_TtcFont ttc_fonts; /* metadata for fonts in a TTC */
|
||||
|
||||
} WOFF2_HeaderRec, *WOFF2_Header;
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @struct:
|
||||
* WOFF2_TableRec
|
||||
*
|
||||
* @description:
|
||||
* This structure describes a given table of a WOFF2 font.
|
||||
*
|
||||
* @fields:
|
||||
* See
|
||||
*
|
||||
* https://www.w3.org/TR/WOFF2/#table_dir_format
|
||||
*/
|
||||
typedef struct WOFF2_TableRec_
|
||||
{
|
||||
FT_Byte FlagByte; /* table type and flags */
|
||||
FT_Tag Tag; /* table file offset */
|
||||
FT_ULong dst_length; /* uncompressed table length */
|
||||
FT_ULong TransformLength; /* transformed length */
|
||||
|
||||
FT_ULong flags; /* calculated flags */
|
||||
FT_ULong src_offset; /* compressed table offset */
|
||||
FT_ULong src_length; /* compressed table length */
|
||||
FT_ULong dst_offset; /* uncompressed table offset */
|
||||
|
||||
} WOFF2_TableRec, *WOFF2_Table;
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @struct:
|
||||
* WOFF2_InfoRec
|
||||
*
|
||||
* @description:
|
||||
* Metadata for WOFF2 font that may be required for reconstruction of
|
||||
* sfnt tables.
|
||||
*
|
||||
* @fields:
|
||||
* header_checksum ::
|
||||
* Checksum of SFNT offset table.
|
||||
*
|
||||
* num_glyphs ::
|
||||
* Number of glyphs in the font.
|
||||
*
|
||||
* num_hmetrics ::
|
||||
* `numberOfHMetrics` field in the 'hhea' table.
|
||||
*
|
||||
* x_mins ::
|
||||
* `xMin` values of glyph bounding box.
|
||||
*
|
||||
* glyf_table ::
|
||||
* A pointer to the `glyf' table record.
|
||||
*
|
||||
* loca_table ::
|
||||
* A pointer to the `loca' table record.
|
||||
*
|
||||
* head_table ::
|
||||
* A pointer to the `head' table record.
|
||||
*/
|
||||
typedef struct WOFF2_InfoRec_
|
||||
{
|
||||
FT_ULong header_checksum;
|
||||
FT_UShort num_glyphs;
|
||||
FT_UShort num_hmetrics;
|
||||
FT_Short* x_mins;
|
||||
|
||||
WOFF2_Table glyf_table;
|
||||
WOFF2_Table loca_table;
|
||||
WOFF2_Table head_table;
|
||||
|
||||
} WOFF2_InfoRec, *WOFF2_Info;
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @struct:
|
||||
* WOFF2_SubstreamRec
|
||||
*
|
||||
* @description:
|
||||
* This structure stores information about a substream in the transformed
|
||||
* 'glyf' table in a WOFF2 stream.
|
||||
*
|
||||
* @fields:
|
||||
* start ::
|
||||
* Beginning of the substream relative to uncompressed table stream.
|
||||
*
|
||||
* offset ::
|
||||
* Offset of the substream relative to uncompressed table stream.
|
||||
*
|
||||
* size ::
|
||||
* Size of the substream.
|
||||
*/
|
||||
typedef struct WOFF2_SubstreamRec_
|
||||
{
|
||||
FT_ULong start;
|
||||
FT_ULong offset;
|
||||
FT_ULong size;
|
||||
|
||||
} WOFF2_SubstreamRec, *WOFF2_Substream;
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @struct:
|
||||
* WOFF2_PointRec
|
||||
*
|
||||
* @description:
|
||||
* This structure stores information about a point in the transformed
|
||||
* 'glyf' table in a WOFF2 stream.
|
||||
*
|
||||
* @fields:
|
||||
* x ::
|
||||
* x-coordinate of point.
|
||||
*
|
||||
* y ::
|
||||
* y-coordinate of point.
|
||||
*
|
||||
* on_curve ::
|
||||
* Set if point is on-curve.
|
||||
*/
|
||||
typedef struct WOFF2_PointRec_
|
||||
{
|
||||
FT_Int x;
|
||||
FT_Int y;
|
||||
FT_Bool on_curve;
|
||||
|
||||
} WOFF2_PointRec, *WOFF2_Point;
|
||||
|
||||
|
||||
FT_END_HEADER
|
||||
|
||||
#endif /* WOFFTYPES_H_ */
|
||||
|
||||
|
||||
/* END */
|
||||
336
Source/ThirdParty/freetype/otsvg.h
vendored
Normal file
336
Source/ThirdParty/freetype/otsvg.h
vendored
Normal file
@@ -0,0 +1,336 @@
|
||||
/****************************************************************************
|
||||
*
|
||||
* otsvg.h
|
||||
*
|
||||
* Interface for OT-SVG support related things (specification).
|
||||
*
|
||||
* Copyright (C) 2022-2023 by
|
||||
* David Turner, Robert Wilhelm, Werner Lemberg, and Moazin Khatti.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
* modified, and distributed under the terms of the FreeType project
|
||||
* license, LICENSE.TXT. By continuing to use, modify, or distribute
|
||||
* this file you indicate that you have read the license and
|
||||
* understand and accept it fully.
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#ifndef OTSVG_H_
|
||||
#define OTSVG_H_
|
||||
|
||||
#include <freetype/freetype.h>
|
||||
|
||||
#ifdef FREETYPE_H
|
||||
#error "freetype.h of FreeType 1 has been loaded!"
|
||||
#error "Please fix the directory search order for header files"
|
||||
#error "so that freetype.h of FreeType 2 is found first."
|
||||
#endif
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @section:
|
||||
* svg_fonts
|
||||
*
|
||||
* @title:
|
||||
* OpenType SVG Fonts
|
||||
*
|
||||
* @abstract:
|
||||
* OT-SVG API between FreeType and an external SVG rendering library.
|
||||
*
|
||||
* @description:
|
||||
* This section describes the four hooks necessary to render SVG
|
||||
* 'documents' that are contained in an OpenType font's 'SVG~' table.
|
||||
*
|
||||
* For more information on the implementation, see our standard hooks
|
||||
* based on 'librsvg' in the [FreeType Demo
|
||||
* Programs](https://gitlab.freedesktop.org/freetype/freetype-demos)
|
||||
* repository.
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @functype:
|
||||
* SVG_Lib_Init_Func
|
||||
*
|
||||
* @description:
|
||||
* A callback that is called when the first OT-SVG glyph is rendered in
|
||||
* the lifetime of an @FT_Library object. In a typical implementation,
|
||||
* one would want to allocate a structure and point the `data_pointer`
|
||||
* to it and perform any library initializations that might be needed.
|
||||
*
|
||||
* @inout:
|
||||
* data_pointer ::
|
||||
* The SVG rendering module stores a pointer variable that can be used
|
||||
* by clients to store any data that needs to be shared across
|
||||
* different hooks. `data_pointer` is essentially a pointer to that
|
||||
* pointer such that it can be written to as well as read from.
|
||||
*
|
||||
* @return:
|
||||
* FreeType error code. 0 means success.
|
||||
*
|
||||
* @since:
|
||||
* 2.12
|
||||
*/
|
||||
typedef FT_Error
|
||||
(*SVG_Lib_Init_Func)( FT_Pointer *data_pointer );
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @functype:
|
||||
* SVG_Lib_Free_Func
|
||||
*
|
||||
* @description:
|
||||
* A callback that is called when the `ot-svg` module is being freed.
|
||||
* It is only called if the init hook was called earlier. This means
|
||||
* that neither the init nor the free hook is called if no OT-SVG glyph
|
||||
* is rendered.
|
||||
*
|
||||
* In a typical implementation, one would want to free any state
|
||||
* structure that was allocated in the init hook and perform any
|
||||
* library-related closure that might be needed.
|
||||
*
|
||||
* @inout:
|
||||
* data_pointer ::
|
||||
* The SVG rendering module stores a pointer variable that can be used
|
||||
* by clients to store any data that needs to be shared across
|
||||
* different hooks. `data_pointer` is essentially a pointer to that
|
||||
* pointer such that it can be written to as well as read from.
|
||||
*
|
||||
* @since:
|
||||
* 2.12
|
||||
*/
|
||||
typedef void
|
||||
(*SVG_Lib_Free_Func)( FT_Pointer *data_pointer );
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @functype:
|
||||
* SVG_Lib_Render_Func
|
||||
*
|
||||
* @description:
|
||||
* A callback that is called to render an OT-SVG glyph. This callback
|
||||
* hook is called right after the preset hook @SVG_Lib_Preset_Slot_Func
|
||||
* has been called with `cache` set to `TRUE`. The data necessary to
|
||||
* render is available through the handle @FT_SVG_Document, which is set
|
||||
* in the `other` field of @FT_GlyphSlotRec.
|
||||
*
|
||||
* The render hook is expected to render the SVG glyph to the bitmap
|
||||
* buffer that is allocated already at `slot->bitmap.buffer`. It also
|
||||
* sets the `num_grays` value as well as `slot->format`.
|
||||
*
|
||||
* @input:
|
||||
* slot ::
|
||||
* The slot to render.
|
||||
*
|
||||
* @inout:
|
||||
* data_pointer ::
|
||||
* The SVG rendering module stores a pointer variable that can be used
|
||||
* by clients to store any data that needs to be shared across
|
||||
* different hooks. `data_pointer` is essentially a pointer to that
|
||||
* pointer such that it can be written to as well as read from.
|
||||
*
|
||||
* @return:
|
||||
* FreeType error code. 0 means success.
|
||||
*
|
||||
* @since:
|
||||
* 2.12
|
||||
*/
|
||||
typedef FT_Error
|
||||
(*SVG_Lib_Render_Func)( FT_GlyphSlot slot,
|
||||
FT_Pointer *data_pointer );
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @functype:
|
||||
* SVG_Lib_Preset_Slot_Func
|
||||
*
|
||||
* @description:
|
||||
* A callback that is called to preset the glyph slot. It is called from
|
||||
* two places.
|
||||
*
|
||||
* 1. When `FT_Load_Glyph` needs to preset the glyph slot.
|
||||
*
|
||||
* 2. Right before the `svg` module calls the render callback hook.
|
||||
*
|
||||
* When it is the former, the argument `cache` is set to `FALSE`. When
|
||||
* it is the latter, the argument `cache` is set to `TRUE`. This
|
||||
* distinction has been made because many calculations that are necessary
|
||||
* for presetting a glyph slot are the same needed later for the render
|
||||
* callback hook. Thus, if `cache` is `TRUE`, the hook can _cache_ those
|
||||
* calculations in a memory block referenced by the state pointer.
|
||||
*
|
||||
* This hook is expected to preset the slot by setting parameters such as
|
||||
* `bitmap_left`, `bitmap_top`, `width`, `rows`, `pitch`, and
|
||||
* `pixel_mode`. It is also expected to set all the metrics for the slot
|
||||
* including the vertical advance if it is not already set. Typically,
|
||||
* fonts have horizontal advances but not vertical ones. If those are
|
||||
* available, they had already been set, otherwise they have to be
|
||||
* estimated and set manually. The hook must take into account the
|
||||
* transformations that have been set, and translate the transformation
|
||||
* matrices into the SVG coordinate system, as the original matrix is
|
||||
* intended for the TTF/CFF coordinate system.
|
||||
*
|
||||
* @input:
|
||||
* slot ::
|
||||
* The glyph slot that has the SVG document loaded.
|
||||
*
|
||||
* cache ::
|
||||
* See description.
|
||||
*
|
||||
* @inout:
|
||||
* data_pointer ::
|
||||
* The SVG rendering module stores a pointer variable that can be used
|
||||
* by clients to store any data that needs to be shared across
|
||||
* different hooks. `data_pointer` is essentially a pointer to that
|
||||
* pointer such that it can be written to as well as read from.
|
||||
*
|
||||
* @return:
|
||||
* FreeType error code. 0 means success.
|
||||
*
|
||||
* @since:
|
||||
* 2.12
|
||||
*/
|
||||
typedef FT_Error
|
||||
(*SVG_Lib_Preset_Slot_Func)( FT_GlyphSlot slot,
|
||||
FT_Bool cache,
|
||||
FT_Pointer *state );
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @struct:
|
||||
* SVG_RendererHooks
|
||||
*
|
||||
* @description:
|
||||
* A structure that stores the four hooks needed to render OT-SVG glyphs
|
||||
* properly. The structure is publicly used to set the hooks via the
|
||||
* @svg-hooks driver property.
|
||||
*
|
||||
* The behavior of each hook is described in its documentation. One
|
||||
* thing to note is that the preset hook and the render hook often need
|
||||
* to do the same operations; therefore, it's better to cache the
|
||||
* intermediate data in a state structure to avoid calculating it twice.
|
||||
* For example, in the preset hook one can draw the glyph on a recorder
|
||||
* surface and later create a bitmap surface from it in the render hook.
|
||||
*
|
||||
* All four hooks must be non-NULL.
|
||||
*
|
||||
* @fields:
|
||||
* init_svg ::
|
||||
* The initialization hook.
|
||||
*
|
||||
* free_svg ::
|
||||
* The cleanup hook.
|
||||
*
|
||||
* render_hook ::
|
||||
* The render hook.
|
||||
*
|
||||
* preset_slot ::
|
||||
* The preset hook.
|
||||
*
|
||||
* @since:
|
||||
* 2.12
|
||||
*/
|
||||
typedef struct SVG_RendererHooks_
|
||||
{
|
||||
SVG_Lib_Init_Func init_svg;
|
||||
SVG_Lib_Free_Func free_svg;
|
||||
SVG_Lib_Render_Func render_svg;
|
||||
|
||||
SVG_Lib_Preset_Slot_Func preset_slot;
|
||||
|
||||
} SVG_RendererHooks;
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @struct:
|
||||
* FT_SVG_DocumentRec
|
||||
*
|
||||
* @description:
|
||||
* A structure that models one SVG document.
|
||||
*
|
||||
* @fields:
|
||||
* svg_document ::
|
||||
* A pointer to the SVG document.
|
||||
*
|
||||
* svg_document_length ::
|
||||
* The length of `svg_document`.
|
||||
*
|
||||
* metrics ::
|
||||
* A metrics object storing the size information.
|
||||
*
|
||||
* units_per_EM ::
|
||||
* The size of the EM square.
|
||||
*
|
||||
* start_glyph_id ::
|
||||
* The first glyph ID in the glyph range covered by this document.
|
||||
*
|
||||
* end_glyph_id ::
|
||||
* The last glyph ID in the glyph range covered by this document.
|
||||
*
|
||||
* transform ::
|
||||
* A 2x2 transformation matrix to apply to the glyph while rendering
|
||||
* it.
|
||||
*
|
||||
* delta ::
|
||||
* The translation to apply to the glyph while rendering.
|
||||
*
|
||||
* @note:
|
||||
* When an @FT_GlyphSlot object `slot` is passed down to a renderer, the
|
||||
* renderer can only access the `metrics` and `units_per_EM` fields via
|
||||
* `slot->face`. However, when @FT_Glyph_To_Bitmap sets up a dummy
|
||||
* object, it has no way to set a `face` object. Thus, metrics
|
||||
* information and `units_per_EM` (which is necessary for OT-SVG) has to
|
||||
* be stored separately.
|
||||
*
|
||||
* @since:
|
||||
* 2.12
|
||||
*/
|
||||
typedef struct FT_SVG_DocumentRec_
|
||||
{
|
||||
FT_Byte* svg_document;
|
||||
FT_ULong svg_document_length;
|
||||
|
||||
FT_Size_Metrics metrics;
|
||||
FT_UShort units_per_EM;
|
||||
|
||||
FT_UShort start_glyph_id;
|
||||
FT_UShort end_glyph_id;
|
||||
|
||||
FT_Matrix transform;
|
||||
FT_Vector delta;
|
||||
|
||||
} FT_SVG_DocumentRec;
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @type:
|
||||
* FT_SVG_Document
|
||||
*
|
||||
* @description:
|
||||
* A handle to an @FT_SVG_DocumentRec object.
|
||||
*
|
||||
* @since:
|
||||
* 2.12
|
||||
*/
|
||||
typedef struct FT_SVG_DocumentRec_* FT_SVG_Document;
|
||||
|
||||
|
||||
FT_END_HEADER
|
||||
|
||||
#endif /* OTSVG_H_ */
|
||||
|
||||
|
||||
/* END */
|
||||
179
Source/ThirdParty/freetype/t1tables.h
vendored
179
Source/ThirdParty/freetype/t1tables.h
vendored
@@ -5,7 +5,7 @@
|
||||
* Basic Type 1/Type 2 tables definitions and interface (specification
|
||||
* only).
|
||||
*
|
||||
* Copyright (C) 1996-2019 by
|
||||
* Copyright (C) 1996-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
@@ -21,8 +21,7 @@
|
||||
#define T1TABLES_H_
|
||||
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_FREETYPE_H
|
||||
#include <freetype/freetype.h>
|
||||
|
||||
#ifdef FREETYPE_H
|
||||
#error "freetype.h of FreeType 1 has been loaded!"
|
||||
@@ -361,7 +360,7 @@ FT_BEGIN_HEADER
|
||||
|
||||
FT_UInt num_subrs;
|
||||
FT_ULong subrmap_offset;
|
||||
FT_Int sd_bytes;
|
||||
FT_UInt sd_bytes;
|
||||
|
||||
} CID_FaceDictRec;
|
||||
|
||||
@@ -416,11 +415,11 @@ FT_BEGIN_HEADER
|
||||
FT_ULong xuid[16];
|
||||
|
||||
FT_ULong cidmap_offset;
|
||||
FT_Int fd_bytes;
|
||||
FT_Int gd_bytes;
|
||||
FT_UInt fd_bytes;
|
||||
FT_UInt gd_bytes;
|
||||
FT_ULong cid_count;
|
||||
|
||||
FT_Int num_dicts;
|
||||
FT_UInt num_dicts;
|
||||
CID_FaceDict font_dicts;
|
||||
|
||||
FT_ULong data_offset;
|
||||
@@ -454,22 +453,22 @@ FT_BEGIN_HEADER
|
||||
/**************************************************************************
|
||||
*
|
||||
* @function:
|
||||
* FT_Has_PS_Glyph_Names
|
||||
* FT_Has_PS_Glyph_Names
|
||||
*
|
||||
* @description:
|
||||
* Return true if a given face provides reliable PostScript glyph names.
|
||||
* This is similar to using the @FT_HAS_GLYPH_NAMES macro, except that
|
||||
* certain fonts (mostly TrueType) contain incorrect glyph name tables.
|
||||
* Return true if a given face provides reliable PostScript glyph names.
|
||||
* This is similar to using the @FT_HAS_GLYPH_NAMES macro, except that
|
||||
* certain fonts (mostly TrueType) contain incorrect glyph name tables.
|
||||
*
|
||||
* When this function returns true, the caller is sure that the glyph
|
||||
* names returned by @FT_Get_Glyph_Name are reliable.
|
||||
* When this function returns true, the caller is sure that the glyph
|
||||
* names returned by @FT_Get_Glyph_Name are reliable.
|
||||
*
|
||||
* @input:
|
||||
* face ::
|
||||
* face handle
|
||||
* face ::
|
||||
* face handle
|
||||
*
|
||||
* @return:
|
||||
* Boolean. True if glyph names are reliable.
|
||||
* Boolean. True if glyph names are reliable.
|
||||
*
|
||||
*/
|
||||
FT_EXPORT( FT_Int )
|
||||
@@ -479,30 +478,40 @@ FT_BEGIN_HEADER
|
||||
/**************************************************************************
|
||||
*
|
||||
* @function:
|
||||
* FT_Get_PS_Font_Info
|
||||
* FT_Get_PS_Font_Info
|
||||
*
|
||||
* @description:
|
||||
* Retrieve the @PS_FontInfoRec structure corresponding to a given
|
||||
* PostScript font.
|
||||
* Retrieve the @PS_FontInfoRec structure corresponding to a given
|
||||
* PostScript font.
|
||||
*
|
||||
* @input:
|
||||
* face ::
|
||||
* PostScript face handle.
|
||||
* face ::
|
||||
* PostScript face handle.
|
||||
*
|
||||
* @output:
|
||||
* afont_info ::
|
||||
* Output font info structure pointer.
|
||||
* afont_info ::
|
||||
* A pointer to a @PS_FontInfoRec object.
|
||||
*
|
||||
* @return:
|
||||
* FreeType error code. 0~means success.
|
||||
* FreeType error code. 0~means success.
|
||||
*
|
||||
* @note:
|
||||
* String pointers within the @PS_FontInfoRec structure are owned by the
|
||||
* face and don't need to be freed by the caller. Missing entries in
|
||||
* the font's FontInfo dictionary are represented by `NULL` pointers.
|
||||
* String pointers within the @PS_FontInfoRec structure are owned by the
|
||||
* face and don't need to be freed by the caller. Missing entries in the
|
||||
* font's FontInfo dictionary are represented by `NULL` pointers.
|
||||
*
|
||||
* If the font's format is not PostScript-based, this function will
|
||||
* return the `FT_Err_Invalid_Argument` error code.
|
||||
* The following font formats support this feature: 'Type~1', 'Type~42',
|
||||
* 'CFF', 'CID~Type~1'. For other font formats this function returns the
|
||||
* `FT_Err_Invalid_Argument` error code.
|
||||
*
|
||||
* @example:
|
||||
* ```
|
||||
* PS_FontInfoRec font_info;
|
||||
*
|
||||
*
|
||||
* error = FT_Get_PS_Font_Info( face, &font_info );
|
||||
* ...
|
||||
* ```
|
||||
*
|
||||
*/
|
||||
FT_EXPORT( FT_Error )
|
||||
@@ -513,29 +522,39 @@ FT_BEGIN_HEADER
|
||||
/**************************************************************************
|
||||
*
|
||||
* @function:
|
||||
* FT_Get_PS_Font_Private
|
||||
* FT_Get_PS_Font_Private
|
||||
*
|
||||
* @description:
|
||||
* Retrieve the @PS_PrivateRec structure corresponding to a given
|
||||
* PostScript font.
|
||||
* Retrieve the @PS_PrivateRec structure corresponding to a given
|
||||
* PostScript font.
|
||||
*
|
||||
* @input:
|
||||
* face ::
|
||||
* PostScript face handle.
|
||||
* face ::
|
||||
* PostScript face handle.
|
||||
*
|
||||
* @output:
|
||||
* afont_private ::
|
||||
* Output private dictionary structure pointer.
|
||||
* afont_private ::
|
||||
* A pointer to a @PS_PrivateRec object.
|
||||
*
|
||||
* @return:
|
||||
* FreeType error code. 0~means success.
|
||||
* FreeType error code. 0~means success.
|
||||
*
|
||||
* @note:
|
||||
* The string pointers within the @PS_PrivateRec structure are owned by
|
||||
* the face and don't need to be freed by the caller.
|
||||
* The string pointers within the @PS_PrivateRec structure are owned by
|
||||
* the face and don't need to be freed by the caller.
|
||||
*
|
||||
* If the font's format is not PostScript-based, this function returns
|
||||
* the `FT_Err_Invalid_Argument` error code.
|
||||
* Only the 'Type~1' font format supports this feature. For other font
|
||||
* formats this function returns the `FT_Err_Invalid_Argument` error
|
||||
* code.
|
||||
*
|
||||
* @example:
|
||||
* ```
|
||||
* PS_PrivateRec font_private;
|
||||
*
|
||||
*
|
||||
* error = FT_Get_PS_Font_Private( face, &font_private );
|
||||
* ...
|
||||
* ```
|
||||
*
|
||||
*/
|
||||
FT_EXPORT( FT_Error )
|
||||
@@ -694,67 +713,67 @@ FT_BEGIN_HEADER
|
||||
/**************************************************************************
|
||||
*
|
||||
* @function:
|
||||
* FT_Get_PS_Font_Value
|
||||
* FT_Get_PS_Font_Value
|
||||
*
|
||||
* @description:
|
||||
* Retrieve the value for the supplied key from a PostScript font.
|
||||
* Retrieve the value for the supplied key from a PostScript font.
|
||||
*
|
||||
* @input:
|
||||
* face ::
|
||||
* PostScript face handle.
|
||||
* face ::
|
||||
* PostScript face handle.
|
||||
*
|
||||
* key ::
|
||||
* An enumeration value representing the dictionary key to retrieve.
|
||||
* key ::
|
||||
* An enumeration value representing the dictionary key to retrieve.
|
||||
*
|
||||
* idx ::
|
||||
* For array values, this specifies the index to be returned.
|
||||
* idx ::
|
||||
* For array values, this specifies the index to be returned.
|
||||
*
|
||||
* value ::
|
||||
* A pointer to memory into which to write the value.
|
||||
* value ::
|
||||
* A pointer to memory into which to write the value.
|
||||
*
|
||||
* valen_len ::
|
||||
* The size, in bytes, of the memory supplied for the value.
|
||||
* valen_len ::
|
||||
* The size, in bytes, of the memory supplied for the value.
|
||||
*
|
||||
* @output:
|
||||
* value ::
|
||||
* The value matching the above key, if it exists.
|
||||
* value ::
|
||||
* The value matching the above key, if it exists.
|
||||
*
|
||||
* @return:
|
||||
* The amount of memory (in bytes) required to hold the requested value
|
||||
* (if it exists, -1 otherwise).
|
||||
* The amount of memory (in bytes) required to hold the requested value
|
||||
* (if it exists, -1 otherwise).
|
||||
*
|
||||
* @note:
|
||||
* The values returned are not pointers into the internal structures of
|
||||
* the face, but are 'fresh' copies, so that the memory containing them
|
||||
* belongs to the calling application. This also enforces the
|
||||
* 'read-only' nature of these values, i.e., this function cannot be
|
||||
* used to manipulate the face.
|
||||
* The values returned are not pointers into the internal structures of
|
||||
* the face, but are 'fresh' copies, so that the memory containing them
|
||||
* belongs to the calling application. This also enforces the
|
||||
* 'read-only' nature of these values, i.e., this function cannot be
|
||||
* used to manipulate the face.
|
||||
*
|
||||
* `value` is a void pointer because the values returned can be of
|
||||
* various types.
|
||||
* `value` is a void pointer because the values returned can be of
|
||||
* various types.
|
||||
*
|
||||
* If either `value` is `NULL` or `value_len` is too small, just the
|
||||
* required memory size for the requested entry is returned.
|
||||
* If either `value` is `NULL` or `value_len` is too small, just the
|
||||
* required memory size for the requested entry is returned.
|
||||
*
|
||||
* The `idx` parameter is used, not only to retrieve elements of, for
|
||||
* example, the FontMatrix or FontBBox, but also to retrieve name keys
|
||||
* from the CharStrings dictionary, and the charstrings themselves. It
|
||||
* is ignored for atomic values.
|
||||
* The `idx` parameter is used, not only to retrieve elements of, for
|
||||
* example, the FontMatrix or FontBBox, but also to retrieve name keys
|
||||
* from the CharStrings dictionary, and the charstrings themselves. It
|
||||
* is ignored for atomic values.
|
||||
*
|
||||
* `PS_DICT_BLUE_SCALE` returns a value that is scaled up by 1000. To
|
||||
* get the value as in the font stream, you need to divide by 65536000.0
|
||||
* (to remove the FT_Fixed scale, and the x1000 scale).
|
||||
* `PS_DICT_BLUE_SCALE` returns a value that is scaled up by 1000. To
|
||||
* get the value as in the font stream, you need to divide by 65536000.0
|
||||
* (to remove the FT_Fixed scale, and the x1000 scale).
|
||||
*
|
||||
* IMPORTANT: Only key/value pairs read by the FreeType interpreter can
|
||||
* be retrieved. So, for example, PostScript procedures such as NP, ND,
|
||||
* and RD are not available. Arbitrary keys are, obviously, not be
|
||||
* available either.
|
||||
* IMPORTANT: Only key/value pairs read by the FreeType interpreter can
|
||||
* be retrieved. So, for example, PostScript procedures such as NP, ND,
|
||||
* and RD are not available. Arbitrary keys are, obviously, not be
|
||||
* available either.
|
||||
*
|
||||
* If the font's format is not PostScript-based, this function returns
|
||||
* the `FT_Err_Invalid_Argument` error code.
|
||||
* If the font's format is not PostScript-based, this function returns
|
||||
* the `FT_Err_Invalid_Argument` error code.
|
||||
*
|
||||
* @since:
|
||||
* 2.4.8
|
||||
* 2.4.8
|
||||
*
|
||||
*/
|
||||
FT_EXPORT( FT_Long )
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user