1 /****************************************************************************
5 * Build macros of the FreeType 2 library.
7 * Copyright (C) 1996-2020 by
8 * David Turner, Robert Wilhelm, and Werner Lemberg.
10 * This file is part of the FreeType project, and may only be used,
11 * modified, and distributed under the terms of the FreeType project
12 * license, LICENSE.TXT. By continuing to use, modify, or distribute
13 * this file you indicate that you have read the license and
14 * understand and accept it fully.
22 /*@***********************************************************************/
28 /* This macro is used in association with @FT_END_HEADER in header */
29 /* files to ensure that the declarations within are properly */
30 /* encapsulated in an `extern "C" { .. }` block when included from a */
33 #ifndef FT_BEGIN_HEADER
35 # define FT_BEGIN_HEADER extern "C" {
37 # define FT_BEGIN_HEADER /* nothing */
42 /*@***********************************************************************/
48 /* This macro is used in association with @FT_BEGIN_HEADER in header */
49 /* files to ensure that the declarations within are properly */
50 /* encapsulated in an `extern "C" { .. }` block when included from a */
55 # define FT_END_HEADER }
57 # define FT_END_HEADER /* nothing */
62 /**************************************************************************
64 * Aliases for the FreeType 2 public and configuration files.
68 /**************************************************************************
77 * Macro definitions used to `#include` specific header files.
80 * In addition to the normal scheme of including header files like
83 * #include <freetype/freetype.h>
84 * #include <freetype/ftmm.h>
85 * #include <freetype/ftglyph.h>
88 * it is possible to used named macros instead. They can be used
89 * directly in `#include` statements as in
92 * #include FT_FREETYPE_H
93 * #include FT_MULTIPLE_MASTERS_H
97 * These macros were introduced to overcome the infamous 8.3~naming rule
98 * required by DOS (and `FT_MULTIPLE_MASTERS_H` is a lot more meaningful
104 /* configuration files */
106 /**************************************************************************
112 * A macro used in `#include` statements to name the file containing
113 * FreeType~2 configuration data.
116 #ifndef FT_CONFIG_CONFIG_H
117 #define FT_CONFIG_CONFIG_H <freetype/config/ftconfig.h>
121 /**************************************************************************
124 * FT_CONFIG_STANDARD_LIBRARY_H
127 * A macro used in `#include` statements to name the file containing
128 * FreeType~2 interface to the standard C library functions.
131 #ifndef FT_CONFIG_STANDARD_LIBRARY_H
132 #define FT_CONFIG_STANDARD_LIBRARY_H <freetype/config/ftstdlib.h>
136 /**************************************************************************
139 * FT_CONFIG_OPTIONS_H
142 * A macro used in `#include` statements to name the file containing
143 * FreeType~2 project-specific configuration options.
146 #ifndef FT_CONFIG_OPTIONS_H
147 #define FT_CONFIG_OPTIONS_H <freetype/config/ftoption.h>
151 /**************************************************************************
154 * FT_CONFIG_MODULES_H
157 * A macro used in `#include` statements to name the file containing the
158 * list of FreeType~2 modules that are statically linked to new library
159 * instances in @FT_Init_FreeType.
162 #ifndef FT_CONFIG_MODULES_H
163 #define FT_CONFIG_MODULES_H <freetype/config/ftmodule.h>
170 /**************************************************************************
176 * A macro used in `#include` statements to name the file containing the
177 * base FreeType~2 API.
180 #define FT_FREETYPE_H <freetype/freetype.h>
183 /**************************************************************************
189 * A macro used in `#include` statements to name the file containing the
190 * list of FreeType~2 error codes (and messages).
192 * It is included by @FT_FREETYPE_H.
195 #define FT_ERRORS_H <freetype/fterrors.h>
198 /**************************************************************************
204 * A macro used in `#include` statements to name the file containing the
205 * list of FreeType~2 module error offsets (and messages).
208 #define FT_MODULE_ERRORS_H <freetype/ftmoderr.h>
211 /**************************************************************************
217 * A macro used in `#include` statements to name the file containing the
218 * FreeType~2 interface to low-level operations (i.e., memory management
221 * It is included by @FT_FREETYPE_H.
224 #define FT_SYSTEM_H <freetype/ftsystem.h>
227 /**************************************************************************
233 * A macro used in `#include` statements to name the file containing type
234 * definitions related to glyph images (i.e., bitmaps, outlines,
235 * scan-converter parameters).
237 * It is included by @FT_FREETYPE_H.
240 #define FT_IMAGE_H <freetype/ftimage.h>
243 /**************************************************************************
249 * A macro used in `#include` statements to name the file containing the
250 * basic data types defined by FreeType~2.
252 * It is included by @FT_FREETYPE_H.
255 #define FT_TYPES_H <freetype/fttypes.h>
258 /**************************************************************************
264 * A macro used in `#include` statements to name the file containing the
265 * list management API of FreeType~2.
267 * (Most applications will never need to include this file.)
270 #define FT_LIST_H <freetype/ftlist.h>
273 /**************************************************************************
279 * A macro used in `#include` statements to name the file containing the
280 * scalable outline management API of FreeType~2.
283 #define FT_OUTLINE_H <freetype/ftoutln.h>
286 /**************************************************************************
292 * A macro used in `#include` statements to name the file containing the
293 * API which manages multiple @FT_Size objects per face.
296 #define FT_SIZES_H <freetype/ftsizes.h>
299 /**************************************************************************
305 * A macro used in `#include` statements to name the file containing the
306 * module management API of FreeType~2.
309 #define FT_MODULE_H <freetype/ftmodapi.h>
312 /**************************************************************************
318 * A macro used in `#include` statements to name the file containing the
319 * renderer module management API of FreeType~2.
322 #define FT_RENDER_H <freetype/ftrender.h>
325 /**************************************************************************
331 * A macro used in `#include` statements to name the file containing
332 * structures and macros related to the driver modules.
335 #define FT_DRIVER_H <freetype/ftdriver.h>
338 /**************************************************************************
344 * A macro used in `#include` statements to name the file containing
345 * structures and macros related to the auto-hinting module.
347 * Deprecated since version~2.9; use @FT_DRIVER_H instead.
350 #define FT_AUTOHINTER_H FT_DRIVER_H
353 /**************************************************************************
359 * A macro used in `#include` statements to name the file containing
360 * structures and macros related to the CFF driver module.
362 * Deprecated since version~2.9; use @FT_DRIVER_H instead.
365 #define FT_CFF_DRIVER_H FT_DRIVER_H
368 /**************************************************************************
371 * FT_TRUETYPE_DRIVER_H
374 * A macro used in `#include` statements to name the file containing
375 * structures and macros related to the TrueType driver module.
377 * Deprecated since version~2.9; use @FT_DRIVER_H instead.
380 #define FT_TRUETYPE_DRIVER_H FT_DRIVER_H
383 /**************************************************************************
389 * A macro used in `#include` statements to name the file containing
390 * structures and macros related to the PCF driver module.
392 * Deprecated since version~2.9; use @FT_DRIVER_H instead.
395 #define FT_PCF_DRIVER_H FT_DRIVER_H
398 /**************************************************************************
404 * A macro used in `#include` statements to name the file containing the
405 * types and API specific to the Type~1 format.
408 #define FT_TYPE1_TABLES_H <freetype/t1tables.h>
411 /**************************************************************************
417 * A macro used in `#include` statements to name the file containing the
418 * enumeration values which identify name strings, languages, encodings,
419 * etc. This file really contains a _large_ set of constant macro
420 * definitions, taken from the TrueType and OpenType specifications.
423 #define FT_TRUETYPE_IDS_H <freetype/ttnameid.h>
426 /**************************************************************************
429 * FT_TRUETYPE_TABLES_H
432 * A macro used in `#include` statements to name the file containing the
433 * types and API specific to the TrueType (as well as OpenType) format.
436 #define FT_TRUETYPE_TABLES_H <freetype/tttables.h>
439 /**************************************************************************
445 * A macro used in `#include` statements to name the file containing the
446 * definitions of TrueType four-byte 'tags' which identify blocks in
447 * SFNT-based font formats (i.e., TrueType and OpenType).
450 #define FT_TRUETYPE_TAGS_H <freetype/tttags.h>
453 /**************************************************************************
459 * A macro used in `#include` statements to name the file containing the
460 * definitions of an API which accesses BDF-specific strings from a face.
463 #define FT_BDF_H <freetype/ftbdf.h>
466 /**************************************************************************
472 * A macro used in `#include` statements to name the file containing the
473 * definitions of an API which access CID font information from a face.
476 #define FT_CID_H <freetype/ftcid.h>
479 /**************************************************************************
485 * A macro used in `#include` statements to name the file containing the
486 * definitions of an API which supports gzip-compressed files.
489 #define FT_GZIP_H <freetype/ftgzip.h>
492 /**************************************************************************
498 * A macro used in `#include` statements to name the file containing the
499 * definitions of an API which supports LZW-compressed files.
502 #define FT_LZW_H <freetype/ftlzw.h>
505 /**************************************************************************
511 * A macro used in `#include` statements to name the file containing the
512 * definitions of an API which supports bzip2-compressed files.
515 #define FT_BZIP2_H <freetype/ftbzip2.h>
518 /**************************************************************************
524 * A macro used in `#include` statements to name the file containing the
525 * definitions of an API which supports Windows FNT files.
528 #define FT_WINFONTS_H <freetype/ftwinfnt.h>
531 /**************************************************************************
537 * A macro used in `#include` statements to name the file containing the
538 * API of the optional glyph management component.
541 #define FT_GLYPH_H <freetype/ftglyph.h>
544 /**************************************************************************
550 * A macro used in `#include` statements to name the file containing the
551 * API of the optional bitmap conversion component.
554 #define FT_BITMAP_H <freetype/ftbitmap.h>
557 /**************************************************************************
563 * A macro used in `#include` statements to name the file containing the
564 * API of the optional exact bounding box computation routines.
567 #define FT_BBOX_H <freetype/ftbbox.h>
570 /**************************************************************************
576 * A macro used in `#include` statements to name the file containing the
577 * API of the optional FreeType~2 cache sub-system.
580 #define FT_CACHE_H <freetype/ftcache.h>
583 /**************************************************************************
589 * A macro used in `#include` statements to name the file containing the
590 * Macintosh-specific FreeType~2 API. The latter is used to access fonts
591 * embedded in resource forks.
593 * This header file must be explicitly included by client applications
594 * compiled on the Mac (note that the base API still works though).
597 #define FT_MAC_H <freetype/ftmac.h>
600 /**************************************************************************
603 * FT_MULTIPLE_MASTERS_H
606 * A macro used in `#include` statements to name the file containing the
607 * optional multiple-masters management API of FreeType~2.
610 #define FT_MULTIPLE_MASTERS_H <freetype/ftmm.h>
613 /**************************************************************************
619 * A macro used in `#include` statements to name the file containing the
620 * optional FreeType~2 API which accesses embedded 'name' strings in
621 * SFNT-based font formats (i.e., TrueType and OpenType).
624 #define FT_SFNT_NAMES_H <freetype/ftsnames.h>
627 /**************************************************************************
630 * FT_OPENTYPE_VALIDATE_H
633 * A macro used in `#include` statements to name the file containing the
634 * optional FreeType~2 API which validates OpenType tables ('BASE',
635 * 'GDEF', 'GPOS', 'GSUB', 'JSTF').
638 #define FT_OPENTYPE_VALIDATE_H <freetype/ftotval.h>
641 /**************************************************************************
647 * A macro used in `#include` statements to name the file containing the
648 * optional FreeType~2 API which validates TrueTypeGX/AAT tables ('feat',
649 * 'mort', 'morx', 'bsln', 'just', 'kern', 'opbd', 'trak', 'prop').
652 #define FT_GX_VALIDATE_H <freetype/ftgxval.h>
655 /**************************************************************************
661 * A macro used in `#include` statements to name the file containing the
662 * FreeType~2 API which accesses PFR-specific data.
665 #define FT_PFR_H <freetype/ftpfr.h>
668 /**************************************************************************
674 * A macro used in `#include` statements to name the file containing the
675 * FreeType~2 API which provides functions to stroke outline paths.
677 #define FT_STROKER_H <freetype/ftstroke.h>
680 /**************************************************************************
686 * A macro used in `#include` statements to name the file containing the
687 * FreeType~2 API which performs artificial obliquing and emboldening.
689 #define FT_SYNTHESIS_H <freetype/ftsynth.h>
692 /**************************************************************************
698 * A macro used in `#include` statements to name the file containing the
699 * FreeType~2 API which provides functions specific to font formats.
701 #define FT_FONT_FORMATS_H <freetype/ftfntfmt.h>
704 #define FT_XFREE86_H FT_FONT_FORMATS_H
707 /**************************************************************************
713 * A macro used in `#include` statements to name the file containing the
714 * FreeType~2 API which performs trigonometric computations (e.g.,
715 * cosines and arc tangents).
717 #define FT_TRIGONOMETRY_H <freetype/fttrigon.h>
720 /**************************************************************************
726 * A macro used in `#include` statements to name the file containing the
727 * FreeType~2 API which performs color filtering for subpixel rendering.
729 #define FT_LCD_FILTER_H <freetype/ftlcdfil.h>
732 /**************************************************************************
738 * A macro used in `#include` statements to name the file containing the
739 * FreeType~2 API which performs incremental glyph loading.
741 #define FT_INCREMENTAL_H <freetype/ftincrem.h>
744 /**************************************************************************
750 * A macro used in `#include` statements to name the file containing the
751 * FreeType~2 API which returns entries from the TrueType GASP table.
753 #define FT_GASP_H <freetype/ftgasp.h>
756 /**************************************************************************
762 * A macro used in `#include` statements to name the file containing the
763 * FreeType~2 API which returns individual and ranged glyph advances.
765 #define FT_ADVANCES_H <freetype/ftadvanc.h>
768 /**************************************************************************
774 * A macro used in `#include` statements to name the file containing the
775 * FreeType~2 API which handles the OpenType 'CPAL' table.
777 #define FT_COLOR_H <freetype/ftcolor.h>
782 /* These header files don't need to be included by the user. */
783 #define FT_ERROR_DEFINITIONS_H <freetype/fterrdef.h>
784 #define FT_PARAMETER_TAGS_H <freetype/ftparams.h>
786 /* Deprecated macros. */
787 #define FT_UNPATENTED_HINTING_H <freetype/ftparams.h>
788 #define FT_TRUETYPE_UNPATENTED_H <freetype/ftparams.h>
790 /* `FT_CACHE_H` is the only header file needed for the cache subsystem. */
791 #define FT_CACHE_IMAGE_H FT_CACHE_H
792 #define FT_CACHE_SMALL_BITMAPS_H FT_CACHE_H
793 #define FT_CACHE_CHARMAP_H FT_CACHE_H
795 /* The internals of the cache sub-system are no longer exposed. We */
796 /* default to `FT_CACHE_H` at the moment just in case, but we know */
797 /* of no rogue client that uses them. */
799 #define FT_CACHE_MANAGER_H FT_CACHE_H
800 #define FT_CACHE_INTERNAL_MRU_H FT_CACHE_H
801 #define FT_CACHE_INTERNAL_MANAGER_H FT_CACHE_H
802 #define FT_CACHE_INTERNAL_CACHE_H FT_CACHE_H
803 #define FT_CACHE_INTERNAL_GLYPH_H FT_CACHE_H
804 #define FT_CACHE_INTERNAL_IMAGE_H FT_CACHE_H
805 #define FT_CACHE_INTERNAL_SBITS_H FT_CACHE_H
807 /* TODO(david): Move this section below to a different header */
808 #ifdef FT2_BUILD_LIBRARY
809 #if defined( _MSC_VER ) /* Visual C++ (and Intel C++) */
811 /* We disable the warning `conditional expression is constant' here */
812 /* in order to compile cleanly with the maximum level of warnings. */
813 /* In particular, the warning complains about stuff like `while(0)' */
814 /* which is very useful in macro definitions. There is no benefit */
815 /* in having it enabled. */
816 #pragma warning( disable : 4127 )
818 #endif /* _MSC_VER */
819 #endif /* FT2_BUILD_LIBRARY */
821 #endif /* FTHEADER_H_ */