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