1 2<!doctype html> 3<html lang="en" class="no-js"> 4 <head> 5 6 <meta charset="utf-8"> 7 <meta name="viewport" content="width=device-width,initial-scale=1"> 8 9 <meta name="description" content="API Reference Documentation for FreeType-2.12.1"> 10 11 12 13 <meta name="author" content="FreeType Contributors"> 14 15 16 <link rel="icon" href="images/favico.ico"> 17 <meta name="generator" content="mkdocs-1.2.1, mkdocs-material-7.1.9"> 18 19 20 21 <title>Driver properties - FreeType-2.12.1 API Reference</title> 22 23 24 25 <link rel="stylesheet" href="assets/stylesheets/main.ca7ac06f.min.css"> 26 27 28 <link rel="stylesheet" href="assets/stylesheets/palette.f1a3b89f.min.css"> 29 30 31 32 <meta name="theme-color" content="#4cae4f"> 33 34 35 36 37 38 39 40 <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> 41 <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Noto+Serif:300,400,400i,700%7CRoboto+Mono&display=fallback"> 42 <style>:root{--md-text-font-family:"Noto Serif";--md-code-font-family:"Roboto Mono"}</style> 43 44 45 46 47 <link rel="stylesheet" href="stylesheets/extra.css"> 48 49 50 51 52 53 54 55 </head> 56 57 58 59 60 61 62 63 <body dir="ltr" data-md-color-scheme="" data-md-color-primary="green" data-md-color-accent="green"> 64 65 66 <script>function __prefix(e){return new URL(".",location).pathname+"."+e}function __get(e,t=localStorage){return JSON.parse(t.getItem(__prefix(e)))}</script> 67 68 <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> 69 <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> 70 <label class="md-overlay" for="__drawer"></label> 71 <div data-md-component="skip"> 72 73 74 <a href="#driver-properties" class="md-skip"> 75 Skip to content 76 </a> 77 78 </div> 79 <div data-md-component="announce"> 80 81 </div> 82 83 <header class="md-header" data-md-component="header"> 84 <nav class="md-header__inner md-grid" aria-label="Header"> 85 <a href="index.html" title="FreeType-2.12.1 API Reference" class="md-header__button md-logo" aria-label="FreeType-2.12.1 API Reference" data-md-component="logo"> 86 87 <img src="images/favico.ico" alt="logo"> 88 89 </a> 90 <label class="md-header__button md-icon" for="__drawer"> 91 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2z"/></svg> 92 </label> 93 <div class="md-header__title" data-md-component="header-title"> 94 <div class="md-header__ellipsis"> 95 <div class="md-header__topic"> 96 <span class="md-ellipsis"> 97 FreeType-2.12.1 API Reference 98 </span> 99 </div> 100 <div class="md-header__topic" data-md-component="header-topic"> 101 <span class="md-ellipsis"> 102 103 Driver properties 104 105 </span> 106 </div> 107 </div> 108 </div> 109 110 111 112 <label class="md-header__button md-icon" for="__search"> 113 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"/></svg> 114 </label> 115 116<div class="md-search" data-md-component="search" role="dialog"> 117 <label class="md-search__overlay" for="__search"></label> 118 <div class="md-search__inner" role="search"> 119 <form class="md-search__form" name="search"> 120 <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" data-md-state="active" required> 121 <label class="md-search__icon md-icon" for="__search"> 122 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"/></svg> 123 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"/></svg> 124 </label> 125 <button type="reset" class="md-search__icon md-icon" aria-label="Clear" tabindex="-1"> 126 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z"/></svg> 127 </button> 128 </form> 129 <div class="md-search__output"> 130 <div class="md-search__scrollwrap" data-md-scrollfix> 131 <div class="md-search-result" data-md-component="search-result"> 132 <div class="md-search-result__meta"> 133 Initializing search 134 </div> 135 <ol class="md-search-result__list"></ol> 136 </div> 137 </div> 138 </div> 139 </div> 140</div> 141 142 143 </nav> 144</header> 145 146 <div class="md-container" data-md-component="container"> 147 148 149 150 151 <main class="md-main" data-md-component="main"> 152 <div class="md-main__inner md-grid"> 153 154 155 156 <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" > 157 <div class="md-sidebar__scrollwrap"> 158 <div class="md-sidebar__inner"> 159 160 161 162<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0"> 163 <label class="md-nav__title" for="__drawer"> 164 <a href="index.html" title="FreeType-2.12.1 API Reference" class="md-nav__button md-logo" aria-label="FreeType-2.12.1 API Reference" data-md-component="logo"> 165 166 <img src="images/favico.ico" alt="logo"> 167 168 </a> 169 FreeType-2.12.1 API Reference 170 </label> 171 172 <ul class="md-nav__list" data-md-scrollfix> 173 174 175 176 177 178 179 180 181 <li class="md-nav__item"> 182 <a href="index.html" class="md-nav__link"> 183 TOC 184 </a> 185 </li> 186 187 188 189 190 191 192 193 194 195 196 <li class="md-nav__item"> 197 <a href="ft2-index.html" class="md-nav__link"> 198 Index 199 </a> 200 </li> 201 202 203 204 205 206 207 208 209 210 211 212 <li class="md-nav__item md-nav__item--nested"> 213 214 215 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_3" type="checkbox" id="__nav_3" > 216 217 <label class="md-nav__link" for="__nav_3"> 218 General Remarks 219 <span class="md-nav__icon md-icon"></span> 220 </label> 221 <nav class="md-nav" aria-label="General Remarks" data-md-level="1"> 222 <label class="md-nav__title" for="__nav_3"> 223 <span class="md-nav__icon md-icon"></span> 224 General Remarks 225 </label> 226 <ul class="md-nav__list" data-md-scrollfix> 227 228 229 230 231 232 <li class="md-nav__item"> 233 <a href="ft2-preamble.html" class="md-nav__link"> 234 Preamble 235 </a> 236 </li> 237 238 239 240 241 242 243 244 <li class="md-nav__item"> 245 <a href="ft2-header_inclusion.html" class="md-nav__link"> 246 FreeType's header inclusion scheme 247 </a> 248 </li> 249 250 251 252 253 254 255 256 <li class="md-nav__item"> 257 <a href="ft2-user_allocation.html" class="md-nav__link"> 258 User allocation 259 </a> 260 </li> 261 262 263 264 </ul> 265 </nav> 266 </li> 267 268 269 270 271 272 273 274 275 276 277 278 <li class="md-nav__item md-nav__item--nested"> 279 280 281 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_4" type="checkbox" id="__nav_4" > 282 283 <label class="md-nav__link" for="__nav_4"> 284 Core API 285 <span class="md-nav__icon md-icon"></span> 286 </label> 287 <nav class="md-nav" aria-label="Core API" data-md-level="1"> 288 <label class="md-nav__title" for="__nav_4"> 289 <span class="md-nav__icon md-icon"></span> 290 Core API 291 </label> 292 <ul class="md-nav__list" data-md-scrollfix> 293 294 295 296 297 298 <li class="md-nav__item"> 299 <a href="ft2-version.html" class="md-nav__link"> 300 FreeType Version 301 </a> 302 </li> 303 304 305 306 307 308 309 310 <li class="md-nav__item"> 311 <a href="ft2-basic_types.html" class="md-nav__link"> 312 Basic Data Types 313 </a> 314 </li> 315 316 317 318 319 320 321 322 <li class="md-nav__item"> 323 <a href="ft2-base_interface.html" class="md-nav__link"> 324 Base Interface 325 </a> 326 </li> 327 328 329 330 331 332 333 334 <li class="md-nav__item"> 335 <a href="ft2-glyph_variants.html" class="md-nav__link"> 336 Unicode Variation Sequences 337 </a> 338 </li> 339 340 341 342 343 344 345 346 <li class="md-nav__item"> 347 <a href="ft2-color_management.html" class="md-nav__link"> 348 Glyph Color Management 349 </a> 350 </li> 351 352 353 354 355 356 357 358 <li class="md-nav__item"> 359 <a href="ft2-layer_management.html" class="md-nav__link"> 360 Glyph Layer Management 361 </a> 362 </li> 363 364 365 366 367 368 369 370 <li class="md-nav__item"> 371 <a href="ft2-glyph_management.html" class="md-nav__link"> 372 Glyph Management 373 </a> 374 </li> 375 376 377 378 379 380 381 382 <li class="md-nav__item"> 383 <a href="ft2-mac_specific.html" class="md-nav__link"> 384 Mac Specific Interface 385 </a> 386 </li> 387 388 389 390 391 392 393 394 <li class="md-nav__item"> 395 <a href="ft2-sizes_management.html" class="md-nav__link"> 396 Size Management 397 </a> 398 </li> 399 400 401 402 403 404 405 406 <li class="md-nav__item"> 407 <a href="ft2-header_file_macros.html" class="md-nav__link"> 408 Header File Macros 409 </a> 410 </li> 411 412 413 414 </ul> 415 </nav> 416 </li> 417 418 419 420 421 422 423 424 425 426 427 428 <li class="md-nav__item md-nav__item--nested"> 429 430 431 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_5" type="checkbox" id="__nav_5" > 432 433 <label class="md-nav__link" for="__nav_5"> 434 Format-Specific API 435 <span class="md-nav__icon md-icon"></span> 436 </label> 437 <nav class="md-nav" aria-label="Format-Specific API" data-md-level="1"> 438 <label class="md-nav__title" for="__nav_5"> 439 <span class="md-nav__icon md-icon"></span> 440 Format-Specific API 441 </label> 442 <ul class="md-nav__list" data-md-scrollfix> 443 444 445 446 447 448 <li class="md-nav__item"> 449 <a href="ft2-multiple_masters.html" class="md-nav__link"> 450 Multiple Masters 451 </a> 452 </li> 453 454 455 456 457 458 459 460 <li class="md-nav__item"> 461 <a href="ft2-truetype_tables.html" class="md-nav__link"> 462 TrueType Tables 463 </a> 464 </li> 465 466 467 468 469 470 471 472 <li class="md-nav__item"> 473 <a href="ft2-type1_tables.html" class="md-nav__link"> 474 Type 1 Tables 475 </a> 476 </li> 477 478 479 480 481 482 483 484 <li class="md-nav__item"> 485 <a href="ft2-sfnt_names.html" class="md-nav__link"> 486 SFNT Names 487 </a> 488 </li> 489 490 491 492 493 494 495 496 <li class="md-nav__item"> 497 <a href="ft2-bdf_fonts.html" class="md-nav__link"> 498 BDF and PCF Files 499 </a> 500 </li> 501 502 503 504 505 506 507 508 <li class="md-nav__item"> 509 <a href="ft2-cid_fonts.html" class="md-nav__link"> 510 CID Fonts 511 </a> 512 </li> 513 514 515 516 517 518 519 520 <li class="md-nav__item"> 521 <a href="ft2-pfr_fonts.html" class="md-nav__link"> 522 PFR Fonts 523 </a> 524 </li> 525 526 527 528 529 530 531 532 <li class="md-nav__item"> 533 <a href="ft2-winfnt_fonts.html" class="md-nav__link"> 534 Window FNT Files 535 </a> 536 </li> 537 538 539 540 541 542 543 544 <li class="md-nav__item"> 545 <a href="ft2-svg_fonts.html" class="md-nav__link"> 546 OpenType SVG Fonts 547 </a> 548 </li> 549 550 551 552 553 554 555 556 <li class="md-nav__item"> 557 <a href="ft2-font_formats.html" class="md-nav__link"> 558 Font Formats 559 </a> 560 </li> 561 562 563 564 565 566 567 568 <li class="md-nav__item"> 569 <a href="ft2-gasp_table.html" class="md-nav__link"> 570 Gasp Table 571 </a> 572 </li> 573 574 575 576 </ul> 577 </nav> 578 </li> 579 580 581 582 583 584 585 586 587 588 589 590 591 592 <li class="md-nav__item md-nav__item--active md-nav__item--nested"> 593 594 595 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_6" type="checkbox" id="__nav_6" checked> 596 597 <label class="md-nav__link" for="__nav_6"> 598 Controlling FreeType Modules 599 <span class="md-nav__icon md-icon"></span> 600 </label> 601 <nav class="md-nav" aria-label="Controlling FreeType Modules" data-md-level="1"> 602 <label class="md-nav__title" for="__nav_6"> 603 <span class="md-nav__icon md-icon"></span> 604 Controlling FreeType Modules 605 </label> 606 <ul class="md-nav__list" data-md-scrollfix> 607 608 609 610 611 612 <li class="md-nav__item"> 613 <a href="ft2-auto_hinter.html" class="md-nav__link"> 614 The auto-hinter 615 </a> 616 </li> 617 618 619 620 621 622 623 624 <li class="md-nav__item"> 625 <a href="ft2-cff_driver.html" class="md-nav__link"> 626 The CFF driver 627 </a> 628 </li> 629 630 631 632 633 634 635 636 <li class="md-nav__item"> 637 <a href="ft2-t1_cid_driver.html" class="md-nav__link"> 638 The Type 1 and CID drivers 639 </a> 640 </li> 641 642 643 644 645 646 647 648 <li class="md-nav__item"> 649 <a href="ft2-tt_driver.html" class="md-nav__link"> 650 The TrueType driver 651 </a> 652 </li> 653 654 655 656 657 658 659 660 <li class="md-nav__item"> 661 <a href="ft2-pcf_driver.html" class="md-nav__link"> 662 The PCF driver 663 </a> 664 </li> 665 666 667 668 669 670 671 672 <li class="md-nav__item"> 673 <a href="ft2-ot_svg_driver.html" class="md-nav__link"> 674 The SVG driver 675 </a> 676 </li> 677 678 679 680 681 682 683 684 685 686 <li class="md-nav__item md-nav__item--active"> 687 688 <input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc"> 689 690 691 692 693 694 <label class="md-nav__link md-nav__link--active" for="__toc"> 695 Driver properties 696 <span class="md-nav__icon md-icon"></span> 697 </label> 698 699 <a href="ft2-properties.html" class="md-nav__link md-nav__link--active"> 700 Driver properties 701 </a> 702 703 704<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> 705 706 707 708 709 710 711 <label class="md-nav__title" for="__toc"> 712 <span class="md-nav__icon md-icon"></span> 713 Table of contents 714 </label> 715 <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> 716 717 <li class="md-nav__item"> 718 <a href="#synopsis" class="md-nav__link"> 719 Synopsis 720 </a> 721 722</li> 723 724 <li class="md-nav__item"> 725 <a href="#ft_hinting_xxx" class="md-nav__link"> 726 FT_HINTING_XXX 727 </a> 728 729</li> 730 731 <li class="md-nav__item"> 732 <a href="#hinting-engine" class="md-nav__link"> 733 hinting-engine 734 </a> 735 736</li> 737 738 <li class="md-nav__item"> 739 <a href="#no-stem-darkening" class="md-nav__link"> 740 no-stem-darkening 741 </a> 742 743</li> 744 745 <li class="md-nav__item"> 746 <a href="#darkening-parameters" class="md-nav__link"> 747 darkening-parameters 748 </a> 749 750</li> 751 752 <li class="md-nav__item"> 753 <a href="#random-seed" class="md-nav__link"> 754 random-seed 755 </a> 756 757</li> 758 759 <li class="md-nav__item"> 760 <a href="#no-long-family-names" class="md-nav__link"> 761 no-long-family-names 762 </a> 763 764</li> 765 766 <li class="md-nav__item"> 767 <a href="#tt_interpreter_version_xxx" class="md-nav__link"> 768 TT_INTERPRETER_VERSION_XXX 769 </a> 770 771</li> 772 773 <li class="md-nav__item"> 774 <a href="#interpreter-version" class="md-nav__link"> 775 interpreter-version 776 </a> 777 778</li> 779 780 <li class="md-nav__item"> 781 <a href="#svg-hooks" class="md-nav__link"> 782 svg-hooks 783 </a> 784 785</li> 786 787 <li class="md-nav__item"> 788 <a href="#glyph-to-script-map" class="md-nav__link"> 789 glyph-to-script-map 790 </a> 791 792</li> 793 794 <li class="md-nav__item"> 795 <a href="#ft_autohinter_script_xxx" class="md-nav__link"> 796 FT_AUTOHINTER_SCRIPT_XXX 797 </a> 798 799</li> 800 801 <li class="md-nav__item"> 802 <a href="#ft_prop_glyphtoscriptmap" class="md-nav__link"> 803 FT_Prop_GlyphToScriptMap 804 </a> 805 806</li> 807 808 <li class="md-nav__item"> 809 <a href="#fallback-script" class="md-nav__link"> 810 fallback-script 811 </a> 812 813</li> 814 815 <li class="md-nav__item"> 816 <a href="#default-script" class="md-nav__link"> 817 default-script 818 </a> 819 820</li> 821 822 <li class="md-nav__item"> 823 <a href="#increase-x-height" class="md-nav__link"> 824 increase-x-height 825 </a> 826 827</li> 828 829 <li class="md-nav__item"> 830 <a href="#ft_prop_increasexheight" class="md-nav__link"> 831 FT_Prop_IncreaseXHeight 832 </a> 833 834</li> 835 836 <li class="md-nav__item"> 837 <a href="#warping" class="md-nav__link"> 838 warping 839 </a> 840 841</li> 842 843 </ul> 844 845</nav> 846 847 </li> 848 849 850 851 852 853 854 855 <li class="md-nav__item"> 856 <a href="ft2-parameter_tags.html" class="md-nav__link"> 857 Parameter Tags 858 </a> 859 </li> 860 861 862 863 864 865 866 867 <li class="md-nav__item"> 868 <a href="ft2-lcd_rendering.html" class="md-nav__link"> 869 Subpixel Rendering 870 </a> 871 </li> 872 873 874 875 </ul> 876 </nav> 877 </li> 878 879 880 881 882 883 884 885 886 887 888 889 <li class="md-nav__item md-nav__item--nested"> 890 891 892 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_7" type="checkbox" id="__nav_7" > 893 894 <label class="md-nav__link" for="__nav_7"> 895 Cache Sub-System 896 <span class="md-nav__icon md-icon"></span> 897 </label> 898 <nav class="md-nav" aria-label="Cache Sub-System" data-md-level="1"> 899 <label class="md-nav__title" for="__nav_7"> 900 <span class="md-nav__icon md-icon"></span> 901 Cache Sub-System 902 </label> 903 <ul class="md-nav__list" data-md-scrollfix> 904 905 906 907 908 909 <li class="md-nav__item"> 910 <a href="ft2-cache_subsystem.html" class="md-nav__link"> 911 Cache Sub-System 912 </a> 913 </li> 914 915 916 917 </ul> 918 </nav> 919 </li> 920 921 922 923 924 925 926 927 928 929 930 931 <li class="md-nav__item md-nav__item--nested"> 932 933 934 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_8" type="checkbox" id="__nav_8" > 935 936 <label class="md-nav__link" for="__nav_8"> 937 Support API 938 <span class="md-nav__icon md-icon"></span> 939 </label> 940 <nav class="md-nav" aria-label="Support API" data-md-level="1"> 941 <label class="md-nav__title" for="__nav_8"> 942 <span class="md-nav__icon md-icon"></span> 943 Support API 944 </label> 945 <ul class="md-nav__list" data-md-scrollfix> 946 947 948 949 950 951 <li class="md-nav__item"> 952 <a href="ft2-computations.html" class="md-nav__link"> 953 Computations 954 </a> 955 </li> 956 957 958 959 960 961 962 963 <li class="md-nav__item"> 964 <a href="ft2-list_processing.html" class="md-nav__link"> 965 List Processing 966 </a> 967 </li> 968 969 970 971 972 973 974 975 <li class="md-nav__item"> 976 <a href="ft2-outline_processing.html" class="md-nav__link"> 977 Outline Processing 978 </a> 979 </li> 980 981 982 983 984 985 986 987 <li class="md-nav__item"> 988 <a href="ft2-quick_advance.html" class="md-nav__link"> 989 Quick retrieval of advance values 990 </a> 991 </li> 992 993 994 995 996 997 998 999 <li class="md-nav__item"> 1000 <a href="ft2-bitmap_handling.html" class="md-nav__link"> 1001 Bitmap Handling 1002 </a> 1003 </li> 1004 1005 1006 1007 1008 1009 1010 1011 <li class="md-nav__item"> 1012 <a href="ft2-raster.html" class="md-nav__link"> 1013 Scanline Converter 1014 </a> 1015 </li> 1016 1017 1018 1019 1020 1021 1022 1023 <li class="md-nav__item"> 1024 <a href="ft2-glyph_stroker.html" class="md-nav__link"> 1025 Glyph Stroker 1026 </a> 1027 </li> 1028 1029 1030 1031 1032 1033 1034 1035 <li class="md-nav__item"> 1036 <a href="ft2-system_interface.html" class="md-nav__link"> 1037 System Interface 1038 </a> 1039 </li> 1040 1041 1042 1043 1044 1045 1046 1047 <li class="md-nav__item"> 1048 <a href="ft2-module_management.html" class="md-nav__link"> 1049 Module Management 1050 </a> 1051 </li> 1052 1053 1054 1055 1056 1057 1058 1059 <li class="md-nav__item"> 1060 <a href="ft2-gzip.html" class="md-nav__link"> 1061 GZIP Streams 1062 </a> 1063 </li> 1064 1065 1066 1067 1068 1069 1070 1071 <li class="md-nav__item"> 1072 <a href="ft2-lzw.html" class="md-nav__link"> 1073 LZW Streams 1074 </a> 1075 </li> 1076 1077 1078 1079 1080 1081 1082 1083 <li class="md-nav__item"> 1084 <a href="ft2-bzip2.html" class="md-nav__link"> 1085 BZIP2 Streams 1086 </a> 1087 </li> 1088 1089 1090 1091 1092 1093 1094 1095 <li class="md-nav__item"> 1096 <a href="ft2-debugging_apis.html" class="md-nav__link"> 1097 External Debugging APIs 1098 </a> 1099 </li> 1100 1101 1102 1103 </ul> 1104 </nav> 1105 </li> 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 <li class="md-nav__item md-nav__item--nested"> 1118 1119 1120 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_9" type="checkbox" id="__nav_9" > 1121 1122 <label class="md-nav__link" for="__nav_9"> 1123 Error Codes 1124 <span class="md-nav__icon md-icon"></span> 1125 </label> 1126 <nav class="md-nav" aria-label="Error Codes" data-md-level="1"> 1127 <label class="md-nav__title" for="__nav_9"> 1128 <span class="md-nav__icon md-icon"></span> 1129 Error Codes 1130 </label> 1131 <ul class="md-nav__list" data-md-scrollfix> 1132 1133 1134 1135 1136 1137 <li class="md-nav__item"> 1138 <a href="ft2-error_enumerations.html" class="md-nav__link"> 1139 Error Enumerations 1140 </a> 1141 </li> 1142 1143 1144 1145 1146 1147 1148 1149 <li class="md-nav__item"> 1150 <a href="ft2-error_code_values.html" class="md-nav__link"> 1151 Error Code Values 1152 </a> 1153 </li> 1154 1155 1156 1157 </ul> 1158 </nav> 1159 </li> 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 <li class="md-nav__item md-nav__item--nested"> 1172 1173 1174 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_10" type="checkbox" id="__nav_10" > 1175 1176 <label class="md-nav__link" for="__nav_10"> 1177 Miscellaneous 1178 <span class="md-nav__icon md-icon"></span> 1179 </label> 1180 <nav class="md-nav" aria-label="Miscellaneous" data-md-level="1"> 1181 <label class="md-nav__title" for="__nav_10"> 1182 <span class="md-nav__icon md-icon"></span> 1183 Miscellaneous 1184 </label> 1185 <ul class="md-nav__list" data-md-scrollfix> 1186 1187 1188 1189 1190 1191 <li class="md-nav__item"> 1192 <a href="ft2-gx_validation.html" class="md-nav__link"> 1193 TrueTypeGX/AAT Validation 1194 </a> 1195 </li> 1196 1197 1198 1199 1200 1201 1202 1203 <li class="md-nav__item"> 1204 <a href="ft2-incremental.html" class="md-nav__link"> 1205 Incremental Loading 1206 </a> 1207 </li> 1208 1209 1210 1211 1212 1213 1214 1215 <li class="md-nav__item"> 1216 <a href="ft2-truetype_engine.html" class="md-nav__link"> 1217 The TrueType Engine 1218 </a> 1219 </li> 1220 1221 1222 1223 1224 1225 1226 1227 <li class="md-nav__item"> 1228 <a href="ft2-ot_validation.html" class="md-nav__link"> 1229 OpenType Validation 1230 </a> 1231 </li> 1232 1233 1234 1235 </ul> 1236 </nav> 1237 </li> 1238 1239 1240 1241 </ul> 1242</nav> 1243 </div> 1244 </div> 1245 </div> 1246 1247 1248 1249 <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" > 1250 <div class="md-sidebar__scrollwrap"> 1251 <div class="md-sidebar__inner"> 1252 1253<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> 1254 1255 1256 1257 1258 1259 1260 <label class="md-nav__title" for="__toc"> 1261 <span class="md-nav__icon md-icon"></span> 1262 Table of contents 1263 </label> 1264 <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> 1265 1266 <li class="md-nav__item"> 1267 <a href="#synopsis" class="md-nav__link"> 1268 Synopsis 1269 </a> 1270 1271</li> 1272 1273 <li class="md-nav__item"> 1274 <a href="#ft_hinting_xxx" class="md-nav__link"> 1275 FT_HINTING_XXX 1276 </a> 1277 1278</li> 1279 1280 <li class="md-nav__item"> 1281 <a href="#hinting-engine" class="md-nav__link"> 1282 hinting-engine 1283 </a> 1284 1285</li> 1286 1287 <li class="md-nav__item"> 1288 <a href="#no-stem-darkening" class="md-nav__link"> 1289 no-stem-darkening 1290 </a> 1291 1292</li> 1293 1294 <li class="md-nav__item"> 1295 <a href="#darkening-parameters" class="md-nav__link"> 1296 darkening-parameters 1297 </a> 1298 1299</li> 1300 1301 <li class="md-nav__item"> 1302 <a href="#random-seed" class="md-nav__link"> 1303 random-seed 1304 </a> 1305 1306</li> 1307 1308 <li class="md-nav__item"> 1309 <a href="#no-long-family-names" class="md-nav__link"> 1310 no-long-family-names 1311 </a> 1312 1313</li> 1314 1315 <li class="md-nav__item"> 1316 <a href="#tt_interpreter_version_xxx" class="md-nav__link"> 1317 TT_INTERPRETER_VERSION_XXX 1318 </a> 1319 1320</li> 1321 1322 <li class="md-nav__item"> 1323 <a href="#interpreter-version" class="md-nav__link"> 1324 interpreter-version 1325 </a> 1326 1327</li> 1328 1329 <li class="md-nav__item"> 1330 <a href="#svg-hooks" class="md-nav__link"> 1331 svg-hooks 1332 </a> 1333 1334</li> 1335 1336 <li class="md-nav__item"> 1337 <a href="#glyph-to-script-map" class="md-nav__link"> 1338 glyph-to-script-map 1339 </a> 1340 1341</li> 1342 1343 <li class="md-nav__item"> 1344 <a href="#ft_autohinter_script_xxx" class="md-nav__link"> 1345 FT_AUTOHINTER_SCRIPT_XXX 1346 </a> 1347 1348</li> 1349 1350 <li class="md-nav__item"> 1351 <a href="#ft_prop_glyphtoscriptmap" class="md-nav__link"> 1352 FT_Prop_GlyphToScriptMap 1353 </a> 1354 1355</li> 1356 1357 <li class="md-nav__item"> 1358 <a href="#fallback-script" class="md-nav__link"> 1359 fallback-script 1360 </a> 1361 1362</li> 1363 1364 <li class="md-nav__item"> 1365 <a href="#default-script" class="md-nav__link"> 1366 default-script 1367 </a> 1368 1369</li> 1370 1371 <li class="md-nav__item"> 1372 <a href="#increase-x-height" class="md-nav__link"> 1373 increase-x-height 1374 </a> 1375 1376</li> 1377 1378 <li class="md-nav__item"> 1379 <a href="#ft_prop_increasexheight" class="md-nav__link"> 1380 FT_Prop_IncreaseXHeight 1381 </a> 1382 1383</li> 1384 1385 <li class="md-nav__item"> 1386 <a href="#warping" class="md-nav__link"> 1387 warping 1388 </a> 1389 1390</li> 1391 1392 </ul> 1393 1394</nav> 1395 </div> 1396 </div> 1397 </div> 1398 1399 1400 <div class="md-content" data-md-component="content"> 1401 <article class="md-content__inner md-typeset"> 1402 1403 1404 1405 <p><a href="https://www.freetype.org">FreeType</a> » <a href="../">Docs</a> » <a href="index.html#controlling-freetype-modules">Controlling FreeType Modules</a> » Driver properties</p> 1406<hr /> 1407<h1 id="driver-properties">Driver properties<a class="headerlink" href="#driver-properties" title="Permanent link">¶</a></h1> 1408<h2 id="synopsis">Synopsis<a class="headerlink" href="#synopsis" title="Permanent link">¶</a></h2> 1409<p>Driver modules can be controlled by setting and unsetting properties, using the functions <code><a href="ft2-module_management.html#ft_property_set">FT_Property_Set</a></code> and <code><a href="ft2-module_management.html#ft_property_get">FT_Property_Get</a></code>. This section documents the available properties, together with auxiliary macros and structures.</p> 1410<h2 id="ft_hinting_xxx">FT_HINTING_XXX<a class="headerlink" href="#ft_hinting_xxx" title="Permanent link">¶</a></h2> 1411<p>Defined in FT_DRIVER_H (freetype/ftdriver.h).</p> 1412<div class = "codehilite"><pre><code>#<span class="keyword">define</span> <a href="ft2-properties.html#ft_hinting_freetype">FT_HINTING_FREETYPE</a> 0 1413#<span class="keyword">define</span> <a href="ft2-properties.html#ft_hinting_adobe">FT_HINTING_ADOBE</a> 1 1414 1415 /* these constants (introduced in 2.4.12) are deprecated */ 1416#<span class="keyword">define</span> FT_CFF_HINTING_FREETYPE <a href="ft2-properties.html#ft_hinting_freetype">FT_HINTING_FREETYPE</a> 1417#<span class="keyword">define</span> FT_CFF_HINTING_ADOBE <a href="ft2-properties.html#ft_hinting_adobe">FT_HINTING_ADOBE</a> 1418</code></pre></div> 1419 1420<p>A list of constants used for the <code><a href="ft2-properties.html#hinting-engine">hinting-engine</a></code> property to select the hinting engine for CFF, Type 1, and CID fonts.</p> 1421<h4>values</h4> 1422<table class="fields"> 1423<tr><td class="val" id="ft_hinting_freetype">FT_HINTING_FREETYPE</td><td class="desc"> 1424<p>Use the old FreeType hinting engine.</p> 1425</td></tr> 1426<tr><td class="val" id="ft_hinting_adobe">FT_HINTING_ADOBE</td><td class="desc"> 1427<p>Use the hinting engine contributed by Adobe.</p> 1428</td></tr> 1429</table> 1430 1431<h4>since</h4> 1432 1433<p>2.9</p> 1434<hr> 1435 1436<h2 id="hinting-engine">hinting-engine<a class="headerlink" href="#hinting-engine" title="Permanent link">¶</a></h2> 1437<p>Thanks to Adobe, which contributed a new hinting (and parsing) engine, an application can select between ‘freetype’ and ‘adobe’ if compiled with <code>CFF_CONFIG_OPTION_OLD_ENGINE</code>. If this configuration macro isn't defined, ‘hinting-engine’ does nothing.</p> 1438<p>The same holds for the Type 1 and CID modules if compiled with <code>T1_CONFIG_OPTION_OLD_ENGINE</code>.</p> 1439<p>For the ‘cff’ module, the default engine is ‘adobe’. For both the ‘type1’ and ‘t1cid’ modules, the default engine is ‘adobe’, too.</p> 1440<h4>note</h4> 1441 1442<p>This property can be used with <code><a href="ft2-module_management.html#ft_property_get">FT_Property_Get</a></code> also.</p> 1443<p>This property can be set via the <code>FREETYPE_PROPERTIES</code> environment variable (using values ‘adobe’ or ‘freetype’).</p> 1444<h4>example</h4> 1445 1446<p>The following example code demonstrates how to select Adobe's hinting engine for the ‘cff’ module (omitting the error handling). 1447<div class="highlight"><pre><span></span><code> FT_Library library; 1448 FT_UInt hinting_engine = FT_HINTING_ADOBE; 1449 1450 1451 FT_Init_FreeType( &library ); 1452 1453 FT_Property_Set( library, "cff", 1454 "hinting-engine", &hinting_engine ); 1455</code></pre></div></p> 1456<h4>since</h4> 1457 1458<p>2.4.12 (for ‘cff’ module)</p> 1459<p>2.9 (for ‘type1’ and ‘t1cid’ modules)</p> 1460<hr> 1461 1462<h2 id="no-stem-darkening">no-stem-darkening<a class="headerlink" href="#no-stem-darkening" title="Permanent link">¶</a></h2> 1463<p>All glyphs that pass through the auto-hinter will be emboldened unless this property is set to TRUE. The same is true for the CFF, Type 1, and CID font modules if the ‘Adobe’ engine is selected (which is the default).</p> 1464<p>Stem darkening emboldens glyphs at smaller sizes to make them more readable on common low-DPI screens when using linear alpha blending and gamma correction, see <code><a href="ft2-base_interface.html#ft_render_glyph">FT_Render_Glyph</a></code>. When not using linear alpha blending and gamma correction, glyphs will appear heavy and fuzzy!</p> 1465<p>Gamma correction essentially lightens fonts since shades of grey are shifted to higher pixel values (= higher brightness) to match the original intention to the reality of our screens. The side-effect is that glyphs ‘thin out’. Mac OS X and Adobe's proprietary font rendering library implement a counter-measure: stem darkening at smaller sizes where shades of gray dominate. By emboldening a glyph slightly in relation to its pixel size, individual pixels get higher coverage of filled-in outlines and are therefore ‘blacker’. This counteracts the ‘thinning out’ of glyphs, making text remain readable at smaller sizes.</p> 1466<p>For the auto-hinter, stem-darkening is experimental currently and thus switched off by default (this is, <code>no-stem-darkening</code> 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 precomputed blue zones. The smaller the size (especially 9ppem and down), the higher the loss of emboldening versus the CFF driver.</p> 1467<p>Note that stem darkening is never applied if <code><a href="ft2-base_interface.html#ft_load_xxx">FT_LOAD_NO_SCALE</a></code> is set.</p> 1468<h4>note</h4> 1469 1470<p>This property can be used with <code><a href="ft2-module_management.html#ft_property_get">FT_Property_Get</a></code> also.</p> 1471<p>This property can be set via the <code>FREETYPE_PROPERTIES</code> environment variable (using values 1 and 0 for ‘on’ and ‘off’, respectively). It can also be set per face using <code><a href="ft2-base_interface.html#ft_face_properties">FT_Face_Properties</a></code> with <code><a href="ft2-parameter_tags.html#ft_param_tag_stem_darkening">FT_PARAM_TAG_STEM_DARKENING</a></code>.</p> 1472<h4>example</h4> 1473<div class="highlight"><pre><span></span><code> FT_Library library; 1474 FT_Bool no_stem_darkening = TRUE; 1475 1476 1477 FT_Init_FreeType( &library ); 1478 1479 FT_Property_Set( library, "cff", 1480 "no-stem-darkening", &no_stem_darkening ); 1481</code></pre></div> 1482<h4>since</h4> 1483 1484<p>2.4.12 (for ‘cff’ module)</p> 1485<p>2.6.2 (for ‘autofitter’ module)</p> 1486<p>2.9 (for ‘type1’ and ‘t1cid’ modules)</p> 1487<hr> 1488 1489<h2 id="darkening-parameters">darkening-parameters<a class="headerlink" href="#darkening-parameters" title="Permanent link">¶</a></h2> 1490<p>By default, the Adobe hinting engine, as used by the CFF, Type 1, and CID font drivers, darkens stems as follows (if the <code>no-stem-darkening</code> property isn't set): 1491<div class="highlight"><pre><span></span><code> stem width <= 0.5px: darkening amount = 0.4px 1492 stem width = 1px: darkening amount = 0.275px 1493 stem width = 1.667px: darkening amount = 0.275px 1494 stem width >= 2.333px: darkening amount = 0px 1495</code></pre></div></p> 1496<p>and piecewise linear in-between. At configuration time, these four control points can be set with the macro <code>CFF_CONFIG_OPTION_DARKENING_PARAMETERS</code>; the CFF, Type 1, and CID drivers share these values. At runtime, the control points can be changed using the <code>darkening-parameters</code> property (see the example below that demonstrates this for the Type 1 driver).</p> 1497<p>The x values give the stem width, and the y values the darkening amount. The unit is 1000<sup>th</sup> of pixels. All coordinate values must be positive; the x values must be monotonically increasing; the y values must be monotonically decreasing and smaller than or equal to 500 (corresponding to half a pixel); the slope of each linear piece must be shallower than -1 (e.g., -.4).</p> 1498<p>The auto-hinter provides this property, too, as an experimental feature. See <code><a href="ft2-properties.html#no-stem-darkening">no-stem-darkening</a></code> for more.</p> 1499<h4>note</h4> 1500 1501<p>This property can be used with <code><a href="ft2-module_management.html#ft_property_get">FT_Property_Get</a></code> also.</p> 1502<p>This property can be set via the <code>FREETYPE_PROPERTIES</code> environment variable, using eight comma-separated integers without spaces. Here the above example, using <code>\</code> to break the line for readability. 1503<div class="highlight"><pre><span></span><code> FREETYPE_PROPERTIES=\ 1504 type1:darkening-parameters=500,300,1000,200,1500,100,2000,0 1505</code></pre></div></p> 1506<h4>example</h4> 1507<div class="highlight"><pre><span></span><code> FT_Library library; 1508 FT_Int darken_params[8] = { 500, 300, // x1, y1 1509 1000, 200, // x2, y2 1510 1500, 100, // x3, y3 1511 2000, 0 }; // x4, y4 1512 1513 1514 FT_Init_FreeType( &library ); 1515 1516 FT_Property_Set( library, "type1", 1517 "darkening-parameters", darken_params ); 1518</code></pre></div> 1519<h4>since</h4> 1520 1521<p>2.5.1 (for ‘cff’ module)</p> 1522<p>2.6.2 (for ‘autofitter’ module)</p> 1523<p>2.9 (for ‘type1’ and ‘t1cid’ modules)</p> 1524<hr> 1525 1526<h2 id="random-seed">random-seed<a class="headerlink" href="#random-seed" title="Permanent link">¶</a></h2> 1527<p>By default, the seed value for the CFF ‘random’ operator and the similar ‘0 28 callothersubr pop’ command for the Type 1 and CID drivers is set to a random value. However, mainly for debugging purposes, it is often necessary to use a known value as a seed so that the pseudo-random number sequences generated by ‘random’ are repeatable.</p> 1528<p>The <code>random-seed</code> property does that. Its argument is a signed 32bit integer; if the value is zero or negative, the seed given by the <code>intitialRandomSeed</code> private DICT operator in a CFF file gets used (or a default value if there is no such operator). If the value is positive, use it instead of <code>initialRandomSeed</code>, which is consequently ignored.</p> 1529<h4>note</h4> 1530 1531<p>This property can be set via the <code>FREETYPE_PROPERTIES</code> environment variable. It can also be set per face using <code><a href="ft2-base_interface.html#ft_face_properties">FT_Face_Properties</a></code> with <code><a href="ft2-parameter_tags.html#ft_param_tag_random_seed">FT_PARAM_TAG_RANDOM_SEED</a></code>.</p> 1532<h4>since</h4> 1533 1534<p>2.8 (for ‘cff’ module)</p> 1535<p>2.9 (for ‘type1’ and ‘t1cid’ modules)</p> 1536<hr> 1537 1538<h2 id="no-long-family-names">no-long-family-names<a class="headerlink" href="#no-long-family-names" title="Permanent link">¶</a></h2> 1539<p>If <code>PCF_CONFIG_OPTION_LONG_FAMILY_NAMES</code> is active while compiling FreeType, the PCF driver constructs long family names.</p> 1540<p>There are many PCF fonts just called ‘Fixed’ which look completely different, and which have nothing to do with each other. When selecting ‘Fixed’ in KDE or Gnome one gets results that appear rather random, the style changes often if one changes the size and one cannot select some fonts at all. The improve this situation, the PCF module prepends the foundry name (plus a space) to the family name. It also checks whether there are ‘wide’ characters; all put together, family names like ‘Sony Fixed’ or ‘Misc Fixed Wide’ are constructed.</p> 1541<p>If <code>no-long-family-names</code> is set, this feature gets switched off.</p> 1542<h4>note</h4> 1543 1544<p>This property can be used with <code><a href="ft2-module_management.html#ft_property_get">FT_Property_Get</a></code> also.</p> 1545<p>This property can be set via the <code>FREETYPE_PROPERTIES</code> environment variable (using values 1 and 0 for ‘on’ and ‘off’, respectively).</p> 1546<h4>example</h4> 1547<div class="highlight"><pre><span></span><code> FT_Library library; 1548 FT_Bool no_long_family_names = TRUE; 1549 1550 1551 FT_Init_FreeType( &library ); 1552 1553 FT_Property_Set( library, "pcf", 1554 "no-long-family-names", 1555 &no_long_family_names ); 1556</code></pre></div> 1557<h4>since</h4> 1558 1559<p>2.8</p> 1560<hr> 1561 1562<h2 id="tt_interpreter_version_xxx">TT_INTERPRETER_VERSION_XXX<a class="headerlink" href="#tt_interpreter_version_xxx" title="Permanent link">¶</a></h2> 1563<p>Defined in FT_DRIVER_H (freetype/ftdriver.h).</p> 1564<div class = "codehilite"><pre><code>#<span class="keyword">define</span> <a href="ft2-properties.html#tt_interpreter_version_35">TT_INTERPRETER_VERSION_35</a> 35 1565#<span class="keyword">define</span> <a href="ft2-properties.html#tt_interpreter_version_38">TT_INTERPRETER_VERSION_38</a> 38 1566#<span class="keyword">define</span> <a href="ft2-properties.html#tt_interpreter_version_40">TT_INTERPRETER_VERSION_40</a> 40 1567</code></pre></div> 1568 1569<p>A list of constants used for the <code><a href="ft2-properties.html#interpreter-version">interpreter-version</a></code> property to select the hinting engine for Truetype fonts.</p> 1570<p>The numeric value in the constant names represents the version number as returned by the ‘GETINFO’ bytecode instruction.</p> 1571<h4>values</h4> 1572<table class="fields"> 1573<tr><td class="val" id="tt_interpreter_version_35">TT_INTERPRETER_VERSION_35</td><td class="desc"> 1574<p>Version 35 corresponds to MS rasterizer v.1.7 as used e.g. in Windows 98; only grayscale and B/W rasterizing is supported.</p> 1575</td></tr> 1576<tr><td class="val" id="tt_interpreter_version_38">TT_INTERPRETER_VERSION_38</td><td class="desc"> 1577<p>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.</p> 1578</td></tr> 1579<tr><td class="val" id="tt_interpreter_version_40">TT_INTERPRETER_VERSION_40</td><td class="desc"> 1580<p>Version 40 corresponds to MS rasterizer v.2.1; it is roughly equivalent to the hinting provided by DirectWrite ClearType (as can be found, for example, in Microsoft's Edge Browser on Windows 10). It is used in FreeType to select the ‘minimal’ subpixel hinting code, a stripped-down and higher performance version of the ‘Infinality’ code.</p> 1581</td></tr> 1582</table> 1583 1584<h4>note</h4> 1585 1586<p>This property controls the behaviour of the bytecode interpreter and thus how outlines get hinted. It does <strong>not</strong> control how glyph get rasterized! In particular, it does not control subpixel color filtering.</p> 1587<p>If FreeType has not been compiled with the configuration option <code>TT_CONFIG_OPTION_SUBPIXEL_HINTING</code>, selecting version 38 or 40 causes an <code>FT_Err_Unimplemented_Feature</code> error.</p> 1588<p>Depending on the graphics framework, Microsoft uses different bytecode and rendering engines. As a consequence, the version numbers returned by a call to the ‘GETINFO’ bytecode instruction are more convoluted than desired.</p> 1589<p>Here are two tables that try to shed some light on the possible values for the MS rasterizer engine, together with the additional features introduced by it. 1590<div class="highlight"><pre><span></span><code> GETINFO framework version feature 1591 ------------------------------------------------------------------- 1592 3 GDI (Win 3.1), v1.0 16-bit, first version 1593 TrueImage 1594 33 GDI (Win NT 3.1), v1.5 32-bit 1595 HP Laserjet 1596 34 GDI (Win 95) v1.6 font smoothing, 1597 new SCANTYPE opcode 1598 35 GDI (Win 98/2000) v1.7 (UN)SCALED_COMPONENT_OFFSET 1599 bits in composite glyphs 1600 36 MGDI (Win CE 2) v1.6+ classic ClearType 1601 37 GDI (XP and later), v1.8 ClearType 1602 GDI+ old (before Vista) 1603 38 GDI+ old (Vista, Win 7), v1.9 subpixel ClearType, 1604 WPF Y-direction ClearType, 1605 additional error checking 1606 39 DWrite (before Win 8) v2.0 subpixel ClearType flags 1607 in GETINFO opcode, 1608 bug fixes 1609 40 GDI+ (after Win 7), v2.1 Y-direction ClearType flag 1610 DWrite (Win 8) in GETINFO opcode, 1611 Gray ClearType 1612</code></pre></div></p> 1613<p>The ‘version’ field gives a rough orientation only, since some applications provided certain features much earlier (as an example, Microsoft Reader used subpixel and Y-direction ClearType already in Windows 2000). Similarly, updates to a given framework might include improved hinting support. 1614<div class="highlight"><pre><span></span><code> version sampling rendering comment 1615 x y x y 1616 -------------------------------------------------------------- 1617 v1.0 normal normal B/W B/W bi-level 1618 v1.6 high high gray gray grayscale 1619 v1.8 high normal color-filter B/W (GDI) ClearType 1620 v1.9 high high color-filter gray Color ClearType 1621 v2.1 high normal gray B/W Gray ClearType 1622 v2.1 high high gray gray Gray ClearType 1623</code></pre></div></p> 1624<p>Color and Gray ClearType are the two available variants of ‘Y-direction ClearType’, meaning grayscale rasterization along the Y-direction; the name used in the TrueType specification for this feature is ‘symmetric smoothing’. ‘Classic ClearType’ is the original algorithm used before introducing a modified version in Win XP. Another name for v1.6's grayscale rendering is ‘font smoothing’, and ‘Color ClearType’ is sometimes also called ‘DWrite ClearType’. To differentiate between today's Color ClearType and the earlier ClearType variant with B/W rendering along the vertical axis, the latter is sometimes called ‘GDI ClearType’.</p> 1625<p>‘Normal’ and ‘high’ sampling describe the (virtual) resolution to access the rasterized outline after the hinting process. ‘Normal’ means 1 sample per grid line (i.e., B/W). In the current Microsoft implementation, ‘high’ means an extra virtual resolution of 16x16 (or 16x1) grid lines per pixel for bytecode instructions like ‘MIRP’. After hinting, these 16 grid lines are mapped to 6x5 (or 6x1) grid lines for color filtering if Color ClearType is activated.</p> 1626<p>Note that ‘Gray ClearType’ is essentially the same as v1.6's grayscale rendering. However, the GETINFO instruction handles it differently: v1.6 returns bit 12 (hinting for grayscale), while v2.1 returns bits 13 (hinting for ClearType), 18 (symmetrical smoothing), and 19 (Gray ClearType). Also, this mode respects bits 2 and 3 for the version 1 gasp table exclusively (like Color ClearType), while v1.6 only respects the values of version 0 (bits 0 and 1).</p> 1627<p>Keep in mind that the features of the above interpreter versions might not map exactly to FreeType features or behavior because it is a fundamentally different library with different internals.</p> 1628<hr> 1629 1630<h2 id="interpreter-version">interpreter-version<a class="headerlink" href="#interpreter-version" title="Permanent link">¶</a></h2> 1631<p>Currently, three versions are available, two representing the bytecode interpreter with subpixel hinting support (old ‘Infinality’ code and new stripped-down and higher performance ‘minimal’ code) and one without, respectively. The default is subpixel support if <code>TT_CONFIG_OPTION_SUBPIXEL_HINTING</code> is defined, and no subpixel support otherwise (since it isn't available then).</p> 1632<p>If subpixel hinting is on, many TrueType bytecode instructions behave differently compared to B/W or grayscale rendering (except if ‘native ClearType’ is selected by the font). Microsoft's main idea is to render at a much increased horizontal resolution, then sampling down the created output to subpixel precision. However, many older fonts are not suited to this and must be specially taken care of by applying (hardcoded) tweaks in Microsoft's interpreter.</p> 1633<p>Details on subpixel hinting and some of the necessary tweaks can be found in Greg Hitchcock's whitepaper at ‘<a href="https://www.microsoft.com/typography/cleartype/truetypecleartype.aspx">https://www.microsoft.com/typography/cleartype/truetypecleartype.aspx</a>’. Note that FreeType currently doesn't really ‘subpixel hint’ (6x1, 6x2, or 6x5 supersampling) like discussed in the paper. Depending on the chosen interpreter, it simply ignores instructions on vertical stems to arrive at very similar results.</p> 1634<h4>note</h4> 1635 1636<p>This property can be used with <code><a href="ft2-module_management.html#ft_property_get">FT_Property_Get</a></code> also.</p> 1637<p>This property can be set via the <code>FREETYPE_PROPERTIES</code> environment variable (using values ‘35’, ‘38’, or ‘40’).</p> 1638<h4>example</h4> 1639 1640<p>The following example code demonstrates how to deactivate subpixel hinting (omitting the error handling). 1641<div class="highlight"><pre><span></span><code> FT_Library library; 1642 FT_Face face; 1643 FT_UInt interpreter_version = TT_INTERPRETER_VERSION_35; 1644 1645 1646 FT_Init_FreeType( &library ); 1647 1648 FT_Property_Set( library, "truetype", 1649 "interpreter-version", 1650 &interpreter_version ); 1651</code></pre></div></p> 1652<h4>since</h4> 1653 1654<p>2.5</p> 1655<hr> 1656 1657<h2 id="svg-hooks">svg-hooks<a class="headerlink" href="#svg-hooks" title="Permanent link">¶</a></h2> 1658<p>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 ‘<a href="ft2-svg_fonts.html#svg_fonts">OpenType SVG Fonts</a>’.</p> 1659<h4>example</h4> 1660 1661<p>The following example code expects that the four hook functions <code>svg_*</code> are defined elsewhere. Error handling is omitted, too. 1662<div class="highlight"><pre><span></span><code> FT_Library library; 1663 SVG_RendererHooks hooks = { 1664 (SVG_Lib_Init_Func)svg_init, 1665 (SVG_Lib_Free_Func)svg_free, 1666 (SVG_Lib_Render_Func)svg_render, 1667 (SVG_Lib_Preset_Slot_Func)svg_preset_slot }; 1668 1669 1670 FT_Init_FreeType( &library ); 1671 1672 FT_Property_Set( library, "ot-svg", 1673 "svg-hooks", &hooks ); 1674</code></pre></div></p> 1675<h4>since</h4> 1676 1677<p>2.12</p> 1678<hr> 1679 1680<h2 id="glyph-to-script-map">glyph-to-script-map<a class="headerlink" href="#glyph-to-script-map" title="Permanent link">¶</a></h2> 1681<p><strong>Experimental only</strong></p> 1682<p>The auto-hinter provides various script modules to hint glyphs. Examples of supported scripts are Latin or CJK. Before a glyph is auto-hinted, the Unicode character map of the font gets examined, and the script is then determined based on Unicode character ranges, see below.</p> 1683<p>OpenType fonts, however, often provide much more glyphs than character codes (small caps, superscripts, ligatures, swashes, etc.), to be controlled by so-called ‘features’. Handling OpenType features can be quite complicated and thus needs a separate library on top of FreeType.</p> 1684<p>The mapping between glyph indices and scripts (in the auto-hinter sense, see the <code><a href="ft2-properties.html#ft_autohinter_script_xxx">FT_AUTOHINTER_SCRIPT_XXX</a></code> values) is stored as an array with <code>num_glyphs</code> elements, as found in the font's <code><a href="ft2-base_interface.html#ft_face">FT_Face</a></code> structure. The <code>glyph-to-script-map</code> property returns a pointer to this array, which can be modified as needed. Note that the modification should happen before the first glyph gets processed by the auto-hinter so that the global analysis of the font shapes actually uses the modified mapping.</p> 1685<h4>example</h4> 1686 1687<p>The following example code demonstrates how to access it (omitting the error handling). 1688<div class="highlight"><pre><span></span><code> FT_Library library; 1689 FT_Face face; 1690 FT_Prop_GlyphToScriptMap prop; 1691 1692 1693 FT_Init_FreeType( &library ); 1694 FT_New_Face( library, "foo.ttf", 0, &face ); 1695 1696 prop.face = face; 1697 1698 FT_Property_Get( library, "autofitter", 1699 "glyph-to-script-map", &prop ); 1700 1701 // adjust `prop.map' as needed right here 1702 1703 FT_Load_Glyph( face, ..., FT_LOAD_FORCE_AUTOHINT ); 1704</code></pre></div></p> 1705<h4>since</h4> 1706 1707<p>2.4.11</p> 1708<hr> 1709 1710<h2 id="ft_autohinter_script_xxx">FT_AUTOHINTER_SCRIPT_XXX<a class="headerlink" href="#ft_autohinter_script_xxx" title="Permanent link">¶</a></h2> 1711<p>Defined in FT_DRIVER_H (freetype/ftdriver.h).</p> 1712<div class = "codehilite"><pre><code>#<span class="keyword">define</span> <a href="ft2-properties.html#ft_autohinter_script_none">FT_AUTOHINTER_SCRIPT_NONE</a> 0 1713#<span class="keyword">define</span> <a href="ft2-properties.html#ft_autohinter_script_latin">FT_AUTOHINTER_SCRIPT_LATIN</a> 1 1714#<span class="keyword">define</span> <a href="ft2-properties.html#ft_autohinter_script_cjk">FT_AUTOHINTER_SCRIPT_CJK</a> 2 1715#<span class="keyword">define</span> <a href="ft2-properties.html#ft_autohinter_script_indic">FT_AUTOHINTER_SCRIPT_INDIC</a> 3 1716</code></pre></div> 1717 1718<p><strong>Experimental only</strong></p> 1719<p>A list of constants used for the <code><a href="ft2-properties.html#glyph-to-script-map">glyph-to-script-map</a></code> property to specify the script submodule the auto-hinter should use for hinting a particular glyph.</p> 1720<h4>values</h4> 1721<table class="fields long"> 1722<tr><td class="val" id="ft_autohinter_script_none">FT_AUTOHINTER_SCRIPT_NONE</td><td class="desc"> 1723<p>Don't auto-hint this glyph.</p> 1724</td></tr> 1725<tr><td class="val" id="ft_autohinter_script_latin">FT_AUTOHINTER_SCRIPT_LATIN</td><td class="desc"> 1726<p>Apply the latin auto-hinter. For the auto-hinter, ‘latin’ is a very broad term, including Cyrillic and Greek also since characters from those scripts share the same design constraints.</p> 1727<p>By default, characters from the following Unicode ranges are assigned to this submodule.</p> 1728<pre><code> U+0020 - U+007F // Basic Latin (no control characters) 1729 U+00A0 - U+00FF // Latin-1 Supplement (no control characters) 1730 U+0100 - U+017F // Latin Extended-A 1731 U+0180 - U+024F // Latin Extended-B 1732 U+0250 - U+02AF // IPA Extensions 1733 U+02B0 - U+02FF // Spacing Modifier Letters 1734 U+0300 - U+036F // Combining Diacritical Marks 1735 U+0370 - U+03FF // Greek and Coptic 1736 U+0400 - U+04FF // Cyrillic 1737 U+0500 - U+052F // Cyrillic Supplement 1738 U+1D00 - U+1D7F // Phonetic Extensions 1739 U+1D80 - U+1DBF // Phonetic Extensions Supplement 1740 U+1DC0 - U+1DFF // Combining Diacritical Marks Supplement 1741 U+1E00 - U+1EFF // Latin Extended Additional 1742 U+1F00 - U+1FFF // Greek Extended 1743 U+2000 - U+206F // General Punctuation 1744 U+2070 - U+209F // Superscripts and Subscripts 1745 U+20A0 - U+20CF // Currency Symbols 1746 U+2150 - U+218F // Number Forms 1747 U+2460 - U+24FF // Enclosed Alphanumerics 1748 U+2C60 - U+2C7F // Latin Extended-C 1749 U+2DE0 - U+2DFF // Cyrillic Extended-A 1750 U+2E00 - U+2E7F // Supplemental Punctuation 1751 U+A640 - U+A69F // Cyrillic Extended-B 1752 U+A720 - U+A7FF // Latin Extended-D 1753 U+FB00 - U+FB06 // Alphab. Present. Forms (Latin Ligatures) 1754 U+1D400 - U+1D7FF // Mathematical Alphanumeric Symbols 1755 U+1F100 - U+1F1FF // Enclosed Alphanumeric Supplement 1756</code></pre> 1757</td></tr> 1758<tr><td class="val" id="ft_autohinter_script_cjk">FT_AUTOHINTER_SCRIPT_CJK</td><td class="desc"> 1759<p>Apply the CJK auto-hinter, covering Chinese, Japanese, Korean, old Vietnamese, and some other scripts.</p> 1760<p>By default, characters from the following Unicode ranges are assigned to this submodule.</p> 1761<pre><code> U+1100 - U+11FF // Hangul Jamo 1762 U+2E80 - U+2EFF // CJK Radicals Supplement 1763 U+2F00 - U+2FDF // Kangxi Radicals 1764 U+2FF0 - U+2FFF // Ideographic Description Characters 1765 U+3000 - U+303F // CJK Symbols and Punctuation 1766 U+3040 - U+309F // Hiragana 1767 U+30A0 - U+30FF // Katakana 1768 U+3100 - U+312F // Bopomofo 1769 U+3130 - U+318F // Hangul Compatibility Jamo 1770 U+3190 - U+319F // Kanbun 1771 U+31A0 - U+31BF // Bopomofo Extended 1772 U+31C0 - U+31EF // CJK Strokes 1773 U+31F0 - U+31FF // Katakana Phonetic Extensions 1774 U+3200 - U+32FF // Enclosed CJK Letters and Months 1775 U+3300 - U+33FF // CJK Compatibility 1776 U+3400 - U+4DBF // CJK Unified Ideographs Extension A 1777 U+4DC0 - U+4DFF // Yijing Hexagram Symbols 1778 U+4E00 - U+9FFF // CJK Unified Ideographs 1779 U+A960 - U+A97F // Hangul Jamo Extended-A 1780 U+AC00 - U+D7AF // Hangul Syllables 1781 U+D7B0 - U+D7FF // Hangul Jamo Extended-B 1782 U+F900 - U+FAFF // CJK Compatibility Ideographs 1783 U+FE10 - U+FE1F // Vertical forms 1784 U+FE30 - U+FE4F // CJK Compatibility Forms 1785 U+FF00 - U+FFEF // Halfwidth and Fullwidth Forms 1786 U+1B000 - U+1B0FF // Kana Supplement 1787 U+1D300 - U+1D35F // Tai Xuan Hing Symbols 1788 U+1F200 - U+1F2FF // Enclosed Ideographic Supplement 1789 U+20000 - U+2A6DF // CJK Unified Ideographs Extension B 1790 U+2A700 - U+2B73F // CJK Unified Ideographs Extension C 1791 U+2B740 - U+2B81F // CJK Unified Ideographs Extension D 1792 U+2F800 - U+2FA1F // CJK Compatibility Ideographs Supplement 1793</code></pre> 1794</td></tr> 1795<tr><td class="val" id="ft_autohinter_script_indic">FT_AUTOHINTER_SCRIPT_INDIC</td><td class="desc"> 1796<p>Apply the indic auto-hinter, covering all major scripts from the Indian sub-continent and some other related scripts like Thai, Lao, or Tibetan.</p> 1797<p>By default, characters from the following Unicode ranges are assigned to this submodule.</p> 1798<pre><code> U+0900 - U+0DFF // Indic Range 1799 U+0F00 - U+0FFF // Tibetan 1800 U+1900 - U+194F // Limbu 1801 U+1B80 - U+1BBF // Sundanese 1802 U+A800 - U+A82F // Syloti Nagri 1803 U+ABC0 - U+ABFF // Meetei Mayek 1804 U+11800 - U+118DF // Sharada 1805</code></pre> 1806<p>Note that currently Indic support is rudimentary only, missing blue zone support.</p> 1807</td></tr> 1808</table> 1809 1810<h4>since</h4> 1811 1812<p>2.4.11</p> 1813<hr> 1814 1815<h2 id="ft_prop_glyphtoscriptmap">FT_Prop_GlyphToScriptMap<a class="headerlink" href="#ft_prop_glyphtoscriptmap" title="Permanent link">¶</a></h2> 1816<p>Defined in FT_DRIVER_H (freetype/ftdriver.h).</p> 1817<div class = "codehilite"><pre><code> <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_Prop_GlyphToScriptMap_ 1818 { 1819 <a href="ft2-base_interface.html#ft_face">FT_Face</a> face; 1820 <a href="ft2-basic_types.html#ft_ushort">FT_UShort</a>* map; 1821 1822 } <b>FT_Prop_GlyphToScriptMap</b>; 1823</code></pre></div> 1824 1825<p><strong>Experimental only</strong></p> 1826<p>The data exchange structure for the <code><a href="ft2-properties.html#glyph-to-script-map">glyph-to-script-map</a></code> property.</p> 1827<h4>since</h4> 1828 1829<p>2.4.11</p> 1830<hr> 1831 1832<h2 id="fallback-script">fallback-script<a class="headerlink" href="#fallback-script" title="Permanent link">¶</a></h2> 1833<p><strong>Experimental only</strong></p> 1834<p>If no auto-hinter script module can be assigned to a glyph, a fallback script gets assigned to it (see also the <code><a href="ft2-properties.html#glyph-to-script-map">glyph-to-script-map</a></code> property). By default, this is <code><a href="ft2-properties.html#ft_autohinter_script_xxx">FT_AUTOHINTER_SCRIPT_CJK</a></code>. Using the <code>fallback-script</code> property, this fallback value can be changed.</p> 1835<h4>note</h4> 1836 1837<p>This property can be used with <code><a href="ft2-module_management.html#ft_property_get">FT_Property_Get</a></code> also.</p> 1838<p>It's important to use the right timing for changing this value: The creation of the glyph-to-script map that eventually uses the fallback script value gets triggered either by setting or reading a face-specific property like <code><a href="ft2-properties.html#glyph-to-script-map">glyph-to-script-map</a></code>, or by auto-hinting any glyph from that face. In particular, if you have already created an <code><a href="ft2-base_interface.html#ft_face">FT_Face</a></code> structure but not loaded any glyph (using the auto-hinter), a change of the fallback script will affect this face.</p> 1839<h4>example</h4> 1840<div class="highlight"><pre><span></span><code> FT_Library library; 1841 FT_UInt fallback_script = FT_AUTOHINTER_SCRIPT_NONE; 1842 1843 1844 FT_Init_FreeType( &library ); 1845 1846 FT_Property_Set( library, "autofitter", 1847 "fallback-script", &fallback_script ); 1848</code></pre></div> 1849<h4>since</h4> 1850 1851<p>2.4.11</p> 1852<hr> 1853 1854<h2 id="default-script">default-script<a class="headerlink" href="#default-script" title="Permanent link">¶</a></h2> 1855<p><strong>Experimental only</strong></p> 1856<p>If FreeType gets compiled with <code>FT_CONFIG_OPTION_USE_HARFBUZZ</code> to make the HarfBuzz library access OpenType features for getting better glyph coverages, this property sets the (auto-fitter) script to be used for the default (OpenType) script data of a font's GSUB table. Features for the default script are intended for all scripts not explicitly handled in GSUB; an example is a ‘dlig’ feature, containing the combination of the characters ‘T’, ‘E’, and ‘L’ to form a ‘TEL’ ligature.</p> 1857<p>By default, this is <code><a href="ft2-properties.html#ft_autohinter_script_xxx">FT_AUTOHINTER_SCRIPT_LATIN</a></code>. Using the <code>default-script</code> property, this default value can be changed.</p> 1858<h4>note</h4> 1859 1860<p>This property can be used with <code><a href="ft2-module_management.html#ft_property_get">FT_Property_Get</a></code> also.</p> 1861<p>It's important to use the right timing for changing this value: The creation of the glyph-to-script map that eventually uses the default script value gets triggered either by setting or reading a face-specific property like <code><a href="ft2-properties.html#glyph-to-script-map">glyph-to-script-map</a></code>, or by auto-hinting any glyph from that face. In particular, if you have already created an <code><a href="ft2-base_interface.html#ft_face">FT_Face</a></code> structure but not loaded any glyph (using the auto-hinter), a change of the default script will affect this face.</p> 1862<h4>example</h4> 1863<div class="highlight"><pre><span></span><code> FT_Library library; 1864 FT_UInt default_script = FT_AUTOHINTER_SCRIPT_NONE; 1865 1866 1867 FT_Init_FreeType( &library ); 1868 1869 FT_Property_Set( library, "autofitter", 1870 "default-script", &default_script ); 1871</code></pre></div> 1872<h4>since</h4> 1873 1874<p>2.5.3</p> 1875<hr> 1876 1877<h2 id="increase-x-height">increase-x-height<a class="headerlink" href="#increase-x-height" title="Permanent link">¶</a></h2> 1878<p>For ppem values in the range 6 <= ppem <= <code>increase-x-height</code>, round up the font's x height much more often than normally. If the value is set to 0, which is the default, this feature is switched off. Use this property to improve the legibility of small font sizes if necessary.</p> 1879<h4>note</h4> 1880 1881<p>This property can be used with <code><a href="ft2-module_management.html#ft_property_get">FT_Property_Get</a></code> also.</p> 1882<p>Set this value right after calling <code><a href="ft2-base_interface.html#ft_set_char_size">FT_Set_Char_Size</a></code>, but before loading any glyph (using the auto-hinter).</p> 1883<h4>example</h4> 1884<div class="highlight"><pre><span></span><code> FT_Library library; 1885 FT_Face face; 1886 FT_Prop_IncreaseXHeight prop; 1887 1888 1889 FT_Init_FreeType( &library ); 1890 FT_New_Face( library, "foo.ttf", 0, &face ); 1891 FT_Set_Char_Size( face, 10 * 64, 0, 72, 0 ); 1892 1893 prop.face = face; 1894 prop.limit = 14; 1895 1896 FT_Property_Set( library, "autofitter", 1897 "increase-x-height", &prop ); 1898</code></pre></div> 1899<h4>since</h4> 1900 1901<p>2.4.11</p> 1902<hr> 1903 1904<h2 id="ft_prop_increasexheight">FT_Prop_IncreaseXHeight<a class="headerlink" href="#ft_prop_increasexheight" title="Permanent link">¶</a></h2> 1905<p>Defined in FT_DRIVER_H (freetype/ftdriver.h).</p> 1906<div class = "codehilite"><pre><code> <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_Prop_IncreaseXHeight_ 1907 { 1908 <a href="ft2-base_interface.html#ft_face">FT_Face</a> face; 1909 <a href="ft2-basic_types.html#ft_uint">FT_UInt</a> limit; 1910 1911 } <b>FT_Prop_IncreaseXHeight</b>; 1912</code></pre></div> 1913 1914<p>The data exchange structure for the <code><a href="ft2-properties.html#increase-x-height">increase-x-height</a></code> property.</p> 1915<hr> 1916 1917<h2 id="warping">warping<a class="headerlink" href="#warping" title="Permanent link">¶</a></h2> 1918<p><strong>Obsolete</strong></p> 1919<p>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.</p> 1920<p>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 were aligned (more or less) to the grid. To find out a glyph's optimal scaling and shifting value, various parameter combinations were tried and scored.</p> 1921<h4>since</h4> 1922 1923<p>2.6</p> 1924<hr> 1925 1926 1927 1928 1929 1930 1931 1932 </article> 1933 </div> 1934 </div> 1935 1936 </main> 1937 1938 1939<footer class="md-footer"> 1940 1941 <nav class="md-footer__inner md-grid" aria-label="Footer"> 1942 1943 1944 <a href="ft2-ot_svg_driver.html" class="md-footer__link md-footer__link--prev" aria-label="Previous: The SVG driver" rel="prev"> 1945 <div class="md-footer__button md-icon"> 1946 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"/></svg> 1947 </div> 1948 <div class="md-footer__title"> 1949 <div class="md-ellipsis"> 1950 <span class="md-footer__direction"> 1951 Previous 1952 </span> 1953 The SVG driver 1954 </div> 1955 </div> 1956 </a> 1957 1958 1959 1960 <a href="ft2-parameter_tags.html" class="md-footer__link md-footer__link--next" aria-label="Next: Parameter Tags" rel="next"> 1961 <div class="md-footer__title"> 1962 <div class="md-ellipsis"> 1963 <span class="md-footer__direction"> 1964 Next 1965 </span> 1966 Parameter Tags 1967 </div> 1968 </div> 1969 <div class="md-footer__button md-icon"> 1970 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11H4z"/></svg> 1971 </div> 1972 </a> 1973 1974 </nav> 1975 1976 <div class="md-footer-meta md-typeset"> 1977 <div class="md-footer-meta__inner md-grid"> 1978 <div class="md-footer-copyright"> 1979 1980 <div class="md-footer-copyright__highlight"> 1981 Copyright 2022 <a href = "https://www.freetype.org/license.html">The FreeType Project</a>. 1982 </div> 1983 1984 Made with 1985 <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener"> 1986 Material for MkDocs 1987 </a> 1988 1989 </div> 1990 1991 </div> 1992 </div> 1993</footer> 1994 1995 </div> 1996 <div class="md-dialog" data-md-component="dialog"> 1997 <div class="md-dialog__inner md-typeset"></div> 1998 </div> 1999 <script id="__config" type="application/json">{"base": ".", "features": [], "translations": {"clipboard.copy": "Copy to clipboard", "clipboard.copied": "Copied to clipboard", "search.config.lang": "en", "search.config.pipeline": "trimmer, stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.placeholder": "Search", "search.result.placeholder": "Type to start searching", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.term.missing": "Missing", "select.version.title": "Select version"}, "search": "assets/javascripts/workers/search.477d984a.min.js", "version": null}</script> 2000 2001 2002 <script src="assets/javascripts/bundle.82b56eb2.min.js"></script> 2003 2004 <script src="javascripts/extra.js"></script> 2005 2006 2007 </body> 2008</html>