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>Outline Processing - 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="#outline-processing" 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 Outline Processing 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 <li class="md-nav__item md-nav__item--nested"> 591 592 593 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_6" type="checkbox" id="__nav_6" > 594 595 <label class="md-nav__link" for="__nav_6"> 596 Controlling FreeType Modules 597 <span class="md-nav__icon md-icon"></span> 598 </label> 599 <nav class="md-nav" aria-label="Controlling FreeType Modules" data-md-level="1"> 600 <label class="md-nav__title" for="__nav_6"> 601 <span class="md-nav__icon md-icon"></span> 602 Controlling FreeType Modules 603 </label> 604 <ul class="md-nav__list" data-md-scrollfix> 605 606 607 608 609 610 <li class="md-nav__item"> 611 <a href="ft2-auto_hinter.html" class="md-nav__link"> 612 The auto-hinter 613 </a> 614 </li> 615 616 617 618 619 620 621 622 <li class="md-nav__item"> 623 <a href="ft2-cff_driver.html" class="md-nav__link"> 624 The CFF driver 625 </a> 626 </li> 627 628 629 630 631 632 633 634 <li class="md-nav__item"> 635 <a href="ft2-t1_cid_driver.html" class="md-nav__link"> 636 The Type 1 and CID drivers 637 </a> 638 </li> 639 640 641 642 643 644 645 646 <li class="md-nav__item"> 647 <a href="ft2-tt_driver.html" class="md-nav__link"> 648 The TrueType driver 649 </a> 650 </li> 651 652 653 654 655 656 657 658 <li class="md-nav__item"> 659 <a href="ft2-pcf_driver.html" class="md-nav__link"> 660 The PCF driver 661 </a> 662 </li> 663 664 665 666 667 668 669 670 <li class="md-nav__item"> 671 <a href="ft2-ot_svg_driver.html" class="md-nav__link"> 672 The SVG driver 673 </a> 674 </li> 675 676 677 678 679 680 681 682 <li class="md-nav__item"> 683 <a href="ft2-properties.html" class="md-nav__link"> 684 Driver properties 685 </a> 686 </li> 687 688 689 690 691 692 693 694 <li class="md-nav__item"> 695 <a href="ft2-parameter_tags.html" class="md-nav__link"> 696 Parameter Tags 697 </a> 698 </li> 699 700 701 702 703 704 705 706 <li class="md-nav__item"> 707 <a href="ft2-lcd_rendering.html" class="md-nav__link"> 708 Subpixel Rendering 709 </a> 710 </li> 711 712 713 714 </ul> 715 </nav> 716 </li> 717 718 719 720 721 722 723 724 725 726 727 728 <li class="md-nav__item md-nav__item--nested"> 729 730 731 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_7" type="checkbox" id="__nav_7" > 732 733 <label class="md-nav__link" for="__nav_7"> 734 Cache Sub-System 735 <span class="md-nav__icon md-icon"></span> 736 </label> 737 <nav class="md-nav" aria-label="Cache Sub-System" data-md-level="1"> 738 <label class="md-nav__title" for="__nav_7"> 739 <span class="md-nav__icon md-icon"></span> 740 Cache Sub-System 741 </label> 742 <ul class="md-nav__list" data-md-scrollfix> 743 744 745 746 747 748 <li class="md-nav__item"> 749 <a href="ft2-cache_subsystem.html" class="md-nav__link"> 750 Cache Sub-System 751 </a> 752 </li> 753 754 755 756 </ul> 757 </nav> 758 </li> 759 760 761 762 763 764 765 766 767 768 769 770 771 772 <li class="md-nav__item md-nav__item--active md-nav__item--nested"> 773 774 775 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_8" type="checkbox" id="__nav_8" checked> 776 777 <label class="md-nav__link" for="__nav_8"> 778 Support API 779 <span class="md-nav__icon md-icon"></span> 780 </label> 781 <nav class="md-nav" aria-label="Support API" data-md-level="1"> 782 <label class="md-nav__title" for="__nav_8"> 783 <span class="md-nav__icon md-icon"></span> 784 Support API 785 </label> 786 <ul class="md-nav__list" data-md-scrollfix> 787 788 789 790 791 792 <li class="md-nav__item"> 793 <a href="ft2-computations.html" class="md-nav__link"> 794 Computations 795 </a> 796 </li> 797 798 799 800 801 802 803 804 <li class="md-nav__item"> 805 <a href="ft2-list_processing.html" class="md-nav__link"> 806 List Processing 807 </a> 808 </li> 809 810 811 812 813 814 815 816 817 818 <li class="md-nav__item md-nav__item--active"> 819 820 <input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc"> 821 822 823 824 825 826 <label class="md-nav__link md-nav__link--active" for="__toc"> 827 Outline Processing 828 <span class="md-nav__icon md-icon"></span> 829 </label> 830 831 <a href="ft2-outline_processing.html" class="md-nav__link md-nav__link--active"> 832 Outline Processing 833 </a> 834 835 836<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> 837 838 839 840 841 842 843 <label class="md-nav__title" for="__toc"> 844 <span class="md-nav__icon md-icon"></span> 845 Table of contents 846 </label> 847 <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> 848 849 <li class="md-nav__item"> 850 <a href="#synopsis" class="md-nav__link"> 851 Synopsis 852 </a> 853 854</li> 855 856 <li class="md-nav__item"> 857 <a href="#ft_outline" class="md-nav__link"> 858 FT_Outline 859 </a> 860 861</li> 862 863 <li class="md-nav__item"> 864 <a href="#ft_outline_new" class="md-nav__link"> 865 FT_Outline_New 866 </a> 867 868</li> 869 870 <li class="md-nav__item"> 871 <a href="#ft_outline_done" class="md-nav__link"> 872 FT_Outline_Done 873 </a> 874 875</li> 876 877 <li class="md-nav__item"> 878 <a href="#ft_outline_copy" class="md-nav__link"> 879 FT_Outline_Copy 880 </a> 881 882</li> 883 884 <li class="md-nav__item"> 885 <a href="#ft_outline_translate" class="md-nav__link"> 886 FT_Outline_Translate 887 </a> 888 889</li> 890 891 <li class="md-nav__item"> 892 <a href="#ft_outline_transform" class="md-nav__link"> 893 FT_Outline_Transform 894 </a> 895 896</li> 897 898 <li class="md-nav__item"> 899 <a href="#ft_outline_embolden" class="md-nav__link"> 900 FT_Outline_Embolden 901 </a> 902 903</li> 904 905 <li class="md-nav__item"> 906 <a href="#ft_outline_emboldenxy" class="md-nav__link"> 907 FT_Outline_EmboldenXY 908 </a> 909 910</li> 911 912 <li class="md-nav__item"> 913 <a href="#ft_outline_reverse" class="md-nav__link"> 914 FT_Outline_Reverse 915 </a> 916 917</li> 918 919 <li class="md-nav__item"> 920 <a href="#ft_outline_check" class="md-nav__link"> 921 FT_Outline_Check 922 </a> 923 924</li> 925 926 <li class="md-nav__item"> 927 <a href="#ft_outline_get_cbox" class="md-nav__link"> 928 FT_Outline_Get_CBox 929 </a> 930 931</li> 932 933 <li class="md-nav__item"> 934 <a href="#ft_outline_get_bbox" class="md-nav__link"> 935 FT_Outline_Get_BBox 936 </a> 937 938</li> 939 940 <li class="md-nav__item"> 941 <a href="#ft_outline_get_bitmap" class="md-nav__link"> 942 FT_Outline_Get_Bitmap 943 </a> 944 945</li> 946 947 <li class="md-nav__item"> 948 <a href="#ft_outline_render" class="md-nav__link"> 949 FT_Outline_Render 950 </a> 951 952</li> 953 954 <li class="md-nav__item"> 955 <a href="#ft_outline_decompose" class="md-nav__link"> 956 FT_Outline_Decompose 957 </a> 958 959</li> 960 961 <li class="md-nav__item"> 962 <a href="#ft_outline_funcs" class="md-nav__link"> 963 FT_Outline_Funcs 964 </a> 965 966</li> 967 968 <li class="md-nav__item"> 969 <a href="#ft_outline_movetofunc" class="md-nav__link"> 970 FT_Outline_MoveToFunc 971 </a> 972 973</li> 974 975 <li class="md-nav__item"> 976 <a href="#ft_outline_linetofunc" class="md-nav__link"> 977 FT_Outline_LineToFunc 978 </a> 979 980</li> 981 982 <li class="md-nav__item"> 983 <a href="#ft_outline_conictofunc" class="md-nav__link"> 984 FT_Outline_ConicToFunc 985 </a> 986 987</li> 988 989 <li class="md-nav__item"> 990 <a href="#ft_outline_cubictofunc" class="md-nav__link"> 991 FT_Outline_CubicToFunc 992 </a> 993 994</li> 995 996 <li class="md-nav__item"> 997 <a href="#ft_orientation" class="md-nav__link"> 998 FT_Orientation 999 </a> 1000 1001</li> 1002 1003 <li class="md-nav__item"> 1004 <a href="#ft_outline_get_orientation" class="md-nav__link"> 1005 FT_Outline_Get_Orientation 1006 </a> 1007 1008</li> 1009 1010 <li class="md-nav__item"> 1011 <a href="#ft_outline_xxx" class="md-nav__link"> 1012 FT_OUTLINE_XXX 1013 </a> 1014 1015</li> 1016 1017 </ul> 1018 1019</nav> 1020 1021 </li> 1022 1023 1024 1025 1026 1027 1028 1029 <li class="md-nav__item"> 1030 <a href="ft2-quick_advance.html" class="md-nav__link"> 1031 Quick retrieval of advance values 1032 </a> 1033 </li> 1034 1035 1036 1037 1038 1039 1040 1041 <li class="md-nav__item"> 1042 <a href="ft2-bitmap_handling.html" class="md-nav__link"> 1043 Bitmap Handling 1044 </a> 1045 </li> 1046 1047 1048 1049 1050 1051 1052 1053 <li class="md-nav__item"> 1054 <a href="ft2-raster.html" class="md-nav__link"> 1055 Scanline Converter 1056 </a> 1057 </li> 1058 1059 1060 1061 1062 1063 1064 1065 <li class="md-nav__item"> 1066 <a href="ft2-glyph_stroker.html" class="md-nav__link"> 1067 Glyph Stroker 1068 </a> 1069 </li> 1070 1071 1072 1073 1074 1075 1076 1077 <li class="md-nav__item"> 1078 <a href="ft2-system_interface.html" class="md-nav__link"> 1079 System Interface 1080 </a> 1081 </li> 1082 1083 1084 1085 1086 1087 1088 1089 <li class="md-nav__item"> 1090 <a href="ft2-module_management.html" class="md-nav__link"> 1091 Module Management 1092 </a> 1093 </li> 1094 1095 1096 1097 1098 1099 1100 1101 <li class="md-nav__item"> 1102 <a href="ft2-gzip.html" class="md-nav__link"> 1103 GZIP Streams 1104 </a> 1105 </li> 1106 1107 1108 1109 1110 1111 1112 1113 <li class="md-nav__item"> 1114 <a href="ft2-lzw.html" class="md-nav__link"> 1115 LZW Streams 1116 </a> 1117 </li> 1118 1119 1120 1121 1122 1123 1124 1125 <li class="md-nav__item"> 1126 <a href="ft2-bzip2.html" class="md-nav__link"> 1127 BZIP2 Streams 1128 </a> 1129 </li> 1130 1131 1132 1133 1134 1135 1136 1137 <li class="md-nav__item"> 1138 <a href="ft2-debugging_apis.html" class="md-nav__link"> 1139 External Debugging APIs 1140 </a> 1141 </li> 1142 1143 1144 1145 </ul> 1146 </nav> 1147 </li> 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 <li class="md-nav__item md-nav__item--nested"> 1160 1161 1162 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_9" type="checkbox" id="__nav_9" > 1163 1164 <label class="md-nav__link" for="__nav_9"> 1165 Error Codes 1166 <span class="md-nav__icon md-icon"></span> 1167 </label> 1168 <nav class="md-nav" aria-label="Error Codes" data-md-level="1"> 1169 <label class="md-nav__title" for="__nav_9"> 1170 <span class="md-nav__icon md-icon"></span> 1171 Error Codes 1172 </label> 1173 <ul class="md-nav__list" data-md-scrollfix> 1174 1175 1176 1177 1178 1179 <li class="md-nav__item"> 1180 <a href="ft2-error_enumerations.html" class="md-nav__link"> 1181 Error Enumerations 1182 </a> 1183 </li> 1184 1185 1186 1187 1188 1189 1190 1191 <li class="md-nav__item"> 1192 <a href="ft2-error_code_values.html" class="md-nav__link"> 1193 Error Code Values 1194 </a> 1195 </li> 1196 1197 1198 1199 </ul> 1200 </nav> 1201 </li> 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 <li class="md-nav__item md-nav__item--nested"> 1214 1215 1216 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_10" type="checkbox" id="__nav_10" > 1217 1218 <label class="md-nav__link" for="__nav_10"> 1219 Miscellaneous 1220 <span class="md-nav__icon md-icon"></span> 1221 </label> 1222 <nav class="md-nav" aria-label="Miscellaneous" data-md-level="1"> 1223 <label class="md-nav__title" for="__nav_10"> 1224 <span class="md-nav__icon md-icon"></span> 1225 Miscellaneous 1226 </label> 1227 <ul class="md-nav__list" data-md-scrollfix> 1228 1229 1230 1231 1232 1233 <li class="md-nav__item"> 1234 <a href="ft2-gx_validation.html" class="md-nav__link"> 1235 TrueTypeGX/AAT Validation 1236 </a> 1237 </li> 1238 1239 1240 1241 1242 1243 1244 1245 <li class="md-nav__item"> 1246 <a href="ft2-incremental.html" class="md-nav__link"> 1247 Incremental Loading 1248 </a> 1249 </li> 1250 1251 1252 1253 1254 1255 1256 1257 <li class="md-nav__item"> 1258 <a href="ft2-truetype_engine.html" class="md-nav__link"> 1259 The TrueType Engine 1260 </a> 1261 </li> 1262 1263 1264 1265 1266 1267 1268 1269 <li class="md-nav__item"> 1270 <a href="ft2-ot_validation.html" class="md-nav__link"> 1271 OpenType Validation 1272 </a> 1273 </li> 1274 1275 1276 1277 </ul> 1278 </nav> 1279 </li> 1280 1281 1282 1283 </ul> 1284</nav> 1285 </div> 1286 </div> 1287 </div> 1288 1289 1290 1291 <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" > 1292 <div class="md-sidebar__scrollwrap"> 1293 <div class="md-sidebar__inner"> 1294 1295<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> 1296 1297 1298 1299 1300 1301 1302 <label class="md-nav__title" for="__toc"> 1303 <span class="md-nav__icon md-icon"></span> 1304 Table of contents 1305 </label> 1306 <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> 1307 1308 <li class="md-nav__item"> 1309 <a href="#synopsis" class="md-nav__link"> 1310 Synopsis 1311 </a> 1312 1313</li> 1314 1315 <li class="md-nav__item"> 1316 <a href="#ft_outline" class="md-nav__link"> 1317 FT_Outline 1318 </a> 1319 1320</li> 1321 1322 <li class="md-nav__item"> 1323 <a href="#ft_outline_new" class="md-nav__link"> 1324 FT_Outline_New 1325 </a> 1326 1327</li> 1328 1329 <li class="md-nav__item"> 1330 <a href="#ft_outline_done" class="md-nav__link"> 1331 FT_Outline_Done 1332 </a> 1333 1334</li> 1335 1336 <li class="md-nav__item"> 1337 <a href="#ft_outline_copy" class="md-nav__link"> 1338 FT_Outline_Copy 1339 </a> 1340 1341</li> 1342 1343 <li class="md-nav__item"> 1344 <a href="#ft_outline_translate" class="md-nav__link"> 1345 FT_Outline_Translate 1346 </a> 1347 1348</li> 1349 1350 <li class="md-nav__item"> 1351 <a href="#ft_outline_transform" class="md-nav__link"> 1352 FT_Outline_Transform 1353 </a> 1354 1355</li> 1356 1357 <li class="md-nav__item"> 1358 <a href="#ft_outline_embolden" class="md-nav__link"> 1359 FT_Outline_Embolden 1360 </a> 1361 1362</li> 1363 1364 <li class="md-nav__item"> 1365 <a href="#ft_outline_emboldenxy" class="md-nav__link"> 1366 FT_Outline_EmboldenXY 1367 </a> 1368 1369</li> 1370 1371 <li class="md-nav__item"> 1372 <a href="#ft_outline_reverse" class="md-nav__link"> 1373 FT_Outline_Reverse 1374 </a> 1375 1376</li> 1377 1378 <li class="md-nav__item"> 1379 <a href="#ft_outline_check" class="md-nav__link"> 1380 FT_Outline_Check 1381 </a> 1382 1383</li> 1384 1385 <li class="md-nav__item"> 1386 <a href="#ft_outline_get_cbox" class="md-nav__link"> 1387 FT_Outline_Get_CBox 1388 </a> 1389 1390</li> 1391 1392 <li class="md-nav__item"> 1393 <a href="#ft_outline_get_bbox" class="md-nav__link"> 1394 FT_Outline_Get_BBox 1395 </a> 1396 1397</li> 1398 1399 <li class="md-nav__item"> 1400 <a href="#ft_outline_get_bitmap" class="md-nav__link"> 1401 FT_Outline_Get_Bitmap 1402 </a> 1403 1404</li> 1405 1406 <li class="md-nav__item"> 1407 <a href="#ft_outline_render" class="md-nav__link"> 1408 FT_Outline_Render 1409 </a> 1410 1411</li> 1412 1413 <li class="md-nav__item"> 1414 <a href="#ft_outline_decompose" class="md-nav__link"> 1415 FT_Outline_Decompose 1416 </a> 1417 1418</li> 1419 1420 <li class="md-nav__item"> 1421 <a href="#ft_outline_funcs" class="md-nav__link"> 1422 FT_Outline_Funcs 1423 </a> 1424 1425</li> 1426 1427 <li class="md-nav__item"> 1428 <a href="#ft_outline_movetofunc" class="md-nav__link"> 1429 FT_Outline_MoveToFunc 1430 </a> 1431 1432</li> 1433 1434 <li class="md-nav__item"> 1435 <a href="#ft_outline_linetofunc" class="md-nav__link"> 1436 FT_Outline_LineToFunc 1437 </a> 1438 1439</li> 1440 1441 <li class="md-nav__item"> 1442 <a href="#ft_outline_conictofunc" class="md-nav__link"> 1443 FT_Outline_ConicToFunc 1444 </a> 1445 1446</li> 1447 1448 <li class="md-nav__item"> 1449 <a href="#ft_outline_cubictofunc" class="md-nav__link"> 1450 FT_Outline_CubicToFunc 1451 </a> 1452 1453</li> 1454 1455 <li class="md-nav__item"> 1456 <a href="#ft_orientation" class="md-nav__link"> 1457 FT_Orientation 1458 </a> 1459 1460</li> 1461 1462 <li class="md-nav__item"> 1463 <a href="#ft_outline_get_orientation" class="md-nav__link"> 1464 FT_Outline_Get_Orientation 1465 </a> 1466 1467</li> 1468 1469 <li class="md-nav__item"> 1470 <a href="#ft_outline_xxx" class="md-nav__link"> 1471 FT_OUTLINE_XXX 1472 </a> 1473 1474</li> 1475 1476 </ul> 1477 1478</nav> 1479 </div> 1480 </div> 1481 </div> 1482 1483 1484 <div class="md-content" data-md-component="content"> 1485 <article class="md-content__inner md-typeset"> 1486 1487 1488 1489 <p><a href="https://www.freetype.org">FreeType</a> » <a href="../">Docs</a> » <a href="index.html#support-api">Support API</a> » Outline Processing</p> 1490<hr /> 1491<h1 id="outline-processing">Outline Processing<a class="headerlink" href="#outline-processing" title="Permanent link">¶</a></h1> 1492<h2 id="synopsis">Synopsis<a class="headerlink" href="#synopsis" title="Permanent link">¶</a></h2> 1493<p>This section contains routines used to create and destroy scalable glyph images known as ‘outlines’. These can also be measured, transformed, and converted into bitmaps and pixmaps.</p> 1494<h2 id="ft_outline">FT_Outline<a class="headerlink" href="#ft_outline" title="Permanent link">¶</a></h2> 1495<p>Defined in FT_IMAGE_H (freetype/ftimage.h).</p> 1496<div class = "codehilite"><pre><code> <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_Outline_ 1497 { 1498 <span class="keyword">short</span> n_contours; /* number of contours in glyph */ 1499 <span class="keyword">short</span> n_points; /* number of points in the glyph */ 1500 1501 <a href="ft2-basic_types.html#ft_vector">FT_Vector</a>* points; /* the outline's points */ 1502 <span class="keyword">char</span>* tags; /* the points flags */ 1503 <span class="keyword">short</span>* contours; /* the contour end points */ 1504 1505 <span class="keyword">int</span> flags; /* outline masks */ 1506 1507 } <b>FT_Outline</b>; 1508</code></pre></div> 1509 1510<p>This structure is used to describe an outline to the scan-line converter.</p> 1511<h4>fields</h4> 1512<table class="fields"> 1513<tr><td class="val" id="n_contours">n_contours</td><td class="desc"> 1514<p>The number of contours in the outline.</p> 1515</td></tr> 1516<tr><td class="val" id="n_points">n_points</td><td class="desc"> 1517<p>The number of points in the outline.</p> 1518</td></tr> 1519<tr><td class="val" id="points">points</td><td class="desc"> 1520<p>A pointer to an array of <code>n_points</code> <code><a href="ft2-basic_types.html#ft_vector">FT_Vector</a></code> elements, giving the outline's point coordinates.</p> 1521</td></tr> 1522<tr><td class="val" id="tags">tags</td><td class="desc"> 1523<p>A pointer to an array of <code>n_points</code> chars, giving each outline point's type.</p> 1524<p>If bit 0 is unset, the point is ‘off’ the curve, i.e., a Bezier control point, while it is ‘on’ if set.</p> 1525<p>Bit 1 is meaningful for ‘off’ points only. If set, it indicates a third-order Bezier arc control point; and a second-order control point if unset.</p> 1526<p>If bit 2 is set, bits 5-7 contain the drop-out mode (as defined in the OpenType specification; the value is the same as the argument to the ‘SCANMODE’ instruction).</p> 1527<p>Bits 3 and 4 are reserved for internal purposes.</p> 1528</td></tr> 1529<tr><td class="val" id="contours">contours</td><td class="desc"> 1530<p>An array of <code>n_contours</code> shorts, giving the end point of each contour within the outline. For example, the first contour is defined by the points ‘0’ to <code>contours[0]</code>, the second one is defined by the points <code>contours[0]+1</code> to <code>contours[1]</code>, etc.</p> 1531</td></tr> 1532<tr><td class="val" id="flags">flags</td><td class="desc"> 1533<p>A set of bit flags used to characterize the outline and give hints to the scan-converter and hinter on how to convert/grid-fit it. See <code><a href="ft2-outline_processing.html#ft_outline_xxx">FT_OUTLINE_XXX</a></code>.</p> 1534</td></tr> 1535</table> 1536 1537<h4>note</h4> 1538 1539<p>The B/W rasterizer only checks bit 2 in the <code>tags</code> array for the first point of each contour. The drop-out mode as given with <code><a href="ft2-outline_processing.html#ft_outline_xxx">FT_OUTLINE_IGNORE_DROPOUTS</a></code>, <code><a href="ft2-outline_processing.html#ft_outline_xxx">FT_OUTLINE_SMART_DROPOUTS</a></code>, and <code><a href="ft2-outline_processing.html#ft_outline_xxx">FT_OUTLINE_INCLUDE_STUBS</a></code> in <code>flags</code> is then overridden.</p> 1540<hr> 1541 1542<h2 id="ft_outline_new">FT_Outline_New<a class="headerlink" href="#ft_outline_new" title="Permanent link">¶</a></h2> 1543<p>Defined in FT_OUTLINE_H (freetype/ftoutln.h).</p> 1544<div class = "codehilite"><pre><code> FT_EXPORT( <a href="ft2-basic_types.html#ft_error">FT_Error</a> ) 1545 <b>FT_Outline_New</b>( <a href="ft2-base_interface.html#ft_library">FT_Library</a> library, 1546 <a href="ft2-basic_types.html#ft_uint">FT_UInt</a> numPoints, 1547 <a href="ft2-basic_types.html#ft_int">FT_Int</a> numContours, 1548 <a href="ft2-outline_processing.html#ft_outline">FT_Outline</a> *anoutline ); 1549</code></pre></div> 1550 1551<p>Create a new outline of a given size.</p> 1552<h4>input</h4> 1553<table class="fields"> 1554<tr><td class="val" id="library">library</td><td class="desc"> 1555<p>A handle to the library object from where the outline is allocated. Note however that the new outline will <strong>not</strong> necessarily be <strong>freed</strong>, when destroying the library, by <code><a href="ft2-base_interface.html#ft_done_freetype">FT_Done_FreeType</a></code>.</p> 1556</td></tr> 1557<tr><td class="val" id="numpoints">numPoints</td><td class="desc"> 1558<p>The maximum number of points within the outline. Must be smaller than or equal to 0xFFFF (65535).</p> 1559</td></tr> 1560<tr><td class="val" id="numcontours">numContours</td><td class="desc"> 1561<p>The maximum number of contours within the outline. This value must be in the range 0 to <code>numPoints</code>.</p> 1562</td></tr> 1563</table> 1564 1565<h4>output</h4> 1566<table class="fields"> 1567<tr><td class="val" id="anoutline">anoutline</td><td class="desc"> 1568<p>A handle to the new outline.</p> 1569</td></tr> 1570</table> 1571 1572<h4>return</h4> 1573 1574<p>FreeType error code. 0 means success.</p> 1575<h4>note</h4> 1576 1577<p>The reason why this function takes a <code>library</code> parameter is simply to use the library's memory allocator.</p> 1578<hr> 1579 1580<h2 id="ft_outline_done">FT_Outline_Done<a class="headerlink" href="#ft_outline_done" title="Permanent link">¶</a></h2> 1581<p>Defined in FT_OUTLINE_H (freetype/ftoutln.h).</p> 1582<div class = "codehilite"><pre><code> FT_EXPORT( <a href="ft2-basic_types.html#ft_error">FT_Error</a> ) 1583 <b>FT_Outline_Done</b>( <a href="ft2-base_interface.html#ft_library">FT_Library</a> library, 1584 <a href="ft2-outline_processing.html#ft_outline">FT_Outline</a>* outline ); 1585</code></pre></div> 1586 1587<p>Destroy an outline created with <code><a href="ft2-outline_processing.html#ft_outline_new">FT_Outline_New</a></code>.</p> 1588<h4>input</h4> 1589<table class="fields"> 1590<tr><td class="val" id="library">library</td><td class="desc"> 1591<p>A handle of the library object used to allocate the outline.</p> 1592</td></tr> 1593<tr><td class="val" id="outline">outline</td><td class="desc"> 1594<p>A pointer to the outline object to be discarded.</p> 1595</td></tr> 1596</table> 1597 1598<h4>return</h4> 1599 1600<p>FreeType error code. 0 means success.</p> 1601<h4>note</h4> 1602 1603<p>If the outline's ‘owner’ field is not set, only the outline descriptor will be released.</p> 1604<hr> 1605 1606<h2 id="ft_outline_copy">FT_Outline_Copy<a class="headerlink" href="#ft_outline_copy" title="Permanent link">¶</a></h2> 1607<p>Defined in FT_OUTLINE_H (freetype/ftoutln.h).</p> 1608<div class = "codehilite"><pre><code> FT_EXPORT( <a href="ft2-basic_types.html#ft_error">FT_Error</a> ) 1609 <b>FT_Outline_Copy</b>( <span class="keyword">const</span> <a href="ft2-outline_processing.html#ft_outline">FT_Outline</a>* source, 1610 <a href="ft2-outline_processing.html#ft_outline">FT_Outline</a> *target ); 1611</code></pre></div> 1612 1613<p>Copy an outline into another one. Both objects must have the same sizes (number of points & number of contours) when this function is called.</p> 1614<h4>input</h4> 1615<table class="fields"> 1616<tr><td class="val" id="source">source</td><td class="desc"> 1617<p>A handle to the source outline.</p> 1618</td></tr> 1619</table> 1620 1621<h4>output</h4> 1622<table class="fields"> 1623<tr><td class="val" id="target">target</td><td class="desc"> 1624<p>A handle to the target outline.</p> 1625</td></tr> 1626</table> 1627 1628<h4>return</h4> 1629 1630<p>FreeType error code. 0 means success.</p> 1631<hr> 1632 1633<h2 id="ft_outline_translate">FT_Outline_Translate<a class="headerlink" href="#ft_outline_translate" title="Permanent link">¶</a></h2> 1634<p>Defined in FT_OUTLINE_H (freetype/ftoutln.h).</p> 1635<div class = "codehilite"><pre><code> FT_EXPORT( <span class="keyword">void</span> ) 1636 <b>FT_Outline_Translate</b>( <span class="keyword">const</span> <a href="ft2-outline_processing.html#ft_outline">FT_Outline</a>* outline, 1637 <a href="ft2-basic_types.html#ft_pos">FT_Pos</a> xOffset, 1638 <a href="ft2-basic_types.html#ft_pos">FT_Pos</a> yOffset ); 1639</code></pre></div> 1640 1641<p>Apply a simple translation to the points of an outline.</p> 1642<h4>inout</h4> 1643<table class="fields"> 1644<tr><td class="val" id="outline">outline</td><td class="desc"> 1645<p>A pointer to the target outline descriptor.</p> 1646</td></tr> 1647</table> 1648 1649<h4>input</h4> 1650<table class="fields"> 1651<tr><td class="val" id="xoffset">xOffset</td><td class="desc"> 1652<p>The horizontal offset.</p> 1653</td></tr> 1654<tr><td class="val" id="yoffset">yOffset</td><td class="desc"> 1655<p>The vertical offset.</p> 1656</td></tr> 1657</table> 1658 1659<hr> 1660 1661<h2 id="ft_outline_transform">FT_Outline_Transform<a class="headerlink" href="#ft_outline_transform" title="Permanent link">¶</a></h2> 1662<p>Defined in FT_OUTLINE_H (freetype/ftoutln.h).</p> 1663<div class = "codehilite"><pre><code> FT_EXPORT( <span class="keyword">void</span> ) 1664 <b>FT_Outline_Transform</b>( <span class="keyword">const</span> <a href="ft2-outline_processing.html#ft_outline">FT_Outline</a>* outline, 1665 <span class="keyword">const</span> <a href="ft2-basic_types.html#ft_matrix">FT_Matrix</a>* matrix ); 1666</code></pre></div> 1667 1668<p>Apply a simple 2x2 matrix to all of an outline's points. Useful for applying rotations, slanting, flipping, etc.</p> 1669<h4>inout</h4> 1670<table class="fields"> 1671<tr><td class="val" id="outline">outline</td><td class="desc"> 1672<p>A pointer to the target outline descriptor.</p> 1673</td></tr> 1674</table> 1675 1676<h4>input</h4> 1677<table class="fields"> 1678<tr><td class="val" id="matrix">matrix</td><td class="desc"> 1679<p>A pointer to the transformation matrix.</p> 1680</td></tr> 1681</table> 1682 1683<h4>note</h4> 1684 1685<p>You can use <code><a href="ft2-outline_processing.html#ft_outline_translate">FT_Outline_Translate</a></code> if you need to translate the outline's points.</p> 1686<hr> 1687 1688<h2 id="ft_outline_embolden">FT_Outline_Embolden<a class="headerlink" href="#ft_outline_embolden" title="Permanent link">¶</a></h2> 1689<p>Defined in FT_OUTLINE_H (freetype/ftoutln.h).</p> 1690<div class = "codehilite"><pre><code> FT_EXPORT( <a href="ft2-basic_types.html#ft_error">FT_Error</a> ) 1691 <b>FT_Outline_Embolden</b>( <a href="ft2-outline_processing.html#ft_outline">FT_Outline</a>* outline, 1692 <a href="ft2-basic_types.html#ft_pos">FT_Pos</a> strength ); 1693</code></pre></div> 1694 1695<p>Embolden an outline. The new outline will be at most 4 times <code>strength</code> pixels wider and higher. You may think of the left and bottom borders as unchanged.</p> 1696<p>Negative <code>strength</code> values to reduce the outline thickness are possible also.</p> 1697<h4>inout</h4> 1698<table class="fields"> 1699<tr><td class="val" id="outline">outline</td><td class="desc"> 1700<p>A handle to the target outline.</p> 1701</td></tr> 1702</table> 1703 1704<h4>input</h4> 1705<table class="fields"> 1706<tr><td class="val" id="strength">strength</td><td class="desc"> 1707<p>How strong the glyph is emboldened. Expressed in 26.6 pixel format.</p> 1708</td></tr> 1709</table> 1710 1711<h4>return</h4> 1712 1713<p>FreeType error code. 0 means success.</p> 1714<h4>note</h4> 1715 1716<p>The used algorithm to increase or decrease the thickness of the glyph doesn't change the number of points; this means that certain situations like acute angles or intersections are sometimes handled incorrectly.</p> 1717<p>If you need ‘better’ metrics values you should call <code><a href="ft2-outline_processing.html#ft_outline_get_cbox">FT_Outline_Get_CBox</a></code> or <code><a href="ft2-outline_processing.html#ft_outline_get_bbox">FT_Outline_Get_BBox</a></code>.</p> 1718<p>To get meaningful results, font scaling values must be set with functions like <code><a href="ft2-base_interface.html#ft_set_char_size">FT_Set_Char_Size</a></code> before calling FT_Render_Glyph.</p> 1719<h4>example</h4> 1720<div class="highlight"><pre><span></span><code> FT_Load_Glyph( face, index, FT_LOAD_DEFAULT ); 1721 1722 if ( face->glyph->format == FT_GLYPH_FORMAT_OUTLINE ) 1723 FT_Outline_Embolden( &face->glyph->outline, strength ); 1724</code></pre></div> 1725<hr> 1726 1727<h2 id="ft_outline_emboldenxy">FT_Outline_EmboldenXY<a class="headerlink" href="#ft_outline_emboldenxy" title="Permanent link">¶</a></h2> 1728<p>Defined in FT_OUTLINE_H (freetype/ftoutln.h).</p> 1729<div class = "codehilite"><pre><code> FT_EXPORT( <a href="ft2-basic_types.html#ft_error">FT_Error</a> ) 1730 <b>FT_Outline_EmboldenXY</b>( <a href="ft2-outline_processing.html#ft_outline">FT_Outline</a>* outline, 1731 <a href="ft2-basic_types.html#ft_pos">FT_Pos</a> xstrength, 1732 <a href="ft2-basic_types.html#ft_pos">FT_Pos</a> ystrength ); 1733</code></pre></div> 1734 1735<p>Embolden an outline. The new outline will be <code>xstrength</code> pixels wider and <code>ystrength</code> pixels higher. Otherwise, it is similar to <code><a href="ft2-outline_processing.html#ft_outline_embolden">FT_Outline_Embolden</a></code>, which uses the same strength in both directions.</p> 1736<h4>since</h4> 1737 1738<p>2.4.10</p> 1739<hr> 1740 1741<h2 id="ft_outline_reverse">FT_Outline_Reverse<a class="headerlink" href="#ft_outline_reverse" title="Permanent link">¶</a></h2> 1742<p>Defined in FT_OUTLINE_H (freetype/ftoutln.h).</p> 1743<div class = "codehilite"><pre><code> FT_EXPORT( <span class="keyword">void</span> ) 1744 <b>FT_Outline_Reverse</b>( <a href="ft2-outline_processing.html#ft_outline">FT_Outline</a>* outline ); 1745</code></pre></div> 1746 1747<p>Reverse the drawing direction of an outline. This is used to ensure consistent fill conventions for mirrored glyphs.</p> 1748<h4>inout</h4> 1749<table class="fields"> 1750<tr><td class="val" id="outline">outline</td><td class="desc"> 1751<p>A pointer to the target outline descriptor.</p> 1752</td></tr> 1753</table> 1754 1755<h4>note</h4> 1756 1757<p>This function toggles the bit flag <code><a href="ft2-outline_processing.html#ft_outline_xxx">FT_OUTLINE_REVERSE_FILL</a></code> in the outline's <code>flags</code> field.</p> 1758<p>It shouldn't be used by a normal client application, unless it knows what it is doing.</p> 1759<hr> 1760 1761<h2 id="ft_outline_check">FT_Outline_Check<a class="headerlink" href="#ft_outline_check" title="Permanent link">¶</a></h2> 1762<p>Defined in FT_OUTLINE_H (freetype/ftoutln.h).</p> 1763<div class = "codehilite"><pre><code> FT_EXPORT( <a href="ft2-basic_types.html#ft_error">FT_Error</a> ) 1764 <b>FT_Outline_Check</b>( <a href="ft2-outline_processing.html#ft_outline">FT_Outline</a>* outline ); 1765</code></pre></div> 1766 1767<p>Check the contents of an outline descriptor.</p> 1768<h4>input</h4> 1769<table class="fields"> 1770<tr><td class="val" id="outline">outline</td><td class="desc"> 1771<p>A handle to a source outline.</p> 1772</td></tr> 1773</table> 1774 1775<h4>return</h4> 1776 1777<p>FreeType error code. 0 means success.</p> 1778<h4>note</h4> 1779 1780<p>An empty outline, or an outline with a single point only is also valid.</p> 1781<hr> 1782 1783<h2 id="ft_outline_get_cbox">FT_Outline_Get_CBox<a class="headerlink" href="#ft_outline_get_cbox" title="Permanent link">¶</a></h2> 1784<p>Defined in FT_OUTLINE_H (freetype/ftoutln.h).</p> 1785<div class = "codehilite"><pre><code> FT_EXPORT( <span class="keyword">void</span> ) 1786 <b>FT_Outline_Get_CBox</b>( <span class="keyword">const</span> <a href="ft2-outline_processing.html#ft_outline">FT_Outline</a>* outline, 1787 <a href="ft2-basic_types.html#ft_bbox">FT_BBox</a> *acbox ); 1788</code></pre></div> 1789 1790<p>Return an outline's ‘control box’. The control box encloses all the outline's points, including Bezier control points. Though it coincides with the exact bounding box for most glyphs, it can be slightly larger in some situations (like when rotating an outline that contains Bezier outside arcs).</p> 1791<p>Computing the control box is very fast, while getting the bounding box can take much more time as it needs to walk over all segments and arcs in the outline. To get the latter, you can use the ‘ftbbox’ component, which is dedicated to this single task.</p> 1792<h4>input</h4> 1793<table class="fields"> 1794<tr><td class="val" id="outline">outline</td><td class="desc"> 1795<p>A pointer to the source outline descriptor.</p> 1796</td></tr> 1797</table> 1798 1799<h4>output</h4> 1800<table class="fields"> 1801<tr><td class="val" id="acbox">acbox</td><td class="desc"> 1802<p>The outline's control box.</p> 1803</td></tr> 1804</table> 1805 1806<h4>note</h4> 1807 1808<p>See <code><a href="ft2-glyph_management.html#ft_glyph_get_cbox">FT_Glyph_Get_CBox</a></code> for a discussion of tricky fonts.</p> 1809<hr> 1810 1811<h2 id="ft_outline_get_bbox">FT_Outline_Get_BBox<a class="headerlink" href="#ft_outline_get_bbox" title="Permanent link">¶</a></h2> 1812<p>Defined in FT_BBOX_H (freetype/ftbbox.h).</p> 1813<div class = "codehilite"><pre><code> FT_EXPORT( <a href="ft2-basic_types.html#ft_error">FT_Error</a> ) 1814 <b>FT_Outline_Get_BBox</b>( <a href="ft2-outline_processing.html#ft_outline">FT_Outline</a>* outline, 1815 <a href="ft2-basic_types.html#ft_bbox">FT_BBox</a> *abbox ); 1816</code></pre></div> 1817 1818<p>Compute the exact bounding box of an outline. This is slower than computing the control box. However, it uses an advanced algorithm that returns <em>very</em> quickly when the two boxes coincide. Otherwise, the outline Bezier arcs are traversed to extract their extrema.</p> 1819<h4>input</h4> 1820<table class="fields"> 1821<tr><td class="val" id="outline">outline</td><td class="desc"> 1822<p>A pointer to the source outline.</p> 1823</td></tr> 1824</table> 1825 1826<h4>output</h4> 1827<table class="fields"> 1828<tr><td class="val" id="abbox">abbox</td><td class="desc"> 1829<p>The outline's exact bounding box.</p> 1830</td></tr> 1831</table> 1832 1833<h4>return</h4> 1834 1835<p>FreeType error code. 0 means success.</p> 1836<h4>note</h4> 1837 1838<p>If the font is tricky and the glyph has been loaded with <code><a href="ft2-base_interface.html#ft_load_xxx">FT_LOAD_NO_SCALE</a></code>, the resulting BBox is meaningless. To get reasonable values for the BBox it is necessary to load the glyph at a large ppem value (so that the hinting instructions can properly shift and scale the subglyphs), then extracting the BBox, which can be eventually converted back to font units.</p> 1839<hr> 1840 1841<h2 id="ft_outline_get_bitmap">FT_Outline_Get_Bitmap<a class="headerlink" href="#ft_outline_get_bitmap" title="Permanent link">¶</a></h2> 1842<p>Defined in FT_OUTLINE_H (freetype/ftoutln.h).</p> 1843<div class = "codehilite"><pre><code> FT_EXPORT( <a href="ft2-basic_types.html#ft_error">FT_Error</a> ) 1844 <b>FT_Outline_Get_Bitmap</b>( <a href="ft2-base_interface.html#ft_library">FT_Library</a> library, 1845 <a href="ft2-outline_processing.html#ft_outline">FT_Outline</a>* outline, 1846 <span class="keyword">const</span> <a href="ft2-basic_types.html#ft_bitmap">FT_Bitmap</a> *abitmap ); 1847</code></pre></div> 1848 1849<p>Render an outline within a bitmap. The outline's image is simply OR-ed to the target bitmap.</p> 1850<h4>input</h4> 1851<table class="fields"> 1852<tr><td class="val" id="library">library</td><td class="desc"> 1853<p>A handle to a FreeType library object.</p> 1854</td></tr> 1855<tr><td class="val" id="outline">outline</td><td class="desc"> 1856<p>A pointer to the source outline descriptor.</p> 1857</td></tr> 1858</table> 1859 1860<h4>inout</h4> 1861<table class="fields"> 1862<tr><td class="val" id="abitmap">abitmap</td><td class="desc"> 1863<p>A pointer to the target bitmap descriptor.</p> 1864</td></tr> 1865</table> 1866 1867<h4>return</h4> 1868 1869<p>FreeType error code. 0 means success.</p> 1870<h4>note</h4> 1871 1872<p>This function does <strong>not create</strong> the bitmap, it only renders an outline image within the one you pass to it! Consequently, the various fields in <code>abitmap</code> should be set accordingly.</p> 1873<p>It will use the raster corresponding to the default glyph format.</p> 1874<p>The value of the <code>num_grays</code> field in <code>abitmap</code> is ignored. If you select the gray-level rasterizer, and you want less than 256 gray levels, you have to use <code><a href="ft2-outline_processing.html#ft_outline_render">FT_Outline_Render</a></code> directly.</p> 1875<hr> 1876 1877<h2 id="ft_outline_render">FT_Outline_Render<a class="headerlink" href="#ft_outline_render" title="Permanent link">¶</a></h2> 1878<p>Defined in FT_OUTLINE_H (freetype/ftoutln.h).</p> 1879<div class = "codehilite"><pre><code> FT_EXPORT( <a href="ft2-basic_types.html#ft_error">FT_Error</a> ) 1880 <b>FT_Outline_Render</b>( <a href="ft2-base_interface.html#ft_library">FT_Library</a> library, 1881 <a href="ft2-outline_processing.html#ft_outline">FT_Outline</a>* outline, 1882 <a href="ft2-raster.html#ft_raster_params">FT_Raster_Params</a>* params ); 1883</code></pre></div> 1884 1885<p>Render an outline within a bitmap using the current scan-convert.</p> 1886<h4>input</h4> 1887<table class="fields"> 1888<tr><td class="val" id="library">library</td><td class="desc"> 1889<p>A handle to a FreeType library object.</p> 1890</td></tr> 1891<tr><td class="val" id="outline">outline</td><td class="desc"> 1892<p>A pointer to the source outline descriptor.</p> 1893</td></tr> 1894</table> 1895 1896<h4>inout</h4> 1897<table class="fields"> 1898<tr><td class="val" id="params">params</td><td class="desc"> 1899<p>A pointer to an <code><a href="ft2-raster.html#ft_raster_params">FT_Raster_Params</a></code> structure used to describe the rendering operation.</p> 1900</td></tr> 1901</table> 1902 1903<h4>return</h4> 1904 1905<p>FreeType error code. 0 means success.</p> 1906<h4>note</h4> 1907 1908<p>This advanced function uses <code><a href="ft2-raster.html#ft_raster_params">FT_Raster_Params</a></code> as an argument. The field <code>params.source</code> will be set to <code>outline</code> before the scan converter is called, which means that the value you give to it is actually ignored. Either <code>params.target</code> must point to preallocated bitmap, or <code><a href="ft2-raster.html#ft_raster_flag_xxx">FT_RASTER_FLAG_DIRECT</a></code> must be set in <code>params.flags</code> allowing FreeType rasterizer to be used for direct composition, translucency, etc. See <code><a href="ft2-raster.html#ft_raster_params">FT_Raster_Params</a></code> for more details.</p> 1909<hr> 1910 1911<h2 id="ft_outline_decompose">FT_Outline_Decompose<a class="headerlink" href="#ft_outline_decompose" title="Permanent link">¶</a></h2> 1912<p>Defined in FT_OUTLINE_H (freetype/ftoutln.h).</p> 1913<div class = "codehilite"><pre><code> FT_EXPORT( <a href="ft2-basic_types.html#ft_error">FT_Error</a> ) 1914 <b>FT_Outline_Decompose</b>( <a href="ft2-outline_processing.html#ft_outline">FT_Outline</a>* outline, 1915 <span class="keyword">const</span> <a href="ft2-outline_processing.html#ft_outline_funcs">FT_Outline_Funcs</a>* func_interface, 1916 <span class="keyword">void</span>* user ); 1917</code></pre></div> 1918 1919<p>Walk over an outline's structure to decompose it into individual segments and Bezier arcs. This function also emits ‘move to’ operations to indicate the start of new contours in the outline.</p> 1920<h4>input</h4> 1921<table class="fields"> 1922<tr><td class="val" id="outline">outline</td><td class="desc"> 1923<p>A pointer to the source target.</p> 1924</td></tr> 1925<tr><td class="val" id="func_interface">func_interface</td><td class="desc"> 1926<p>A table of ‘emitters’, i.e., function pointers called during decomposition to indicate path operations.</p> 1927</td></tr> 1928</table> 1929 1930<h4>inout</h4> 1931<table class="fields"> 1932<tr><td class="val" id="user">user</td><td class="desc"> 1933<p>A typeless pointer that is passed to each emitter during the decomposition. It can be used to store the state during the decomposition.</p> 1934</td></tr> 1935</table> 1936 1937<h4>return</h4> 1938 1939<p>FreeType error code. 0 means success.</p> 1940<h4>note</h4> 1941 1942<p>Degenerate contours, segments, and Bezier arcs may be reported. In most cases, it is best to filter these out before using the outline for stroking or other path modification purposes (which may cause degenerate segments to become non-degenrate and visible, like when stroke caps are used or the path is otherwise outset). Some glyph outlines may contain deliberate degenerate single points for mark attachement.</p> 1943<p>Similarly, the function returns success for an empty outline also (doing nothing, this is, not calling any emitter); if necessary, you should filter this out, too.</p> 1944<hr> 1945 1946<h2 id="ft_outline_funcs">FT_Outline_Funcs<a class="headerlink" href="#ft_outline_funcs" title="Permanent link">¶</a></h2> 1947<p>Defined in FT_IMAGE_H (freetype/ftimage.h).</p> 1948<div class = "codehilite"><pre><code> <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_Outline_Funcs_ 1949 { 1950 <a href="ft2-outline_processing.html#ft_outline_movetofunc">FT_Outline_MoveToFunc</a> move_to; 1951 <a href="ft2-outline_processing.html#ft_outline_linetofunc">FT_Outline_LineToFunc</a> line_to; 1952 <a href="ft2-outline_processing.html#ft_outline_conictofunc">FT_Outline_ConicToFunc</a> conic_to; 1953 <a href="ft2-outline_processing.html#ft_outline_cubictofunc">FT_Outline_CubicToFunc</a> cubic_to; 1954 1955 <span class="keyword">int</span> shift; 1956 <a href="ft2-basic_types.html#ft_pos">FT_Pos</a> delta; 1957 1958 } <b>FT_Outline_Funcs</b>; 1959</code></pre></div> 1960 1961<p>A structure to hold various function pointers used during outline decomposition in order to emit segments, conic, and cubic Beziers.</p> 1962<h4>fields</h4> 1963<table class="fields"> 1964<tr><td class="val" id="move_to">move_to</td><td class="desc"> 1965<p>The ‘move to’ emitter.</p> 1966</td></tr> 1967<tr><td class="val" id="line_to">line_to</td><td class="desc"> 1968<p>The segment emitter.</p> 1969</td></tr> 1970<tr><td class="val" id="conic_to">conic_to</td><td class="desc"> 1971<p>The second-order Bezier arc emitter.</p> 1972</td></tr> 1973<tr><td class="val" id="cubic_to">cubic_to</td><td class="desc"> 1974<p>The third-order Bezier arc emitter.</p> 1975</td></tr> 1976<tr><td class="val" id="shift">shift</td><td class="desc"> 1977<p>The shift that is applied to coordinates before they are sent to the emitter.</p> 1978</td></tr> 1979<tr><td class="val" id="delta">delta</td><td class="desc"> 1980<p>The delta that is applied to coordinates before they are sent to the emitter, but after the shift.</p> 1981</td></tr> 1982</table> 1983 1984<h4>note</h4> 1985 1986<p>The point coordinates sent to the emitters are the transformed version of the original coordinates (this is important for high accuracy during scan-conversion). The transformation is simple: 1987<div class="highlight"><pre><span></span><code> x' = (x << shift) - delta 1988 y' = (y << shift) - delta 1989</code></pre></div></p> 1990<p>Set the values of <code>shift</code> and <code>delta</code> to 0 to get the original point coordinates.</p> 1991<hr> 1992 1993<h2 id="ft_outline_movetofunc">FT_Outline_MoveToFunc<a class="headerlink" href="#ft_outline_movetofunc" title="Permanent link">¶</a></h2> 1994<p>Defined in FT_IMAGE_H (freetype/ftimage.h).</p> 1995<div class = "codehilite"><pre><code> <span class="keyword">typedef</span> <span class="keyword">int</span> 1996 (*<b>FT_Outline_MoveToFunc</b>)( <span class="keyword">const</span> <a href="ft2-basic_types.html#ft_vector">FT_Vector</a>* to, 1997 <span class="keyword">void</span>* user ); 1998 1999#<span class="keyword">define</span> FT_Outline_MoveTo_Func <b>FT_Outline_MoveToFunc</b> 2000</code></pre></div> 2001 2002<p>A function pointer type used to describe the signature of a ‘move to’ function during outline walking/decomposition.</p> 2003<p>A ‘move to’ is emitted to start a new contour in an outline.</p> 2004<h4>input</h4> 2005<table class="fields"> 2006<tr><td class="val" id="to">to</td><td class="desc"> 2007<p>A pointer to the target point of the ‘move to’.</p> 2008</td></tr> 2009<tr><td class="val" id="user">user</td><td class="desc"> 2010<p>A typeless pointer, which is passed from the caller of the decomposition function.</p> 2011</td></tr> 2012</table> 2013 2014<h4>return</h4> 2015 2016<p>Error code. 0 means success.</p> 2017<hr> 2018 2019<h2 id="ft_outline_linetofunc">FT_Outline_LineToFunc<a class="headerlink" href="#ft_outline_linetofunc" title="Permanent link">¶</a></h2> 2020<p>Defined in FT_IMAGE_H (freetype/ftimage.h).</p> 2021<div class = "codehilite"><pre><code> <span class="keyword">typedef</span> <span class="keyword">int</span> 2022 (*<b>FT_Outline_LineToFunc</b>)( <span class="keyword">const</span> <a href="ft2-basic_types.html#ft_vector">FT_Vector</a>* to, 2023 <span class="keyword">void</span>* user ); 2024 2025#<span class="keyword">define</span> FT_Outline_LineTo_Func <b>FT_Outline_LineToFunc</b> 2026</code></pre></div> 2027 2028<p>A function pointer type used to describe the signature of a ‘line to’ function during outline walking/decomposition.</p> 2029<p>A ‘line to’ is emitted to indicate a segment in the outline.</p> 2030<h4>input</h4> 2031<table class="fields"> 2032<tr><td class="val" id="to">to</td><td class="desc"> 2033<p>A pointer to the target point of the ‘line to’.</p> 2034</td></tr> 2035<tr><td class="val" id="user">user</td><td class="desc"> 2036<p>A typeless pointer, which is passed from the caller of the decomposition function.</p> 2037</td></tr> 2038</table> 2039 2040<h4>return</h4> 2041 2042<p>Error code. 0 means success.</p> 2043<hr> 2044 2045<h2 id="ft_outline_conictofunc">FT_Outline_ConicToFunc<a class="headerlink" href="#ft_outline_conictofunc" title="Permanent link">¶</a></h2> 2046<p>Defined in FT_IMAGE_H (freetype/ftimage.h).</p> 2047<div class = "codehilite"><pre><code> <span class="keyword">typedef</span> <span class="keyword">int</span> 2048 (*<b>FT_Outline_ConicToFunc</b>)( <span class="keyword">const</span> <a href="ft2-basic_types.html#ft_vector">FT_Vector</a>* control, 2049 <span class="keyword">const</span> <a href="ft2-basic_types.html#ft_vector">FT_Vector</a>* to, 2050 <span class="keyword">void</span>* user ); 2051 2052#<span class="keyword">define</span> FT_Outline_ConicTo_Func <b>FT_Outline_ConicToFunc</b> 2053</code></pre></div> 2054 2055<p>A function pointer type used to describe the signature of a ‘conic to’ function during outline walking or decomposition.</p> 2056<p>A ‘conic to’ is emitted to indicate a second-order Bezier arc in the outline.</p> 2057<h4>input</h4> 2058<table class="fields"> 2059<tr><td class="val" id="control">control</td><td class="desc"> 2060<p>An intermediate control point between the last position and the new target in <code>to</code>.</p> 2061</td></tr> 2062<tr><td class="val" id="to">to</td><td class="desc"> 2063<p>A pointer to the target end point of the conic arc.</p> 2064</td></tr> 2065<tr><td class="val" id="user">user</td><td class="desc"> 2066<p>A typeless pointer, which is passed from the caller of the decomposition function.</p> 2067</td></tr> 2068</table> 2069 2070<h4>return</h4> 2071 2072<p>Error code. 0 means success.</p> 2073<hr> 2074 2075<h2 id="ft_outline_cubictofunc">FT_Outline_CubicToFunc<a class="headerlink" href="#ft_outline_cubictofunc" title="Permanent link">¶</a></h2> 2076<p>Defined in FT_IMAGE_H (freetype/ftimage.h).</p> 2077<div class = "codehilite"><pre><code> <span class="keyword">typedef</span> <span class="keyword">int</span> 2078 (*<b>FT_Outline_CubicToFunc</b>)( <span class="keyword">const</span> <a href="ft2-basic_types.html#ft_vector">FT_Vector</a>* control1, 2079 <span class="keyword">const</span> <a href="ft2-basic_types.html#ft_vector">FT_Vector</a>* control2, 2080 <span class="keyword">const</span> <a href="ft2-basic_types.html#ft_vector">FT_Vector</a>* to, 2081 <span class="keyword">void</span>* user ); 2082 2083#<span class="keyword">define</span> FT_Outline_CubicTo_Func <b>FT_Outline_CubicToFunc</b> 2084</code></pre></div> 2085 2086<p>A function pointer type used to describe the signature of a ‘cubic to’ function during outline walking or decomposition.</p> 2087<p>A ‘cubic to’ is emitted to indicate a third-order Bezier arc.</p> 2088<h4>input</h4> 2089<table class="fields"> 2090<tr><td class="val" id="control1">control1</td><td class="desc"> 2091<p>A pointer to the first Bezier control point.</p> 2092</td></tr> 2093<tr><td class="val" id="control2">control2</td><td class="desc"> 2094<p>A pointer to the second Bezier control point.</p> 2095</td></tr> 2096<tr><td class="val" id="to">to</td><td class="desc"> 2097<p>A pointer to the target end point.</p> 2098</td></tr> 2099<tr><td class="val" id="user">user</td><td class="desc"> 2100<p>A typeless pointer, which is passed from the caller of the decomposition function.</p> 2101</td></tr> 2102</table> 2103 2104<h4>return</h4> 2105 2106<p>Error code. 0 means success.</p> 2107<hr> 2108 2109<h2 id="ft_orientation">FT_Orientation<a class="headerlink" href="#ft_orientation" title="Permanent link">¶</a></h2> 2110<p>Defined in FT_OUTLINE_H (freetype/ftoutln.h).</p> 2111<div class = "codehilite"><pre><code> <span class="keyword">typedef</span> <span class="keyword">enum</span> FT_Orientation_ 2112 { 2113 <a href="ft2-outline_processing.html#ft_orientation_truetype">FT_ORIENTATION_TRUETYPE</a> = 0, 2114 <a href="ft2-outline_processing.html#ft_orientation_postscript">FT_ORIENTATION_POSTSCRIPT</a> = 1, 2115 <a href="ft2-outline_processing.html#ft_orientation_fill_right">FT_ORIENTATION_FILL_RIGHT</a> = <a href="ft2-outline_processing.html#ft_orientation_truetype">FT_ORIENTATION_TRUETYPE</a>, 2116 <a href="ft2-outline_processing.html#ft_orientation_fill_left">FT_ORIENTATION_FILL_LEFT</a> = <a href="ft2-outline_processing.html#ft_orientation_postscript">FT_ORIENTATION_POSTSCRIPT</a>, 2117 <a href="ft2-outline_processing.html#ft_orientation_none">FT_ORIENTATION_NONE</a> 2118 2119 } <b>FT_Orientation</b>; 2120</code></pre></div> 2121 2122<p>A list of values used to describe an outline's contour orientation.</p> 2123<p>The TrueType and PostScript specifications use different conventions to determine whether outline contours should be filled or unfilled.</p> 2124<h4>values</h4> 2125<table class="fields"> 2126<tr><td class="val" id="ft_orientation_truetype">FT_ORIENTATION_TRUETYPE</td><td class="desc"> 2127<p>According to the TrueType specification, clockwise contours must be filled, and counter-clockwise ones must be unfilled.</p> 2128</td></tr> 2129<tr><td class="val" id="ft_orientation_postscript">FT_ORIENTATION_POSTSCRIPT</td><td class="desc"> 2130<p>According to the PostScript specification, counter-clockwise contours must be filled, and clockwise ones must be unfilled.</p> 2131</td></tr> 2132<tr><td class="val" id="ft_orientation_fill_right">FT_ORIENTATION_FILL_RIGHT</td><td class="desc"> 2133<p>This is identical to <code><a href="ft2-outline_processing.html#ft_orientation">FT_ORIENTATION_TRUETYPE</a></code>, but is used to remember that in TrueType, everything that is to the right of the drawing direction of a contour must be filled.</p> 2134</td></tr> 2135<tr><td class="val" id="ft_orientation_fill_left">FT_ORIENTATION_FILL_LEFT</td><td class="desc"> 2136<p>This is identical to <code><a href="ft2-outline_processing.html#ft_orientation">FT_ORIENTATION_POSTSCRIPT</a></code>, but is used to remember that in PostScript, everything that is to the left of the drawing direction of a contour must be filled.</p> 2137</td></tr> 2138<tr><td class="val" id="ft_orientation_none">FT_ORIENTATION_NONE</td><td class="desc"> 2139<p>The orientation cannot be determined. That is, different parts of the glyph have different orientation.</p> 2140</td></tr> 2141</table> 2142 2143<hr> 2144 2145<h2 id="ft_outline_get_orientation">FT_Outline_Get_Orientation<a class="headerlink" href="#ft_outline_get_orientation" title="Permanent link">¶</a></h2> 2146<p>Defined in FT_OUTLINE_H (freetype/ftoutln.h).</p> 2147<div class = "codehilite"><pre><code> FT_EXPORT( <a href="ft2-outline_processing.html#ft_orientation">FT_Orientation</a> ) 2148 <b>FT_Outline_Get_Orientation</b>( <a href="ft2-outline_processing.html#ft_outline">FT_Outline</a>* outline ); 2149</code></pre></div> 2150 2151<p>This function analyzes a glyph outline and tries to compute its fill orientation (see <code><a href="ft2-outline_processing.html#ft_orientation">FT_Orientation</a></code>). This is done by integrating the total area covered by the outline. The positive integral corresponds to the clockwise orientation and <code><a href="ft2-outline_processing.html#ft_orientation">FT_ORIENTATION_POSTSCRIPT</a></code> is returned. The negative integral corresponds to the counter-clockwise orientation and <code><a href="ft2-outline_processing.html#ft_orientation">FT_ORIENTATION_TRUETYPE</a></code> is returned.</p> 2152<p>Note that this will return <code><a href="ft2-outline_processing.html#ft_orientation">FT_ORIENTATION_TRUETYPE</a></code> for empty outlines.</p> 2153<h4>input</h4> 2154<table class="fields"> 2155<tr><td class="val" id="outline">outline</td><td class="desc"> 2156<p>A handle to the source outline.</p> 2157</td></tr> 2158</table> 2159 2160<h4>return</h4> 2161 2162<p>The orientation.</p> 2163<hr> 2164 2165<h2 id="ft_outline_xxx">FT_OUTLINE_XXX<a class="headerlink" href="#ft_outline_xxx" title="Permanent link">¶</a></h2> 2166<p>Defined in FT_IMAGE_H (freetype/ftimage.h).</p> 2167<div class = "codehilite"><pre><code>#<span class="keyword">define</span> <a href="ft2-outline_processing.html#ft_outline_none">FT_OUTLINE_NONE</a> 0x0 2168#<span class="keyword">define</span> <a href="ft2-outline_processing.html#ft_outline_owner">FT_OUTLINE_OWNER</a> 0x1 2169#<span class="keyword">define</span> <a href="ft2-outline_processing.html#ft_outline_even_odd_fill">FT_OUTLINE_EVEN_ODD_FILL</a> 0x2 2170#<span class="keyword">define</span> <a href="ft2-outline_processing.html#ft_outline_reverse_fill">FT_OUTLINE_REVERSE_FILL</a> 0x4 2171#<span class="keyword">define</span> <a href="ft2-outline_processing.html#ft_outline_ignore_dropouts">FT_OUTLINE_IGNORE_DROPOUTS</a> 0x8 2172#<span class="keyword">define</span> <a href="ft2-outline_processing.html#ft_outline_smart_dropouts">FT_OUTLINE_SMART_DROPOUTS</a> 0x10 2173#<span class="keyword">define</span> <a href="ft2-outline_processing.html#ft_outline_include_stubs">FT_OUTLINE_INCLUDE_STUBS</a> 0x20 2174#<span class="keyword">define</span> <a href="ft2-outline_processing.html#ft_outline_overlap">FT_OUTLINE_OVERLAP</a> 0x40 2175 2176#<span class="keyword">define</span> <a href="ft2-outline_processing.html#ft_outline_high_precision">FT_OUTLINE_HIGH_PRECISION</a> 0x100 2177#<span class="keyword">define</span> <a href="ft2-outline_processing.html#ft_outline_single_pass">FT_OUTLINE_SINGLE_PASS</a> 0x200 2178 2179 2180 /* these constants are deprecated; use the corresponding */ 2181 /* `<b>FT_OUTLINE_XXX</b>` values instead */ 2182#<span class="keyword">define</span> ft_outline_none <a href="ft2-outline_processing.html#ft_outline_none">FT_OUTLINE_NONE</a> 2183#<span class="keyword">define</span> ft_outline_owner <a href="ft2-outline_processing.html#ft_outline_owner">FT_OUTLINE_OWNER</a> 2184#<span class="keyword">define</span> ft_outline_even_odd_fill <a href="ft2-outline_processing.html#ft_outline_even_odd_fill">FT_OUTLINE_EVEN_ODD_FILL</a> 2185#<span class="keyword">define</span> ft_outline_reverse_fill <a href="ft2-outline_processing.html#ft_outline_reverse_fill">FT_OUTLINE_REVERSE_FILL</a> 2186#<span class="keyword">define</span> ft_outline_ignore_dropouts <a href="ft2-outline_processing.html#ft_outline_ignore_dropouts">FT_OUTLINE_IGNORE_DROPOUTS</a> 2187#<span class="keyword">define</span> ft_outline_high_precision <a href="ft2-outline_processing.html#ft_outline_high_precision">FT_OUTLINE_HIGH_PRECISION</a> 2188#<span class="keyword">define</span> ft_outline_single_pass <a href="ft2-outline_processing.html#ft_outline_single_pass">FT_OUTLINE_SINGLE_PASS</a> 2189</code></pre></div> 2190 2191<p>A list of bit-field constants used for the flags in an outline's <code>flags</code> field.</p> 2192<h4>values</h4> 2193<table class="fields long"> 2194<tr><td class="val" id="ft_outline_none">FT_OUTLINE_NONE</td><td class="desc"> 2195<p>Value 0 is reserved.</p> 2196</td></tr> 2197<tr><td class="val" id="ft_outline_owner">FT_OUTLINE_OWNER</td><td class="desc"> 2198<p>If set, this flag indicates that the outline's field arrays (i.e., <code>points</code>, <code>flags</code>, and <code>contours</code>) are ‘owned’ by the outline object, and should thus be freed when it is destroyed.</p> 2199</td></tr> 2200<tr><td class="val" id="ft_outline_even_odd_fill">FT_OUTLINE_EVEN_ODD_FILL</td><td class="desc"> 2201<p>By default, outlines are filled using the non-zero winding rule. If set to 1, the outline will be filled using the even-odd fill rule (only works with the smooth rasterizer).</p> 2202</td></tr> 2203<tr><td class="val" id="ft_outline_reverse_fill">FT_OUTLINE_REVERSE_FILL</td><td class="desc"> 2204<p>By default, outside contours of an outline are oriented in clock-wise direction, as defined in the TrueType specification. This flag is set if the outline uses the opposite direction (typically for Type 1 fonts). This flag is ignored by the scan converter.</p> 2205</td></tr> 2206<tr><td class="val" id="ft_outline_ignore_dropouts">FT_OUTLINE_IGNORE_DROPOUTS</td><td class="desc"> 2207<p>By default, the scan converter will try to detect drop-outs in an outline and correct the glyph bitmap to ensure consistent shape continuity. If set, this flag hints the scan-line converter to ignore such cases. See below for more information.</p> 2208</td></tr> 2209<tr><td class="val" id="ft_outline_smart_dropouts">FT_OUTLINE_SMART_DROPOUTS</td><td class="desc"> 2210<p>Select smart dropout control. If unset, use simple dropout control. Ignored if <code><a href="ft2-outline_processing.html#ft_outline_xxx">FT_OUTLINE_IGNORE_DROPOUTS</a></code> is set. See below for more information.</p> 2211</td></tr> 2212<tr><td class="val" id="ft_outline_include_stubs">FT_OUTLINE_INCLUDE_STUBS</td><td class="desc"> 2213<p>If set, turn pixels on for ‘stubs’, otherwise exclude them. Ignored if <code><a href="ft2-outline_processing.html#ft_outline_xxx">FT_OUTLINE_IGNORE_DROPOUTS</a></code> is set. See below for more information.</p> 2214</td></tr> 2215<tr><td class="val" id="ft_outline_overlap">FT_OUTLINE_OVERLAP</td><td class="desc"> 2216<p>[Since 2.10.3] This flag indicates that this outline contains overlapping contours and the anti-aliased renderer should perform oversampling to mitigate possible artifacts. This flag should <em>not</em> be set for well designed glyphs without overlaps because it quadruples the rendering time.</p> 2217</td></tr> 2218<tr><td class="val" id="ft_outline_high_precision">FT_OUTLINE_HIGH_PRECISION</td><td class="desc"> 2219<p>This flag indicates that the scan-line converter should try to convert this outline to bitmaps with the highest possible quality. It is typically set for small character sizes. Note that this is only a hint that might be completely ignored by a given scan-converter.</p> 2220</td></tr> 2221<tr><td class="val" id="ft_outline_single_pass">FT_OUTLINE_SINGLE_PASS</td><td class="desc"> 2222<p>This flag is set to force a given scan-converter to only use a single pass over the outline to render a bitmap glyph image. Normally, it is set for very large character sizes. It is only a hint that might be completely ignored by a given scan-converter.</p> 2223</td></tr> 2224</table> 2225 2226<h4>note</h4> 2227 2228<p>The flags <code><a href="ft2-outline_processing.html#ft_outline_xxx">FT_OUTLINE_IGNORE_DROPOUTS</a></code>, <code><a href="ft2-outline_processing.html#ft_outline_xxx">FT_OUTLINE_SMART_DROPOUTS</a></code>, and <code><a href="ft2-outline_processing.html#ft_outline_xxx">FT_OUTLINE_INCLUDE_STUBS</a></code> are ignored by the smooth rasterizer.</p> 2229<p>There exists a second mechanism to pass the drop-out mode to the B/W rasterizer; see the <code>tags</code> field in <code><a href="ft2-outline_processing.html#ft_outline">FT_Outline</a></code>.</p> 2230<p>Please refer to the description of the ‘SCANTYPE’ instruction in the OpenType specification (in file <code>ttinst1.doc</code>) how simple drop-outs, smart drop-outs, and stubs are defined.</p> 2231<hr> 2232 2233 2234 2235 2236 2237 2238 2239 </article> 2240 </div> 2241 </div> 2242 2243 </main> 2244 2245 2246<footer class="md-footer"> 2247 2248 <nav class="md-footer__inner md-grid" aria-label="Footer"> 2249 2250 2251 <a href="ft2-list_processing.html" class="md-footer__link md-footer__link--prev" aria-label="Previous: List Processing" rel="prev"> 2252 <div class="md-footer__button md-icon"> 2253 <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> 2254 </div> 2255 <div class="md-footer__title"> 2256 <div class="md-ellipsis"> 2257 <span class="md-footer__direction"> 2258 Previous 2259 </span> 2260 List Processing 2261 </div> 2262 </div> 2263 </a> 2264 2265 2266 2267 <a href="ft2-quick_advance.html" class="md-footer__link md-footer__link--next" aria-label="Next: Quick retrieval of advance values" rel="next"> 2268 <div class="md-footer__title"> 2269 <div class="md-ellipsis"> 2270 <span class="md-footer__direction"> 2271 Next 2272 </span> 2273 Quick retrieval of advance values 2274 </div> 2275 </div> 2276 <div class="md-footer__button md-icon"> 2277 <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> 2278 </div> 2279 </a> 2280 2281 </nav> 2282 2283 <div class="md-footer-meta md-typeset"> 2284 <div class="md-footer-meta__inner md-grid"> 2285 <div class="md-footer-copyright"> 2286 2287 <div class="md-footer-copyright__highlight"> 2288 Copyright 2022 <a href = "https://www.freetype.org/license.html">The FreeType Project</a>. 2289 </div> 2290 2291 Made with 2292 <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener"> 2293 Material for MkDocs 2294 </a> 2295 2296 </div> 2297 2298 </div> 2299 </div> 2300</footer> 2301 2302 </div> 2303 <div class="md-dialog" data-md-component="dialog"> 2304 <div class="md-dialog__inner md-typeset"></div> 2305 </div> 2306 <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> 2307 2308 2309 <script src="assets/javascripts/bundle.82b56eb2.min.js"></script> 2310 2311 <script src="javascripts/extra.js"></script> 2312 2313 2314 </body> 2315</html>