1/****************************************************************************
2 *
3 * ftheader.h
4 *
5 * Build macros of the FreeType 2 library.
6 *
7 * Copyright (C) 1996-2023 by
8 * David Turner, Robert Wilhelm, and Werner Lemberg.
9 *
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.
15 *
16 */
17
18#ifndef FTHEADER_H_
19#define FTHEADER_H_
20
21
22 /*@***********************************************************************/
23 /* */
24 /* <Macro> */
25 /* FT_BEGIN_HEADER */
26 /* */
27 /* <Description> */
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 */
31 /* C++ compiler. */
32 /* */
33#ifndef FT_BEGIN_HEADER
34# ifdef __cplusplus
35# define FT_BEGIN_HEADER extern "C" {
36# else
37# define FT_BEGIN_HEADER /* nothing */
38# endif
39#endif
40
41
42 /*@***********************************************************************/
43 /* */
44 /* <Macro> */
45 /* FT_END_HEADER */
46 /* */
47 /* <Description> */
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 */
51 /* C++ compiler. */
52 /* */
53#ifndef FT_END_HEADER
54# ifdef __cplusplus
55# define FT_END_HEADER }
56# else
57# define FT_END_HEADER /* nothing */
58# endif
59#endif
60
61
62 /**************************************************************************
63 *
64 * Aliases for the FreeType 2 public and configuration files.
65 *
66 */
67
68 /**************************************************************************
69 *
70 * @section:
71 * header_file_macros
72 *
73 * @title:
74 * Header File Macros
75 *
76 * @abstract:
77 * Macro definitions used to `#include` specific header files.
78 *
79 * @description:
80 * In addition to the normal scheme of including header files like
81 *
82 * ```
83 * #include <freetype/freetype.h>
84 * #include <freetype/ftmm.h>
85 * #include <freetype/ftglyph.h>
86 * ```
87 *
88 * it is possible to used named macros instead. They can be used
89 * directly in `#include` statements as in
90 *
91 * ```
92 * #include FT_FREETYPE_H
93 * #include FT_MULTIPLE_MASTERS_H
94 * #include FT_GLYPH_H
95 * ```
96 *
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
99 * than `ftmm.h`).
100 *
101 */
102
103
104 /* configuration files */
105
106 /**************************************************************************
107 *
108 * @macro:
109 * FT_CONFIG_CONFIG_H
110 *
111 * @description:
112 * A macro used in `#include` statements to name the file containing
113 * FreeType~2 configuration data.
114 *
115 */
116#ifndef FT_CONFIG_CONFIG_H
117#define FT_CONFIG_CONFIG_H <freetype/config/ftconfig.h>
118#endif
119
120
121 /**************************************************************************
122 *
123 * @macro:
124 * FT_CONFIG_STANDARD_LIBRARY_H
125 *
126 * @description:
127 * A macro used in `#include` statements to name the file containing
128 * FreeType~2 interface to the standard C library functions.
129 *
130 */
131#ifndef FT_CONFIG_STANDARD_LIBRARY_H
132#define FT_CONFIG_STANDARD_LIBRARY_H <freetype/config/ftstdlib.h>
133#endif
134
135
136 /**************************************************************************
137 *
138 * @macro:
139 * FT_CONFIG_OPTIONS_H
140 *
141 * @description:
142 * A macro used in `#include` statements to name the file containing
143 * FreeType~2 project-specific configuration options.
144 *
145 */
146#ifndef FT_CONFIG_OPTIONS_H
147#define FT_CONFIG_OPTIONS_H <freetype/config/ftoption.h>
148#endif
149
150
151 /**************************************************************************
152 *
153 * @macro:
154 * FT_CONFIG_MODULES_H
155 *
156 * @description:
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.
160 *
161 */
162#ifndef FT_CONFIG_MODULES_H
163#define FT_CONFIG_MODULES_H <freetype/config/ftmodule.h>
164#endif
165
166 /* */
167
168 /* public headers */
169
170 /**************************************************************************
171 *
172 * @macro:
173 * FT_FREETYPE_H
174 *
175 * @description:
176 * A macro used in `#include` statements to name the file containing the
177 * base FreeType~2 API.
178 *
179 */
180#define FT_FREETYPE_H <freetype/freetype.h>
181
182
183 /**************************************************************************
184 *
185 * @macro:
186 * FT_ERRORS_H
187 *
188 * @description:
189 * A macro used in `#include` statements to name the file containing the
190 * list of FreeType~2 error codes (and messages).
191 *
192 * It is included by @FT_FREETYPE_H.
193 *
194 */
195#define FT_ERRORS_H <freetype/fterrors.h>
196
197
198 /**************************************************************************
199 *
200 * @macro:
201 * FT_MODULE_ERRORS_H
202 *
203 * @description:
204 * A macro used in `#include` statements to name the file containing the
205 * list of FreeType~2 module error offsets (and messages).
206 *
207 */
208#define FT_MODULE_ERRORS_H <freetype/ftmoderr.h>
209
210
211 /**************************************************************************
212 *
213 * @macro:
214 * FT_SYSTEM_H
215 *
216 * @description:
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
219 * and stream i/o).
220 *
221 * It is included by @FT_FREETYPE_H.
222 *
223 */
224#define FT_SYSTEM_H <freetype/ftsystem.h>
225
226
227 /**************************************************************************
228 *
229 * @macro:
230 * FT_IMAGE_H
231 *
232 * @description:
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).
236 *
237 * It is included by @FT_FREETYPE_H.
238 *
239 */
240#define FT_IMAGE_H <freetype/ftimage.h>
241
242
243 /**************************************************************************
244 *
245 * @macro:
246 * FT_TYPES_H
247 *
248 * @description:
249 * A macro used in `#include` statements to name the file containing the
250 * basic data types defined by FreeType~2.
251 *
252 * It is included by @FT_FREETYPE_H.
253 *
254 */
255#define FT_TYPES_H <freetype/fttypes.h>
256
257
258 /**************************************************************************
259 *
260 * @macro:
261 * FT_LIST_H
262 *
263 * @description:
264 * A macro used in `#include` statements to name the file containing the
265 * list management API of FreeType~2.
266 *
267 * (Most applications will never need to include this file.)
268 *
269 */
270#define FT_LIST_H <freetype/ftlist.h>
271
272
273 /**************************************************************************
274 *
275 * @macro:
276 * FT_OUTLINE_H
277 *
278 * @description:
279 * A macro used in `#include` statements to name the file containing the
280 * scalable outline management API of FreeType~2.
281 *
282 */
283#define FT_OUTLINE_H <freetype/ftoutln.h>
284
285
286 /**************************************************************************
287 *
288 * @macro:
289 * FT_SIZES_H
290 *
291 * @description:
292 * A macro used in `#include` statements to name the file containing the
293 * API which manages multiple @FT_Size objects per face.
294 *
295 */
296#define FT_SIZES_H <freetype/ftsizes.h>
297
298
299 /**************************************************************************
300 *
301 * @macro:
302 * FT_MODULE_H
303 *
304 * @description:
305 * A macro used in `#include` statements to name the file containing the
306 * module management API of FreeType~2.
307 *
308 */
309#define FT_MODULE_H <freetype/ftmodapi.h>
310
311
312 /**************************************************************************
313 *
314 * @macro:
315 * FT_RENDER_H
316 *
317 * @description:
318 * A macro used in `#include` statements to name the file containing the
319 * renderer module management API of FreeType~2.
320 *
321 */
322#define FT_RENDER_H <freetype/ftrender.h>
323
324
325 /**************************************************************************
326 *
327 * @macro:
328 * FT_DRIVER_H
329 *
330 * @description:
331 * A macro used in `#include` statements to name the file containing
332 * structures and macros related to the driver modules.
333 *
334 */
335#define FT_DRIVER_H <freetype/ftdriver.h>
336
337
338 /**************************************************************************
339 *
340 * @macro:
341 * FT_AUTOHINTER_H
342 *
343 * @description:
344 * A macro used in `#include` statements to name the file containing
345 * structures and macros related to the auto-hinting module.
346 *
347 * Deprecated since version~2.9; use @FT_DRIVER_H instead.
348 *
349 */
350#define FT_AUTOHINTER_H FT_DRIVER_H
351
352
353 /**************************************************************************
354 *
355 * @macro:
356 * FT_CFF_DRIVER_H
357 *
358 * @description:
359 * A macro used in `#include` statements to name the file containing
360 * structures and macros related to the CFF driver module.
361 *
362 * Deprecated since version~2.9; use @FT_DRIVER_H instead.
363 *
364 */
365#define FT_CFF_DRIVER_H FT_DRIVER_H
366
367
368 /**************************************************************************
369 *
370 * @macro:
371 * FT_TRUETYPE_DRIVER_H
372 *
373 * @description:
374 * A macro used in `#include` statements to name the file containing
375 * structures and macros related to the TrueType driver module.
376 *
377 * Deprecated since version~2.9; use @FT_DRIVER_H instead.
378 *
379 */
380#define FT_TRUETYPE_DRIVER_H FT_DRIVER_H
381
382
383 /**************************************************************************
384 *
385 * @macro:
386 * FT_PCF_DRIVER_H
387 *
388 * @description:
389 * A macro used in `#include` statements to name the file containing
390 * structures and macros related to the PCF driver module.
391 *
392 * Deprecated since version~2.9; use @FT_DRIVER_H instead.
393 *
394 */
395#define FT_PCF_DRIVER_H FT_DRIVER_H
396
397
398 /**************************************************************************
399 *
400 * @macro:
401 * FT_TYPE1_TABLES_H
402 *
403 * @description:
404 * A macro used in `#include` statements to name the file containing the
405 * types and API specific to the Type~1 format.
406 *
407 */
408#define FT_TYPE1_TABLES_H <freetype/t1tables.h>
409
410
411 /**************************************************************************
412 *
413 * @macro:
414 * FT_TRUETYPE_IDS_H
415 *
416 * @description:
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.
421 *
422 */
423#define FT_TRUETYPE_IDS_H <freetype/ttnameid.h>
424
425
426 /**************************************************************************
427 *
428 * @macro:
429 * FT_TRUETYPE_TABLES_H
430 *
431 * @description:
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.
434 *
435 */
436#define FT_TRUETYPE_TABLES_H <freetype/tttables.h>
437
438
439 /**************************************************************************
440 *
441 * @macro:
442 * FT_TRUETYPE_TAGS_H
443 *
444 * @description:
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).
448 *
449 */
450#define FT_TRUETYPE_TAGS_H <freetype/tttags.h>
451
452
453 /**************************************************************************
454 *
455 * @macro:
456 * FT_BDF_H
457 *
458 * @description:
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.
461 *
462 */
463#define FT_BDF_H <freetype/ftbdf.h>
464
465
466 /**************************************************************************
467 *
468 * @macro:
469 * FT_CID_H
470 *
471 * @description:
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.
474 *
475 */
476#define FT_CID_H <freetype/ftcid.h>
477
478
479 /**************************************************************************
480 *
481 * @macro:
482 * FT_GZIP_H
483 *
484 * @description:
485 * A macro used in `#include` statements to name the file containing the
486 * definitions of an API which supports gzip-compressed files.
487 *
488 */
489#define FT_GZIP_H <freetype/ftgzip.h>
490
491
492 /**************************************************************************
493 *
494 * @macro:
495 * FT_LZW_H
496 *
497 * @description:
498 * A macro used in `#include` statements to name the file containing the
499 * definitions of an API which supports LZW-compressed files.
500 *
501 */
502#define FT_LZW_H <freetype/ftlzw.h>
503
504
505 /**************************************************************************
506 *
507 * @macro:
508 * FT_BZIP2_H
509 *
510 * @description:
511 * A macro used in `#include` statements to name the file containing the
512 * definitions of an API which supports bzip2-compressed files.
513 *
514 */
515#define FT_BZIP2_H <freetype/ftbzip2.h>
516
517
518 /**************************************************************************
519 *
520 * @macro:
521 * FT_WINFONTS_H
522 *
523 * @description:
524 * A macro used in `#include` statements to name the file containing the
525 * definitions of an API which supports Windows FNT files.
526 *
527 */
528#define FT_WINFONTS_H <freetype/ftwinfnt.h>
529
530
531 /**************************************************************************
532 *
533 * @macro:
534 * FT_GLYPH_H
535 *
536 * @description:
537 * A macro used in `#include` statements to name the file containing the
538 * API of the optional glyph management component.
539 *
540 */
541#define FT_GLYPH_H <freetype/ftglyph.h>
542
543
544 /**************************************************************************
545 *
546 * @macro:
547 * FT_BITMAP_H
548 *
549 * @description:
550 * A macro used in `#include` statements to name the file containing the
551 * API of the optional bitmap conversion component.
552 *
553 */
554#define FT_BITMAP_H <freetype/ftbitmap.h>
555
556
557 /**************************************************************************
558 *
559 * @macro:
560 * FT_BBOX_H
561 *
562 * @description:
563 * A macro used in `#include` statements to name the file containing the
564 * API of the optional exact bounding box computation routines.
565 *
566 */
567#define FT_BBOX_H <freetype/ftbbox.h>
568
569
570 /**************************************************************************
571 *
572 * @macro:
573 * FT_CACHE_H
574 *
575 * @description:
576 * A macro used in `#include` statements to name the file containing the
577 * API of the optional FreeType~2 cache sub-system.
578 *
579 */
580#define FT_CACHE_H <freetype/ftcache.h>
581
582
583 /**************************************************************************
584 *
585 * @macro:
586 * FT_MAC_H
587 *
588 * @description:
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.
592 *
593 * This header file must be explicitly included by client applications
594 * compiled on the Mac (note that the base API still works though).
595 *
596 */
597#define FT_MAC_H <freetype/ftmac.h>
598
599
600 /**************************************************************************
601 *
602 * @macro:
603 * FT_MULTIPLE_MASTERS_H
604 *
605 * @description:
606 * A macro used in `#include` statements to name the file containing the
607 * optional multiple-masters management API of FreeType~2.
608 *
609 */
610#define FT_MULTIPLE_MASTERS_H <freetype/ftmm.h>
611
612
613 /**************************************************************************
614 *
615 * @macro:
616 * FT_SFNT_NAMES_H
617 *
618 * @description:
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).
622 *
623 */
624#define FT_SFNT_NAMES_H <freetype/ftsnames.h>
625
626
627 /**************************************************************************
628 *
629 * @macro:
630 * FT_OPENTYPE_VALIDATE_H
631 *
632 * @description:
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').
636 *
637 */
638#define FT_OPENTYPE_VALIDATE_H <freetype/ftotval.h>
639
640
641 /**************************************************************************
642 *
643 * @macro:
644 * FT_GX_VALIDATE_H
645 *
646 * @description:
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').
650 *
651 */
652#define FT_GX_VALIDATE_H <freetype/ftgxval.h>
653
654
655 /**************************************************************************
656 *
657 * @macro:
658 * FT_PFR_H
659 *
660 * @description:
661 * A macro used in `#include` statements to name the file containing the
662 * FreeType~2 API which accesses PFR-specific data.
663 *
664 */
665#define FT_PFR_H <freetype/ftpfr.h>
666
667
668 /**************************************************************************
669 *
670 * @macro:
671 * FT_STROKER_H
672 *
673 * @description:
674 * A macro used in `#include` statements to name the file containing the
675 * FreeType~2 API which provides functions to stroke outline paths.
676 */
677#define FT_STROKER_H <freetype/ftstroke.h>
678
679
680 /**************************************************************************
681 *
682 * @macro:
683 * FT_SYNTHESIS_H
684 *
685 * @description:
686 * A macro used in `#include` statements to name the file containing the
687 * FreeType~2 API which performs artificial obliquing and emboldening.
688 */
689#define FT_SYNTHESIS_H <freetype/ftsynth.h>
690
691
692 /**************************************************************************
693 *
694 * @macro:
695 * FT_FONT_FORMATS_H
696 *
697 * @description:
698 * A macro used in `#include` statements to name the file containing the
699 * FreeType~2 API which provides functions specific to font formats.
700 */
701#define FT_FONT_FORMATS_H <freetype/ftfntfmt.h>
702
703 /* deprecated */
704#define FT_XFREE86_H FT_FONT_FORMATS_H
705
706
707 /**************************************************************************
708 *
709 * @macro:
710 * FT_TRIGONOMETRY_H
711 *
712 * @description:
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).
716 */
717#define FT_TRIGONOMETRY_H <freetype/fttrigon.h>
718
719
720 /**************************************************************************
721 *
722 * @macro:
723 * FT_LCD_FILTER_H
724 *
725 * @description:
726 * A macro used in `#include` statements to name the file containing the
727 * FreeType~2 API which performs color filtering for subpixel rendering.
728 */
729#define FT_LCD_FILTER_H <freetype/ftlcdfil.h>
730
731
732 /**************************************************************************
733 *
734 * @macro:
735 * FT_INCREMENTAL_H
736 *
737 * @description:
738 * A macro used in `#include` statements to name the file containing the
739 * FreeType~2 API which performs incremental glyph loading.
740 */
741#define FT_INCREMENTAL_H <freetype/ftincrem.h>
742
743
744 /**************************************************************************
745 *
746 * @macro:
747 * FT_GASP_H
748 *
749 * @description:
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.
752 */
753#define FT_GASP_H <freetype/ftgasp.h>
754
755
756 /**************************************************************************
757 *
758 * @macro:
759 * FT_ADVANCES_H
760 *
761 * @description:
762 * A macro used in `#include` statements to name the file containing the
763 * FreeType~2 API which returns individual and ranged glyph advances.
764 */
765#define FT_ADVANCES_H <freetype/ftadvanc.h>
766
767
768 /**************************************************************************
769 *
770 * @macro:
771 * FT_COLOR_H
772 *
773 * @description:
774 * A macro used in `#include` statements to name the file containing the
775 * FreeType~2 API which handles the OpenType 'CPAL' table.
776 */
777#define FT_COLOR_H <freetype/ftcolor.h>
778
779
780 /**************************************************************************
781 *
782 * @macro:
783 * FT_OTSVG_H
784 *
785 * @description:
786 * A macro used in `#include` statements to name the file containing the
787 * FreeType~2 API which handles the OpenType 'SVG~' glyphs.
788 */
789#define FT_OTSVG_H <freetype/otsvg.h>
790
791
792 /* */
793
794 /* These header files don't need to be included by the user. */
795#define FT_ERROR_DEFINITIONS_H <freetype/fterrdef.h>
796#define FT_PARAMETER_TAGS_H <freetype/ftparams.h>
797
798 /* Deprecated macros. */
799#define FT_UNPATENTED_HINTING_H <freetype/ftparams.h>
800#define FT_TRUETYPE_UNPATENTED_H <freetype/ftparams.h>
801
802 /* `FT_CACHE_H` is the only header file needed for the cache subsystem. */
803#define FT_CACHE_IMAGE_H FT_CACHE_H
804#define FT_CACHE_SMALL_BITMAPS_H FT_CACHE_H
805#define FT_CACHE_CHARMAP_H FT_CACHE_H
806
807 /* The internals of the cache sub-system are no longer exposed. We */
808 /* default to `FT_CACHE_H` at the moment just in case, but we know */
809 /* of no rogue client that uses them. */
810 /* */
811#define FT_CACHE_MANAGER_H FT_CACHE_H
812#define FT_CACHE_INTERNAL_MRU_H FT_CACHE_H
813#define FT_CACHE_INTERNAL_MANAGER_H FT_CACHE_H
814#define FT_CACHE_INTERNAL_CACHE_H FT_CACHE_H
815#define FT_CACHE_INTERNAL_GLYPH_H FT_CACHE_H
816#define FT_CACHE_INTERNAL_IMAGE_H FT_CACHE_H
817#define FT_CACHE_INTERNAL_SBITS_H FT_CACHE_H
818
819/* TODO(david): Move this section below to a different header */
820#ifdef FT2_BUILD_LIBRARY
821#if defined( _MSC_VER ) /* Visual C++ (and Intel C++) */
822
823 /* We disable the warning `conditional expression is constant' here */
824 /* in order to compile cleanly with the maximum level of warnings. */
825 /* In particular, the warning complains about stuff like `while(0)' */
826 /* which is very useful in macro definitions. There is no benefit */
827 /* in having it enabled. */
828#pragma warning( disable : 4127 )
829
830#endif /* _MSC_VER */
831#endif /* FT2_BUILD_LIBRARY */
832
833#endif /* FTHEADER_H_ */
834
835
836/* END */
837