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