Imported Upstream version 2.13.2
[platform/upstream/freetype2.git] / docs / reference / ft2-outline_processing.html
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.13.2">
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.4.3, mkdocs-material-7.1.9">
18     
19     
20       
21         <title>Outline Processing - FreeType-2.13.2 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.13.2 API Reference" class="md-header__button md-logo" aria-label="FreeType-2.13.2 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.13.2 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.13.2 API Reference" class="md-nav__button md-logo" aria-label="FreeType-2.13.2 API Reference" data-md-component="logo">
165       
166   <img src="images/favico.ico" alt="logo">
167
168     </a>
169     FreeType-2.13.2 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-basic_types.html" class="md-nav__link">
300         Basic Data Types
301       </a>
302     </li>
303   
304
305           
306             
307   
308   
309   
310     <li class="md-nav__item">
311       <a href="ft2-library_setup.html" class="md-nav__link">
312         Library Setup
313       </a>
314     </li>
315   
316
317           
318             
319   
320   
321   
322     <li class="md-nav__item">
323       <a href="ft2-face_creation.html" class="md-nav__link">
324         Face Creation
325       </a>
326     </li>
327   
328
329           
330             
331   
332   
333   
334     <li class="md-nav__item">
335       <a href="ft2-font_testing_macros.html" class="md-nav__link">
336         Font Testing Macros
337       </a>
338     </li>
339   
340
341           
342             
343   
344   
345   
346     <li class="md-nav__item">
347       <a href="ft2-sizing_and_scaling.html" class="md-nav__link">
348         Sizing and Scaling
349       </a>
350     </li>
351   
352
353           
354             
355   
356   
357   
358     <li class="md-nav__item">
359       <a href="ft2-glyph_retrieval.html" class="md-nav__link">
360         Glyph Retrieval
361       </a>
362     </li>
363   
364
365           
366             
367   
368   
369   
370     <li class="md-nav__item">
371       <a href="ft2-character_mapping.html" class="md-nav__link">
372         Character Mapping
373       </a>
374     </li>
375   
376
377           
378             
379   
380   
381   
382     <li class="md-nav__item">
383       <a href="ft2-information_retrieval.html" class="md-nav__link">
384         Information Retrieval
385       </a>
386     </li>
387   
388
389           
390             
391   
392   
393   
394     <li class="md-nav__item">
395       <a href="ft2-other_api_data.html" class="md-nav__link">
396         Other API Data
397       </a>
398     </li>
399   
400
401           
402         </ul>
403       </nav>
404     </li>
405   
406
407     
408       
409       
410       
411
412   
413   
414   
415     
416     <li class="md-nav__item md-nav__item--nested">
417       
418       
419         <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_5" type="checkbox" id="__nav_5" >
420       
421       <label class="md-nav__link" for="__nav_5">
422         Extended API
423         <span class="md-nav__icon md-icon"></span>
424       </label>
425       <nav class="md-nav" aria-label="Extended API" data-md-level="1">
426         <label class="md-nav__title" for="__nav_5">
427           <span class="md-nav__icon md-icon"></span>
428           Extended API
429         </label>
430         <ul class="md-nav__list" data-md-scrollfix>
431           
432             
433   
434   
435   
436     <li class="md-nav__item">
437       <a href="ft2-glyph_variants.html" class="md-nav__link">
438         Unicode Variation Sequences
439       </a>
440     </li>
441   
442
443           
444             
445   
446   
447   
448     <li class="md-nav__item">
449       <a href="ft2-color_management.html" class="md-nav__link">
450         Glyph Color Management
451       </a>
452     </li>
453   
454
455           
456             
457   
458   
459   
460     <li class="md-nav__item">
461       <a href="ft2-layer_management.html" class="md-nav__link">
462         Glyph Layer Management
463       </a>
464     </li>
465   
466
467           
468             
469   
470   
471   
472     <li class="md-nav__item">
473       <a href="ft2-glyph_management.html" class="md-nav__link">
474         Glyph Management
475       </a>
476     </li>
477   
478
479           
480             
481   
482   
483   
484     <li class="md-nav__item">
485       <a href="ft2-mac_specific.html" class="md-nav__link">
486         Mac Specific Interface
487       </a>
488     </li>
489   
490
491           
492             
493   
494   
495   
496     <li class="md-nav__item">
497       <a href="ft2-sizes_management.html" class="md-nav__link">
498         Size Management
499       </a>
500     </li>
501   
502
503           
504             
505   
506   
507   
508     <li class="md-nav__item">
509       <a href="ft2-header_file_macros.html" class="md-nav__link">
510         Header File Macros
511       </a>
512     </li>
513   
514
515           
516         </ul>
517       </nav>
518     </li>
519   
520
521     
522       
523       
524       
525
526   
527   
528   
529     
530     <li class="md-nav__item md-nav__item--nested">
531       
532       
533         <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_6" type="checkbox" id="__nav_6" >
534       
535       <label class="md-nav__link" for="__nav_6">
536         Format-Specific API
537         <span class="md-nav__icon md-icon"></span>
538       </label>
539       <nav class="md-nav" aria-label="Format-Specific API" data-md-level="1">
540         <label class="md-nav__title" for="__nav_6">
541           <span class="md-nav__icon md-icon"></span>
542           Format-Specific API
543         </label>
544         <ul class="md-nav__list" data-md-scrollfix>
545           
546             
547   
548   
549   
550     <li class="md-nav__item">
551       <a href="ft2-multiple_masters.html" class="md-nav__link">
552         Multiple Masters
553       </a>
554     </li>
555   
556
557           
558             
559   
560   
561   
562     <li class="md-nav__item">
563       <a href="ft2-truetype_tables.html" class="md-nav__link">
564         TrueType Tables
565       </a>
566     </li>
567   
568
569           
570             
571   
572   
573   
574     <li class="md-nav__item">
575       <a href="ft2-type1_tables.html" class="md-nav__link">
576         Type 1 Tables
577       </a>
578     </li>
579   
580
581           
582             
583   
584   
585   
586     <li class="md-nav__item">
587       <a href="ft2-sfnt_names.html" class="md-nav__link">
588         SFNT Names
589       </a>
590     </li>
591   
592
593           
594             
595   
596   
597   
598     <li class="md-nav__item">
599       <a href="ft2-bdf_fonts.html" class="md-nav__link">
600         BDF and PCF Files
601       </a>
602     </li>
603   
604
605           
606             
607   
608   
609   
610     <li class="md-nav__item">
611       <a href="ft2-cid_fonts.html" class="md-nav__link">
612         CID Fonts
613       </a>
614     </li>
615   
616
617           
618             
619   
620   
621   
622     <li class="md-nav__item">
623       <a href="ft2-pfr_fonts.html" class="md-nav__link">
624         PFR Fonts
625       </a>
626     </li>
627   
628
629           
630             
631   
632   
633   
634     <li class="md-nav__item">
635       <a href="ft2-winfnt_fonts.html" class="md-nav__link">
636         Window FNT Files
637       </a>
638     </li>
639   
640
641           
642             
643   
644   
645   
646     <li class="md-nav__item">
647       <a href="ft2-svg_fonts.html" class="md-nav__link">
648         OpenType SVG Fonts
649       </a>
650     </li>
651   
652
653           
654             
655   
656   
657   
658     <li class="md-nav__item">
659       <a href="ft2-font_formats.html" class="md-nav__link">
660         Font Formats
661       </a>
662     </li>
663   
664
665           
666             
667   
668   
669   
670     <li class="md-nav__item">
671       <a href="ft2-gasp_table.html" class="md-nav__link">
672         Gasp Table
673       </a>
674     </li>
675   
676
677           
678         </ul>
679       </nav>
680     </li>
681   
682
683     
684       
685       
686       
687
688   
689   
690   
691     
692     <li class="md-nav__item md-nav__item--nested">
693       
694       
695         <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_7" type="checkbox" id="__nav_7" >
696       
697       <label class="md-nav__link" for="__nav_7">
698         Controlling FreeType Modules
699         <span class="md-nav__icon md-icon"></span>
700       </label>
701       <nav class="md-nav" aria-label="Controlling FreeType Modules" data-md-level="1">
702         <label class="md-nav__title" for="__nav_7">
703           <span class="md-nav__icon md-icon"></span>
704           Controlling FreeType Modules
705         </label>
706         <ul class="md-nav__list" data-md-scrollfix>
707           
708             
709   
710   
711   
712     <li class="md-nav__item">
713       <a href="ft2-auto_hinter.html" class="md-nav__link">
714         The auto-hinter
715       </a>
716     </li>
717   
718
719           
720             
721   
722   
723   
724     <li class="md-nav__item">
725       <a href="ft2-cff_driver.html" class="md-nav__link">
726         The CFF driver
727       </a>
728     </li>
729   
730
731           
732             
733   
734   
735   
736     <li class="md-nav__item">
737       <a href="ft2-t1_cid_driver.html" class="md-nav__link">
738         The Type 1 and CID drivers
739       </a>
740     </li>
741   
742
743           
744             
745   
746   
747   
748     <li class="md-nav__item">
749       <a href="ft2-tt_driver.html" class="md-nav__link">
750         The TrueType driver
751       </a>
752     </li>
753   
754
755           
756             
757   
758   
759   
760     <li class="md-nav__item">
761       <a href="ft2-pcf_driver.html" class="md-nav__link">
762         The PCF driver
763       </a>
764     </li>
765   
766
767           
768             
769   
770   
771   
772     <li class="md-nav__item">
773       <a href="ft2-ot_svg_driver.html" class="md-nav__link">
774         The SVG driver
775       </a>
776     </li>
777   
778
779           
780             
781   
782   
783   
784     <li class="md-nav__item">
785       <a href="ft2-properties.html" class="md-nav__link">
786         Driver properties
787       </a>
788     </li>
789   
790
791           
792             
793   
794   
795   
796     <li class="md-nav__item">
797       <a href="ft2-parameter_tags.html" class="md-nav__link">
798         Parameter Tags
799       </a>
800     </li>
801   
802
803           
804             
805   
806   
807   
808     <li class="md-nav__item">
809       <a href="ft2-lcd_rendering.html" class="md-nav__link">
810         Subpixel Rendering
811       </a>
812     </li>
813   
814
815           
816         </ul>
817       </nav>
818     </li>
819   
820
821     
822       
823       
824       
825
826   
827   
828   
829     
830     <li class="md-nav__item md-nav__item--nested">
831       
832       
833         <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_8" type="checkbox" id="__nav_8" >
834       
835       <label class="md-nav__link" for="__nav_8">
836         Cache Sub-System
837         <span class="md-nav__icon md-icon"></span>
838       </label>
839       <nav class="md-nav" aria-label="Cache Sub-System" data-md-level="1">
840         <label class="md-nav__title" for="__nav_8">
841           <span class="md-nav__icon md-icon"></span>
842           Cache Sub-System
843         </label>
844         <ul class="md-nav__list" data-md-scrollfix>
845           
846             
847   
848   
849   
850     <li class="md-nav__item">
851       <a href="ft2-cache_subsystem.html" class="md-nav__link">
852         Cache Sub-System
853       </a>
854     </li>
855   
856
857           
858         </ul>
859       </nav>
860     </li>
861   
862
863     
864       
865       
866       
867
868   
869   
870     
871   
872   
873     
874     <li class="md-nav__item md-nav__item--active md-nav__item--nested">
875       
876       
877         <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_9" type="checkbox" id="__nav_9" checked>
878       
879       <label class="md-nav__link" for="__nav_9">
880         Support API
881         <span class="md-nav__icon md-icon"></span>
882       </label>
883       <nav class="md-nav" aria-label="Support API" data-md-level="1">
884         <label class="md-nav__title" for="__nav_9">
885           <span class="md-nav__icon md-icon"></span>
886           Support API
887         </label>
888         <ul class="md-nav__list" data-md-scrollfix>
889           
890             
891   
892   
893   
894     <li class="md-nav__item">
895       <a href="ft2-computations.html" class="md-nav__link">
896         Computations
897       </a>
898     </li>
899   
900
901           
902             
903   
904   
905   
906     <li class="md-nav__item">
907       <a href="ft2-list_processing.html" class="md-nav__link">
908         List Processing
909       </a>
910     </li>
911   
912
913           
914             
915   
916   
917     
918   
919   
920     <li class="md-nav__item md-nav__item--active">
921       
922       <input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc">
923       
924       
925         
926       
927       
928         <label class="md-nav__link md-nav__link--active" for="__toc">
929           Outline Processing
930           <span class="md-nav__icon md-icon"></span>
931         </label>
932       
933       <a href="ft2-outline_processing.html" class="md-nav__link md-nav__link--active">
934         Outline Processing
935       </a>
936       
937         
938 <nav class="md-nav md-nav--secondary" aria-label="Table of contents">
939   
940   
941   
942     
943   
944   
945     <label class="md-nav__title" for="__toc">
946       <span class="md-nav__icon md-icon"></span>
947       Table of contents
948     </label>
949     <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
950       
951         <li class="md-nav__item">
952   <a href="#synopsis" class="md-nav__link">
953     Synopsis
954   </a>
955   
956 </li>
957       
958         <li class="md-nav__item">
959   <a href="#ft_outline" class="md-nav__link">
960     FT_Outline
961   </a>
962   
963 </li>
964       
965         <li class="md-nav__item">
966   <a href="#ft_outline_new" class="md-nav__link">
967     FT_Outline_New
968   </a>
969   
970 </li>
971       
972         <li class="md-nav__item">
973   <a href="#ft_outline_done" class="md-nav__link">
974     FT_Outline_Done
975   </a>
976   
977 </li>
978       
979         <li class="md-nav__item">
980   <a href="#ft_outline_copy" class="md-nav__link">
981     FT_Outline_Copy
982   </a>
983   
984 </li>
985       
986         <li class="md-nav__item">
987   <a href="#ft_outline_translate" class="md-nav__link">
988     FT_Outline_Translate
989   </a>
990   
991 </li>
992       
993         <li class="md-nav__item">
994   <a href="#ft_outline_transform" class="md-nav__link">
995     FT_Outline_Transform
996   </a>
997   
998 </li>
999       
1000         <li class="md-nav__item">
1001   <a href="#ft_outline_embolden" class="md-nav__link">
1002     FT_Outline_Embolden
1003   </a>
1004   
1005 </li>
1006       
1007         <li class="md-nav__item">
1008   <a href="#ft_outline_emboldenxy" class="md-nav__link">
1009     FT_Outline_EmboldenXY
1010   </a>
1011   
1012 </li>
1013       
1014         <li class="md-nav__item">
1015   <a href="#ft_outline_reverse" class="md-nav__link">
1016     FT_Outline_Reverse
1017   </a>
1018   
1019 </li>
1020       
1021         <li class="md-nav__item">
1022   <a href="#ft_outline_check" class="md-nav__link">
1023     FT_Outline_Check
1024   </a>
1025   
1026 </li>
1027       
1028         <li class="md-nav__item">
1029   <a href="#ft_outline_get_cbox" class="md-nav__link">
1030     FT_Outline_Get_CBox
1031   </a>
1032   
1033 </li>
1034       
1035         <li class="md-nav__item">
1036   <a href="#ft_outline_get_bbox" class="md-nav__link">
1037     FT_Outline_Get_BBox
1038   </a>
1039   
1040 </li>
1041       
1042         <li class="md-nav__item">
1043   <a href="#ft_outline_get_bitmap" class="md-nav__link">
1044     FT_Outline_Get_Bitmap
1045   </a>
1046   
1047 </li>
1048       
1049         <li class="md-nav__item">
1050   <a href="#ft_outline_render" class="md-nav__link">
1051     FT_Outline_Render
1052   </a>
1053   
1054 </li>
1055       
1056         <li class="md-nav__item">
1057   <a href="#ft_outline_decompose" class="md-nav__link">
1058     FT_Outline_Decompose
1059   </a>
1060   
1061 </li>
1062       
1063         <li class="md-nav__item">
1064   <a href="#ft_outline_funcs" class="md-nav__link">
1065     FT_Outline_Funcs
1066   </a>
1067   
1068 </li>
1069       
1070         <li class="md-nav__item">
1071   <a href="#ft_outline_movetofunc" class="md-nav__link">
1072     FT_Outline_MoveToFunc
1073   </a>
1074   
1075 </li>
1076       
1077         <li class="md-nav__item">
1078   <a href="#ft_outline_linetofunc" class="md-nav__link">
1079     FT_Outline_LineToFunc
1080   </a>
1081   
1082 </li>
1083       
1084         <li class="md-nav__item">
1085   <a href="#ft_outline_conictofunc" class="md-nav__link">
1086     FT_Outline_ConicToFunc
1087   </a>
1088   
1089 </li>
1090       
1091         <li class="md-nav__item">
1092   <a href="#ft_outline_cubictofunc" class="md-nav__link">
1093     FT_Outline_CubicToFunc
1094   </a>
1095   
1096 </li>
1097       
1098         <li class="md-nav__item">
1099   <a href="#ft_orientation" class="md-nav__link">
1100     FT_Orientation
1101   </a>
1102   
1103 </li>
1104       
1105         <li class="md-nav__item">
1106   <a href="#ft_outline_get_orientation" class="md-nav__link">
1107     FT_Outline_Get_Orientation
1108   </a>
1109   
1110 </li>
1111       
1112         <li class="md-nav__item">
1113   <a href="#ft_outline_xxx" class="md-nav__link">
1114     FT_OUTLINE_XXX
1115   </a>
1116   
1117 </li>
1118       
1119     </ul>
1120   
1121 </nav>
1122       
1123     </li>
1124   
1125
1126           
1127             
1128   
1129   
1130   
1131     <li class="md-nav__item">
1132       <a href="ft2-quick_advance.html" class="md-nav__link">
1133         Quick retrieval of advance values
1134       </a>
1135     </li>
1136   
1137
1138           
1139             
1140   
1141   
1142   
1143     <li class="md-nav__item">
1144       <a href="ft2-bitmap_handling.html" class="md-nav__link">
1145         Bitmap Handling
1146       </a>
1147     </li>
1148   
1149
1150           
1151             
1152   
1153   
1154   
1155     <li class="md-nav__item">
1156       <a href="ft2-raster.html" class="md-nav__link">
1157         Scanline Converter
1158       </a>
1159     </li>
1160   
1161
1162           
1163             
1164   
1165   
1166   
1167     <li class="md-nav__item">
1168       <a href="ft2-glyph_stroker.html" class="md-nav__link">
1169         Glyph Stroker
1170       </a>
1171     </li>
1172   
1173
1174           
1175             
1176   
1177   
1178   
1179     <li class="md-nav__item">
1180       <a href="ft2-system_interface.html" class="md-nav__link">
1181         System Interface
1182       </a>
1183     </li>
1184   
1185
1186           
1187             
1188   
1189   
1190   
1191     <li class="md-nav__item">
1192       <a href="ft2-module_management.html" class="md-nav__link">
1193         Module Management
1194       </a>
1195     </li>
1196   
1197
1198           
1199             
1200   
1201   
1202   
1203     <li class="md-nav__item">
1204       <a href="ft2-gzip.html" class="md-nav__link">
1205         GZIP Streams
1206       </a>
1207     </li>
1208   
1209
1210           
1211             
1212   
1213   
1214   
1215     <li class="md-nav__item">
1216       <a href="ft2-lzw.html" class="md-nav__link">
1217         LZW Streams
1218       </a>
1219     </li>
1220   
1221
1222           
1223             
1224   
1225   
1226   
1227     <li class="md-nav__item">
1228       <a href="ft2-bzip2.html" class="md-nav__link">
1229         BZIP2 Streams
1230       </a>
1231     </li>
1232   
1233
1234           
1235             
1236   
1237   
1238   
1239     <li class="md-nav__item">
1240       <a href="ft2-debugging_apis.html" class="md-nav__link">
1241         External Debugging APIs
1242       </a>
1243     </li>
1244   
1245
1246           
1247         </ul>
1248       </nav>
1249     </li>
1250   
1251
1252     
1253       
1254       
1255       
1256
1257   
1258   
1259   
1260     
1261     <li class="md-nav__item md-nav__item--nested">
1262       
1263       
1264         <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_10" type="checkbox" id="__nav_10" >
1265       
1266       <label class="md-nav__link" for="__nav_10">
1267         Error Codes
1268         <span class="md-nav__icon md-icon"></span>
1269       </label>
1270       <nav class="md-nav" aria-label="Error Codes" data-md-level="1">
1271         <label class="md-nav__title" for="__nav_10">
1272           <span class="md-nav__icon md-icon"></span>
1273           Error Codes
1274         </label>
1275         <ul class="md-nav__list" data-md-scrollfix>
1276           
1277             
1278   
1279   
1280   
1281     <li class="md-nav__item">
1282       <a href="ft2-error_enumerations.html" class="md-nav__link">
1283         Error Enumerations
1284       </a>
1285     </li>
1286   
1287
1288           
1289             
1290   
1291   
1292   
1293     <li class="md-nav__item">
1294       <a href="ft2-error_code_values.html" class="md-nav__link">
1295         Error Code Values
1296       </a>
1297     </li>
1298   
1299
1300           
1301         </ul>
1302       </nav>
1303     </li>
1304   
1305
1306     
1307       
1308       
1309       
1310
1311   
1312   
1313   
1314     
1315     <li class="md-nav__item md-nav__item--nested">
1316       
1317       
1318         <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_11" type="checkbox" id="__nav_11" >
1319       
1320       <label class="md-nav__link" for="__nav_11">
1321         Miscellaneous
1322         <span class="md-nav__icon md-icon"></span>
1323       </label>
1324       <nav class="md-nav" aria-label="Miscellaneous" data-md-level="1">
1325         <label class="md-nav__title" for="__nav_11">
1326           <span class="md-nav__icon md-icon"></span>
1327           Miscellaneous
1328         </label>
1329         <ul class="md-nav__list" data-md-scrollfix>
1330           
1331             
1332   
1333   
1334   
1335     <li class="md-nav__item">
1336       <a href="ft2-gx_validation.html" class="md-nav__link">
1337         TrueTypeGX/AAT Validation
1338       </a>
1339     </li>
1340   
1341
1342           
1343             
1344   
1345   
1346   
1347     <li class="md-nav__item">
1348       <a href="ft2-incremental.html" class="md-nav__link">
1349         Incremental Loading
1350       </a>
1351     </li>
1352   
1353
1354           
1355             
1356   
1357   
1358   
1359     <li class="md-nav__item">
1360       <a href="ft2-truetype_engine.html" class="md-nav__link">
1361         The TrueType Engine
1362       </a>
1363     </li>
1364   
1365
1366           
1367             
1368   
1369   
1370   
1371     <li class="md-nav__item">
1372       <a href="ft2-ot_validation.html" class="md-nav__link">
1373         OpenType Validation
1374       </a>
1375     </li>
1376   
1377
1378           
1379         </ul>
1380       </nav>
1381     </li>
1382   
1383
1384     
1385   </ul>
1386 </nav>
1387                   </div>
1388                 </div>
1389               </div>
1390             
1391             
1392               
1393               <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
1394                 <div class="md-sidebar__scrollwrap">
1395                   <div class="md-sidebar__inner">
1396                     
1397 <nav class="md-nav md-nav--secondary" aria-label="Table of contents">
1398   
1399   
1400   
1401     
1402   
1403   
1404     <label class="md-nav__title" for="__toc">
1405       <span class="md-nav__icon md-icon"></span>
1406       Table of contents
1407     </label>
1408     <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
1409       
1410         <li class="md-nav__item">
1411   <a href="#synopsis" class="md-nav__link">
1412     Synopsis
1413   </a>
1414   
1415 </li>
1416       
1417         <li class="md-nav__item">
1418   <a href="#ft_outline" class="md-nav__link">
1419     FT_Outline
1420   </a>
1421   
1422 </li>
1423       
1424         <li class="md-nav__item">
1425   <a href="#ft_outline_new" class="md-nav__link">
1426     FT_Outline_New
1427   </a>
1428   
1429 </li>
1430       
1431         <li class="md-nav__item">
1432   <a href="#ft_outline_done" class="md-nav__link">
1433     FT_Outline_Done
1434   </a>
1435   
1436 </li>
1437       
1438         <li class="md-nav__item">
1439   <a href="#ft_outline_copy" class="md-nav__link">
1440     FT_Outline_Copy
1441   </a>
1442   
1443 </li>
1444       
1445         <li class="md-nav__item">
1446   <a href="#ft_outline_translate" class="md-nav__link">
1447     FT_Outline_Translate
1448   </a>
1449   
1450 </li>
1451       
1452         <li class="md-nav__item">
1453   <a href="#ft_outline_transform" class="md-nav__link">
1454     FT_Outline_Transform
1455   </a>
1456   
1457 </li>
1458       
1459         <li class="md-nav__item">
1460   <a href="#ft_outline_embolden" class="md-nav__link">
1461     FT_Outline_Embolden
1462   </a>
1463   
1464 </li>
1465       
1466         <li class="md-nav__item">
1467   <a href="#ft_outline_emboldenxy" class="md-nav__link">
1468     FT_Outline_EmboldenXY
1469   </a>
1470   
1471 </li>
1472       
1473         <li class="md-nav__item">
1474   <a href="#ft_outline_reverse" class="md-nav__link">
1475     FT_Outline_Reverse
1476   </a>
1477   
1478 </li>
1479       
1480         <li class="md-nav__item">
1481   <a href="#ft_outline_check" class="md-nav__link">
1482     FT_Outline_Check
1483   </a>
1484   
1485 </li>
1486       
1487         <li class="md-nav__item">
1488   <a href="#ft_outline_get_cbox" class="md-nav__link">
1489     FT_Outline_Get_CBox
1490   </a>
1491   
1492 </li>
1493       
1494         <li class="md-nav__item">
1495   <a href="#ft_outline_get_bbox" class="md-nav__link">
1496     FT_Outline_Get_BBox
1497   </a>
1498   
1499 </li>
1500       
1501         <li class="md-nav__item">
1502   <a href="#ft_outline_get_bitmap" class="md-nav__link">
1503     FT_Outline_Get_Bitmap
1504   </a>
1505   
1506 </li>
1507       
1508         <li class="md-nav__item">
1509   <a href="#ft_outline_render" class="md-nav__link">
1510     FT_Outline_Render
1511   </a>
1512   
1513 </li>
1514       
1515         <li class="md-nav__item">
1516   <a href="#ft_outline_decompose" class="md-nav__link">
1517     FT_Outline_Decompose
1518   </a>
1519   
1520 </li>
1521       
1522         <li class="md-nav__item">
1523   <a href="#ft_outline_funcs" class="md-nav__link">
1524     FT_Outline_Funcs
1525   </a>
1526   
1527 </li>
1528       
1529         <li class="md-nav__item">
1530   <a href="#ft_outline_movetofunc" class="md-nav__link">
1531     FT_Outline_MoveToFunc
1532   </a>
1533   
1534 </li>
1535       
1536         <li class="md-nav__item">
1537   <a href="#ft_outline_linetofunc" class="md-nav__link">
1538     FT_Outline_LineToFunc
1539   </a>
1540   
1541 </li>
1542       
1543         <li class="md-nav__item">
1544   <a href="#ft_outline_conictofunc" class="md-nav__link">
1545     FT_Outline_ConicToFunc
1546   </a>
1547   
1548 </li>
1549       
1550         <li class="md-nav__item">
1551   <a href="#ft_outline_cubictofunc" class="md-nav__link">
1552     FT_Outline_CubicToFunc
1553   </a>
1554   
1555 </li>
1556       
1557         <li class="md-nav__item">
1558   <a href="#ft_orientation" class="md-nav__link">
1559     FT_Orientation
1560   </a>
1561   
1562 </li>
1563       
1564         <li class="md-nav__item">
1565   <a href="#ft_outline_get_orientation" class="md-nav__link">
1566     FT_Outline_Get_Orientation
1567   </a>
1568   
1569 </li>
1570       
1571         <li class="md-nav__item">
1572   <a href="#ft_outline_xxx" class="md-nav__link">
1573     FT_OUTLINE_XXX
1574   </a>
1575   
1576 </li>
1577       
1578     </ul>
1579   
1580 </nav>
1581                   </div>
1582                 </div>
1583               </div>
1584             
1585           
1586           <div class="md-content" data-md-component="content">
1587             <article class="md-content__inner md-typeset">
1588               
1589                 
1590                 
1591                 <p><a href="https://www.freetype.org">FreeType</a> &raquo; <a href="../">Docs</a> &raquo; <a href="index.html#support-api">Support API</a> &raquo; Outline Processing</p>
1592 <hr />
1593 <h1 id="outline-processing">Outline Processing<a class="headerlink" href="#outline-processing" title="Permanent link">&para;</a></h1>
1594 <h2 id="synopsis">Synopsis<a class="headerlink" href="#synopsis" title="Permanent link">&para;</a></h2>
1595 <p>This section contains routines used to create and destroy scalable glyph images known as &lsquo;outlines&rsquo;. These can also be measured, transformed, and converted into bitmaps and pixmaps.</p>
1596 <h2 id="ft_outline">FT_Outline<a class="headerlink" href="#ft_outline" title="Permanent link">&para;</a></h2>
1597 <p>Defined in FT_IMAGE_H (freetype/ftimage.h).</p>
1598 <div class = "codehilite"><pre><code>  <span class="keyword">typedef</span> <span class="keyword">struct</span>  FT_Outline_
1599   {
1600     <span class="keyword">short</span>       n_contours;      /* number of contours in glyph        */
1601     <span class="keyword">short</span>       n_points;        /* number of points in the glyph      */
1602
1603     <a href="ft2-basic_types.html#ft_vector">FT_Vector</a>*  points;          /* the outline's points               */
1604     <span class="keyword">char</span>*       tags;            /* the points flags                   */
1605     <span class="keyword">short</span>*      contours;        /* the contour end points             */
1606
1607     <span class="keyword">int</span>         flags;           /* outline masks                      */
1608
1609   } <b>FT_Outline</b>;
1610 </code></pre></div>
1611
1612 <p>This structure is used to describe an outline to the scan-line converter.</p>
1613 <h4>fields</h4>
1614 <table class="fields">
1615 <tr><td class="val" id="n_contours">n_contours</td><td class="desc">
1616 <p>The number of contours in the outline.</p>
1617 </td></tr>
1618 <tr><td class="val" id="n_points">n_points</td><td class="desc">
1619 <p>The number of points in the outline.</p>
1620 </td></tr>
1621 <tr><td class="val" id="points">points</td><td class="desc">
1622 <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>
1623 </td></tr>
1624 <tr><td class="val" id="tags">tags</td><td class="desc">
1625 <p>A pointer to an array of <code>n_points</code> chars, giving each outline point's type.</p>
1626 <p>If bit&nbsp;0 is unset, the point is &lsquo;off&rsquo; the curve, i.e., a Bezier control point, while it is &lsquo;on&rsquo; if set.</p>
1627 <p>Bit&nbsp;1 is meaningful for &lsquo;off&rsquo; points only. If set, it indicates a third-order Bezier arc control point; and a second-order control point if unset.</p>
1628 <p>If bit&nbsp;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 &lsquo;SCANMODE&rsquo; instruction).</p>
1629 <p>Bits 3 and&nbsp;4 are reserved for internal purposes.</p>
1630 </td></tr>
1631 <tr><td class="val" id="contours">contours</td><td class="desc">
1632 <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 &lsquo;0&rsquo; 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>
1633 </td></tr>
1634 <tr><td class="val" id="flags">flags</td><td class="desc">
1635 <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>
1636 </td></tr>
1637 </table>
1638
1639 <h4>note</h4>
1640
1641 <p>The B/W rasterizer only checks bit&nbsp;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>
1642 <hr>
1643
1644 <h2 id="ft_outline_new">FT_Outline_New<a class="headerlink" href="#ft_outline_new" title="Permanent link">&para;</a></h2>
1645 <p>Defined in FT_OUTLINE_H (freetype/ftoutln.h).</p>
1646 <div class = "codehilite"><pre><code>  FT_EXPORT( <a href="ft2-basic_types.html#ft_error">FT_Error</a> )
1647   <b>FT_Outline_New</b>( <a href="ft2-library_setup.html#ft_library">FT_Library</a>   library,
1648                   <a href="ft2-basic_types.html#ft_uint">FT_UInt</a>      numPoints,
1649                   <a href="ft2-basic_types.html#ft_int">FT_Int</a>       numContours,
1650                   <a href="ft2-outline_processing.html#ft_outline">FT_Outline</a>  *anoutline );
1651 </code></pre></div>
1652
1653 <p>Create a new outline of a given size.</p>
1654 <h4>input</h4>
1655 <table class="fields">
1656 <tr><td class="val" id="library">library</td><td class="desc">
1657 <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-library_setup.html#ft_done_freetype">FT_Done_FreeType</a></code>.</p>
1658 </td></tr>
1659 <tr><td class="val" id="numpoints">numPoints</td><td class="desc">
1660 <p>The maximum number of points within the outline. Must be smaller than or equal to 0xFFFF (65535).</p>
1661 </td></tr>
1662 <tr><td class="val" id="numcontours">numContours</td><td class="desc">
1663 <p>The maximum number of contours within the outline. This value must be in the range 0 to <code>numPoints</code>.</p>
1664 </td></tr>
1665 </table>
1666
1667 <h4>output</h4>
1668 <table class="fields">
1669 <tr><td class="val" id="anoutline">anoutline</td><td class="desc">
1670 <p>A handle to the new outline.</p>
1671 </td></tr>
1672 </table>
1673
1674 <h4>return</h4>
1675
1676 <p>FreeType error code. 0&nbsp;means success.</p>
1677 <h4>note</h4>
1678
1679 <p>The reason why this function takes a <code>library</code> parameter is simply to use the library's memory allocator.</p>
1680 <hr>
1681
1682 <h2 id="ft_outline_done">FT_Outline_Done<a class="headerlink" href="#ft_outline_done" title="Permanent link">&para;</a></h2>
1683 <p>Defined in FT_OUTLINE_H (freetype/ftoutln.h).</p>
1684 <div class = "codehilite"><pre><code>  FT_EXPORT( <a href="ft2-basic_types.html#ft_error">FT_Error</a> )
1685   <b>FT_Outline_Done</b>( <a href="ft2-library_setup.html#ft_library">FT_Library</a>   library,
1686                    <a href="ft2-outline_processing.html#ft_outline">FT_Outline</a>*  outline );
1687 </code></pre></div>
1688
1689 <p>Destroy an outline created with <code><a href="ft2-outline_processing.html#ft_outline_new">FT_Outline_New</a></code>.</p>
1690 <h4>input</h4>
1691 <table class="fields">
1692 <tr><td class="val" id="library">library</td><td class="desc">
1693 <p>A handle of the library object used to allocate the outline.</p>
1694 </td></tr>
1695 <tr><td class="val" id="outline">outline</td><td class="desc">
1696 <p>A pointer to the outline object to be discarded.</p>
1697 </td></tr>
1698 </table>
1699
1700 <h4>return</h4>
1701
1702 <p>FreeType error code. 0&nbsp;means success.</p>
1703 <h4>note</h4>
1704
1705 <p>If the outline's &lsquo;owner&rsquo; field is not set, only the outline descriptor will be released.</p>
1706 <hr>
1707
1708 <h2 id="ft_outline_copy">FT_Outline_Copy<a class="headerlink" href="#ft_outline_copy" title="Permanent link">&para;</a></h2>
1709 <p>Defined in FT_OUTLINE_H (freetype/ftoutln.h).</p>
1710 <div class = "codehilite"><pre><code>  FT_EXPORT( <a href="ft2-basic_types.html#ft_error">FT_Error</a> )
1711   <b>FT_Outline_Copy</b>( <span class="keyword">const</span> <a href="ft2-outline_processing.html#ft_outline">FT_Outline</a>*  source,
1712                    <a href="ft2-outline_processing.html#ft_outline">FT_Outline</a>        *target );
1713 </code></pre></div>
1714
1715 <p>Copy an outline into another one. Both objects must have the same sizes (number of points &amp; number of contours) when this function is called.</p>
1716 <h4>input</h4>
1717 <table class="fields">
1718 <tr><td class="val" id="source">source</td><td class="desc">
1719 <p>A handle to the source outline.</p>
1720 </td></tr>
1721 </table>
1722
1723 <h4>output</h4>
1724 <table class="fields">
1725 <tr><td class="val" id="target">target</td><td class="desc">
1726 <p>A handle to the target outline.</p>
1727 </td></tr>
1728 </table>
1729
1730 <h4>return</h4>
1731
1732 <p>FreeType error code. 0&nbsp;means success.</p>
1733 <hr>
1734
1735 <h2 id="ft_outline_translate">FT_Outline_Translate<a class="headerlink" href="#ft_outline_translate" title="Permanent link">&para;</a></h2>
1736 <p>Defined in FT_OUTLINE_H (freetype/ftoutln.h).</p>
1737 <div class = "codehilite"><pre><code>  FT_EXPORT( <span class="keyword">void</span> )
1738   <b>FT_Outline_Translate</b>( <span class="keyword">const</span> <a href="ft2-outline_processing.html#ft_outline">FT_Outline</a>*  outline,
1739                         <a href="ft2-basic_types.html#ft_pos">FT_Pos</a>             xOffset,
1740                         <a href="ft2-basic_types.html#ft_pos">FT_Pos</a>             yOffset );
1741 </code></pre></div>
1742
1743 <p>Apply a simple translation to the points of an outline.</p>
1744 <h4>inout</h4>
1745 <table class="fields">
1746 <tr><td class="val" id="outline">outline</td><td class="desc">
1747 <p>A pointer to the target outline descriptor.</p>
1748 </td></tr>
1749 </table>
1750
1751 <h4>input</h4>
1752 <table class="fields">
1753 <tr><td class="val" id="xoffset">xOffset</td><td class="desc">
1754 <p>The horizontal offset.</p>
1755 </td></tr>
1756 <tr><td class="val" id="yoffset">yOffset</td><td class="desc">
1757 <p>The vertical offset.</p>
1758 </td></tr>
1759 </table>
1760
1761 <hr>
1762
1763 <h2 id="ft_outline_transform">FT_Outline_Transform<a class="headerlink" href="#ft_outline_transform" title="Permanent link">&para;</a></h2>
1764 <p>Defined in FT_OUTLINE_H (freetype/ftoutln.h).</p>
1765 <div class = "codehilite"><pre><code>  FT_EXPORT( <span class="keyword">void</span> )
1766   <b>FT_Outline_Transform</b>( <span class="keyword">const</span> <a href="ft2-outline_processing.html#ft_outline">FT_Outline</a>*  outline,
1767                         <span class="keyword">const</span> <a href="ft2-basic_types.html#ft_matrix">FT_Matrix</a>*   matrix );
1768 </code></pre></div>
1769
1770 <p>Apply a simple 2x2 matrix to all of an outline's points. Useful for applying rotations, slanting, flipping, etc.</p>
1771 <h4>inout</h4>
1772 <table class="fields">
1773 <tr><td class="val" id="outline">outline</td><td class="desc">
1774 <p>A pointer to the target outline descriptor.</p>
1775 </td></tr>
1776 </table>
1777
1778 <h4>input</h4>
1779 <table class="fields">
1780 <tr><td class="val" id="matrix">matrix</td><td class="desc">
1781 <p>A pointer to the transformation matrix.</p>
1782 </td></tr>
1783 </table>
1784
1785 <h4>note</h4>
1786
1787 <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>
1788 <hr>
1789
1790 <h2 id="ft_outline_embolden">FT_Outline_Embolden<a class="headerlink" href="#ft_outline_embolden" title="Permanent link">&para;</a></h2>
1791 <p>Defined in FT_OUTLINE_H (freetype/ftoutln.h).</p>
1792 <div class = "codehilite"><pre><code>  FT_EXPORT( <a href="ft2-basic_types.html#ft_error">FT_Error</a> )
1793   <b>FT_Outline_Embolden</b>( <a href="ft2-outline_processing.html#ft_outline">FT_Outline</a>*  outline,
1794                        <a href="ft2-basic_types.html#ft_pos">FT_Pos</a>       strength );
1795 </code></pre></div>
1796
1797 <p>Embolden an outline. The new outline will be at most 4&nbsp;times <code>strength</code> pixels wider and higher. You may think of the left and bottom borders as unchanged.</p>
1798 <p>Negative <code>strength</code> values to reduce the outline thickness are possible also.</p>
1799 <h4>inout</h4>
1800 <table class="fields">
1801 <tr><td class="val" id="outline">outline</td><td class="desc">
1802 <p>A handle to the target outline.</p>
1803 </td></tr>
1804 </table>
1805
1806 <h4>input</h4>
1807 <table class="fields">
1808 <tr><td class="val" id="strength">strength</td><td class="desc">
1809 <p>How strong the glyph is emboldened. Expressed in 26.6 pixel format.</p>
1810 </td></tr>
1811 </table>
1812
1813 <h4>return</h4>
1814
1815 <p>FreeType error code. 0&nbsp;means success.</p>
1816 <h4>note</h4>
1817
1818 <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>
1819 <p>If you need &lsquo;better&rsquo; 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>
1820 <p>To get meaningful results, font scaling values must be set with functions like <code><a href="ft2-sizing_and_scaling.html#ft_set_char_size">FT_Set_Char_Size</a></code> before calling FT_Render_Glyph.</p>
1821 <h4>example</h4>
1822 <div class="highlight"><pre><span></span><code>  FT_Load_Glyph( face, index, FT_LOAD_DEFAULT );
1823
1824   if ( face-&gt;glyph-&gt;format == FT_GLYPH_FORMAT_OUTLINE )
1825     FT_Outline_Embolden( &amp;face-&gt;glyph-&gt;outline, strength );
1826 </code></pre></div>
1827 <hr>
1828
1829 <h2 id="ft_outline_emboldenxy">FT_Outline_EmboldenXY<a class="headerlink" href="#ft_outline_emboldenxy" title="Permanent link">&para;</a></h2>
1830 <p>Defined in FT_OUTLINE_H (freetype/ftoutln.h).</p>
1831 <div class = "codehilite"><pre><code>  FT_EXPORT( <a href="ft2-basic_types.html#ft_error">FT_Error</a> )
1832   <b>FT_Outline_EmboldenXY</b>( <a href="ft2-outline_processing.html#ft_outline">FT_Outline</a>*  outline,
1833                          <a href="ft2-basic_types.html#ft_pos">FT_Pos</a>       xstrength,
1834                          <a href="ft2-basic_types.html#ft_pos">FT_Pos</a>       ystrength );
1835 </code></pre></div>
1836
1837 <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>
1838 <h4>since</h4>
1839
1840 <p>2.4.10</p>
1841 <hr>
1842
1843 <h2 id="ft_outline_reverse">FT_Outline_Reverse<a class="headerlink" href="#ft_outline_reverse" title="Permanent link">&para;</a></h2>
1844 <p>Defined in FT_OUTLINE_H (freetype/ftoutln.h).</p>
1845 <div class = "codehilite"><pre><code>  FT_EXPORT( <span class="keyword">void</span> )
1846   <b>FT_Outline_Reverse</b>( <a href="ft2-outline_processing.html#ft_outline">FT_Outline</a>*  outline );
1847 </code></pre></div>
1848
1849 <p>Reverse the drawing direction of an outline. This is used to ensure consistent fill conventions for mirrored glyphs.</p>
1850 <h4>inout</h4>
1851 <table class="fields">
1852 <tr><td class="val" id="outline">outline</td><td class="desc">
1853 <p>A pointer to the target outline descriptor.</p>
1854 </td></tr>
1855 </table>
1856
1857 <h4>note</h4>
1858
1859 <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>
1860 <p>It shouldn't be used by a normal client application, unless it knows what it is doing.</p>
1861 <hr>
1862
1863 <h2 id="ft_outline_check">FT_Outline_Check<a class="headerlink" href="#ft_outline_check" title="Permanent link">&para;</a></h2>
1864 <p>Defined in FT_OUTLINE_H (freetype/ftoutln.h).</p>
1865 <div class = "codehilite"><pre><code>  FT_EXPORT( <a href="ft2-basic_types.html#ft_error">FT_Error</a> )
1866   <b>FT_Outline_Check</b>( <a href="ft2-outline_processing.html#ft_outline">FT_Outline</a>*  outline );
1867 </code></pre></div>
1868
1869 <p>Check the contents of an outline descriptor.</p>
1870 <h4>input</h4>
1871 <table class="fields">
1872 <tr><td class="val" id="outline">outline</td><td class="desc">
1873 <p>A handle to a source outline.</p>
1874 </td></tr>
1875 </table>
1876
1877 <h4>return</h4>
1878
1879 <p>FreeType error code. 0&nbsp;means success.</p>
1880 <h4>note</h4>
1881
1882 <p>An empty outline, or an outline with a single point only is also valid.</p>
1883 <hr>
1884
1885 <h2 id="ft_outline_get_cbox">FT_Outline_Get_CBox<a class="headerlink" href="#ft_outline_get_cbox" title="Permanent link">&para;</a></h2>
1886 <p>Defined in FT_OUTLINE_H (freetype/ftoutln.h).</p>
1887 <div class = "codehilite"><pre><code>  FT_EXPORT( <span class="keyword">void</span> )
1888   <b>FT_Outline_Get_CBox</b>( <span class="keyword">const</span> <a href="ft2-outline_processing.html#ft_outline">FT_Outline</a>*  outline,
1889                        <a href="ft2-basic_types.html#ft_bbox">FT_BBox</a>           *acbox );
1890 </code></pre></div>
1891
1892 <p>Return an outline's &lsquo;control box&rsquo;. 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>
1893 <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 &lsquo;ftbbox&rsquo; component, which is dedicated to this single task.</p>
1894 <h4>input</h4>
1895 <table class="fields">
1896 <tr><td class="val" id="outline">outline</td><td class="desc">
1897 <p>A pointer to the source outline descriptor.</p>
1898 </td></tr>
1899 </table>
1900
1901 <h4>output</h4>
1902 <table class="fields">
1903 <tr><td class="val" id="acbox">acbox</td><td class="desc">
1904 <p>The outline's control box.</p>
1905 </td></tr>
1906 </table>
1907
1908 <h4>note</h4>
1909
1910 <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>
1911 <hr>
1912
1913 <h2 id="ft_outline_get_bbox">FT_Outline_Get_BBox<a class="headerlink" href="#ft_outline_get_bbox" title="Permanent link">&para;</a></h2>
1914 <p>Defined in FT_BBOX_H (freetype/ftbbox.h).</p>
1915 <div class = "codehilite"><pre><code>  FT_EXPORT( <a href="ft2-basic_types.html#ft_error">FT_Error</a> )
1916   <b>FT_Outline_Get_BBox</b>( <a href="ft2-outline_processing.html#ft_outline">FT_Outline</a>*  outline,
1917                        <a href="ft2-basic_types.html#ft_bbox">FT_BBox</a>     *abbox );
1918 </code></pre></div>
1919
1920 <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>
1921 <h4>input</h4>
1922 <table class="fields">
1923 <tr><td class="val" id="outline">outline</td><td class="desc">
1924 <p>A pointer to the source outline.</p>
1925 </td></tr>
1926 </table>
1927
1928 <h4>output</h4>
1929 <table class="fields">
1930 <tr><td class="val" id="abbox">abbox</td><td class="desc">
1931 <p>The outline's exact bounding box.</p>
1932 </td></tr>
1933 </table>
1934
1935 <h4>return</h4>
1936
1937 <p>FreeType error code. 0&nbsp;means success.</p>
1938 <h4>note</h4>
1939
1940 <p>If the font is tricky and the glyph has been loaded with <code><a href="ft2-glyph_retrieval.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>
1941 <hr>
1942
1943 <h2 id="ft_outline_get_bitmap">FT_Outline_Get_Bitmap<a class="headerlink" href="#ft_outline_get_bitmap" title="Permanent link">&para;</a></h2>
1944 <p>Defined in FT_OUTLINE_H (freetype/ftoutln.h).</p>
1945 <div class = "codehilite"><pre><code>  FT_EXPORT( <a href="ft2-basic_types.html#ft_error">FT_Error</a> )
1946   <b>FT_Outline_Get_Bitmap</b>( <a href="ft2-library_setup.html#ft_library">FT_Library</a>        library,
1947                          <a href="ft2-outline_processing.html#ft_outline">FT_Outline</a>*       outline,
1948                          <span class="keyword">const</span> <a href="ft2-basic_types.html#ft_bitmap">FT_Bitmap</a>  *abitmap );
1949 </code></pre></div>
1950
1951 <p>Render an outline within a bitmap. The outline's image is simply OR-ed to the target bitmap.</p>
1952 <h4>input</h4>
1953 <table class="fields">
1954 <tr><td class="val" id="library">library</td><td class="desc">
1955 <p>A handle to a FreeType library object.</p>
1956 </td></tr>
1957 <tr><td class="val" id="outline">outline</td><td class="desc">
1958 <p>A pointer to the source outline descriptor.</p>
1959 </td></tr>
1960 </table>
1961
1962 <h4>inout</h4>
1963 <table class="fields">
1964 <tr><td class="val" id="abitmap">abitmap</td><td class="desc">
1965 <p>A pointer to the target bitmap descriptor.</p>
1966 </td></tr>
1967 </table>
1968
1969 <h4>return</h4>
1970
1971 <p>FreeType error code. 0&nbsp;means success.</p>
1972 <h4>note</h4>
1973
1974 <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>
1975 <p>It will use the raster corresponding to the default glyph format.</p>
1976 <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>
1977 <hr>
1978
1979 <h2 id="ft_outline_render">FT_Outline_Render<a class="headerlink" href="#ft_outline_render" title="Permanent link">&para;</a></h2>
1980 <p>Defined in FT_OUTLINE_H (freetype/ftoutln.h).</p>
1981 <div class = "codehilite"><pre><code>  FT_EXPORT( <a href="ft2-basic_types.html#ft_error">FT_Error</a> )
1982   <b>FT_Outline_Render</b>( <a href="ft2-library_setup.html#ft_library">FT_Library</a>         library,
1983                      <a href="ft2-outline_processing.html#ft_outline">FT_Outline</a>*        outline,
1984                      <a href="ft2-raster.html#ft_raster_params">FT_Raster_Params</a>*  params );
1985 </code></pre></div>
1986
1987 <p>Render an outline within a bitmap using the current scan-convert.</p>
1988 <h4>input</h4>
1989 <table class="fields">
1990 <tr><td class="val" id="library">library</td><td class="desc">
1991 <p>A handle to a FreeType library object.</p>
1992 </td></tr>
1993 <tr><td class="val" id="outline">outline</td><td class="desc">
1994 <p>A pointer to the source outline descriptor.</p>
1995 </td></tr>
1996 </table>
1997
1998 <h4>inout</h4>
1999 <table class="fields">
2000 <tr><td class="val" id="params">params</td><td class="desc">
2001 <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>
2002 </td></tr>
2003 </table>
2004
2005 <h4>return</h4>
2006
2007 <p>FreeType error code. 0&nbsp;means success.</p>
2008 <h4>note</h4>
2009
2010 <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>
2011 <hr>
2012
2013 <h2 id="ft_outline_decompose">FT_Outline_Decompose<a class="headerlink" href="#ft_outline_decompose" title="Permanent link">&para;</a></h2>
2014 <p>Defined in FT_OUTLINE_H (freetype/ftoutln.h).</p>
2015 <div class = "codehilite"><pre><code>  FT_EXPORT( <a href="ft2-basic_types.html#ft_error">FT_Error</a> )
2016   <b>FT_Outline_Decompose</b>( <a href="ft2-outline_processing.html#ft_outline">FT_Outline</a>*              outline,
2017                         <span class="keyword">const</span> <a href="ft2-outline_processing.html#ft_outline_funcs">FT_Outline_Funcs</a>*  func_interface,
2018                         <span class="keyword">void</span>*                    user );
2019 </code></pre></div>
2020
2021 <p>Walk over an outline's structure to decompose it into individual segments and Bezier arcs. This function also emits &lsquo;move to&rsquo; operations to indicate the start of new contours in the outline.</p>
2022 <h4>input</h4>
2023 <table class="fields">
2024 <tr><td class="val" id="outline">outline</td><td class="desc">
2025 <p>A pointer to the source target.</p>
2026 </td></tr>
2027 <tr><td class="val" id="func_interface">func_interface</td><td class="desc">
2028 <p>A table of &lsquo;emitters&rsquo;, i.e., function pointers called during decomposition to indicate path operations.</p>
2029 </td></tr>
2030 </table>
2031
2032 <h4>inout</h4>
2033 <table class="fields">
2034 <tr><td class="val" id="user">user</td><td class="desc">
2035 <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>
2036 </td></tr>
2037 </table>
2038
2039 <h4>return</h4>
2040
2041 <p>FreeType error code. 0&nbsp;means success.</p>
2042 <h4>note</h4>
2043
2044 <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>
2045 <p>Similarly, the function returns success for an empty outline also (doing nothing, that is, not calling any emitter); if necessary, you should filter this out, too.</p>
2046 <hr>
2047
2048 <h2 id="ft_outline_funcs">FT_Outline_Funcs<a class="headerlink" href="#ft_outline_funcs" title="Permanent link">&para;</a></h2>
2049 <p>Defined in FT_IMAGE_H (freetype/ftimage.h).</p>
2050 <div class = "codehilite"><pre><code>  <span class="keyword">typedef</span> <span class="keyword">struct</span>  FT_Outline_Funcs_
2051   {
2052     <a href="ft2-outline_processing.html#ft_outline_movetofunc">FT_Outline_MoveToFunc</a>   move_to;
2053     <a href="ft2-outline_processing.html#ft_outline_linetofunc">FT_Outline_LineToFunc</a>   line_to;
2054     <a href="ft2-outline_processing.html#ft_outline_conictofunc">FT_Outline_ConicToFunc</a>  conic_to;
2055     <a href="ft2-outline_processing.html#ft_outline_cubictofunc">FT_Outline_CubicToFunc</a>  cubic_to;
2056
2057     <span class="keyword">int</span>                     shift;
2058     <a href="ft2-basic_types.html#ft_pos">FT_Pos</a>                  delta;
2059
2060   } <b>FT_Outline_Funcs</b>;
2061 </code></pre></div>
2062
2063 <p>A structure to hold various function pointers used during outline decomposition in order to emit segments, conic, and cubic Beziers.</p>
2064 <h4>fields</h4>
2065 <table class="fields">
2066 <tr><td class="val" id="move_to">move_to</td><td class="desc">
2067 <p>The &lsquo;move to&rsquo; emitter.</p>
2068 </td></tr>
2069 <tr><td class="val" id="line_to">line_to</td><td class="desc">
2070 <p>The segment emitter.</p>
2071 </td></tr>
2072 <tr><td class="val" id="conic_to">conic_to</td><td class="desc">
2073 <p>The second-order Bezier arc emitter.</p>
2074 </td></tr>
2075 <tr><td class="val" id="cubic_to">cubic_to</td><td class="desc">
2076 <p>The third-order Bezier arc emitter.</p>
2077 </td></tr>
2078 <tr><td class="val" id="shift">shift</td><td class="desc">
2079 <p>The shift that is applied to coordinates before they are sent to the emitter.</p>
2080 </td></tr>
2081 <tr><td class="val" id="delta">delta</td><td class="desc">
2082 <p>The delta that is applied to coordinates before they are sent to the emitter, but after the shift.</p>
2083 </td></tr>
2084 </table>
2085
2086 <h4>note</h4>
2087
2088 <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:
2089 <div class="highlight"><pre><span></span><code>  x&#39; = (x &lt;&lt; shift) - delta
2090   y&#39; = (y &lt;&lt; shift) - delta
2091 </code></pre></div></p>
2092 <p>Set the values of <code>shift</code> and <code>delta</code> to&nbsp;0 to get the original point coordinates.</p>
2093 <hr>
2094
2095 <h2 id="ft_outline_movetofunc">FT_Outline_MoveToFunc<a class="headerlink" href="#ft_outline_movetofunc" title="Permanent link">&para;</a></h2>
2096 <p>Defined in FT_IMAGE_H (freetype/ftimage.h).</p>
2097 <div class = "codehilite"><pre><code>  <span class="keyword">typedef</span> <span class="keyword">int</span>
2098   (*<b>FT_Outline_MoveToFunc</b>)( <span class="keyword">const</span> <a href="ft2-basic_types.html#ft_vector">FT_Vector</a>*  to,
2099                             <span class="keyword">void</span>*             user );
2100
2101 #<span class="keyword">define</span> FT_Outline_MoveTo_Func  <b>FT_Outline_MoveToFunc</b>
2102 </code></pre></div>
2103
2104 <p>A function pointer type used to describe the signature of a &lsquo;move to&rsquo; function during outline walking/decomposition.</p>
2105 <p>A &lsquo;move to&rsquo; is emitted to start a new contour in an outline.</p>
2106 <h4>input</h4>
2107 <table class="fields">
2108 <tr><td class="val" id="to">to</td><td class="desc">
2109 <p>A pointer to the target point of the &lsquo;move to&rsquo;.</p>
2110 </td></tr>
2111 <tr><td class="val" id="user">user</td><td class="desc">
2112 <p>A typeless pointer, which is passed from the caller of the decomposition function.</p>
2113 </td></tr>
2114 </table>
2115
2116 <h4>return</h4>
2117
2118 <p>Error code. 0&nbsp;means success.</p>
2119 <hr>
2120
2121 <h2 id="ft_outline_linetofunc">FT_Outline_LineToFunc<a class="headerlink" href="#ft_outline_linetofunc" title="Permanent link">&para;</a></h2>
2122 <p>Defined in FT_IMAGE_H (freetype/ftimage.h).</p>
2123 <div class = "codehilite"><pre><code>  <span class="keyword">typedef</span> <span class="keyword">int</span>
2124   (*<b>FT_Outline_LineToFunc</b>)( <span class="keyword">const</span> <a href="ft2-basic_types.html#ft_vector">FT_Vector</a>*  to,
2125                             <span class="keyword">void</span>*             user );
2126
2127 #<span class="keyword">define</span> FT_Outline_LineTo_Func  <b>FT_Outline_LineToFunc</b>
2128 </code></pre></div>
2129
2130 <p>A function pointer type used to describe the signature of a &lsquo;line to&rsquo; function during outline walking/decomposition.</p>
2131 <p>A &lsquo;line to&rsquo; is emitted to indicate a segment in the outline.</p>
2132 <h4>input</h4>
2133 <table class="fields">
2134 <tr><td class="val" id="to">to</td><td class="desc">
2135 <p>A pointer to the target point of the &lsquo;line to&rsquo;.</p>
2136 </td></tr>
2137 <tr><td class="val" id="user">user</td><td class="desc">
2138 <p>A typeless pointer, which is passed from the caller of the decomposition function.</p>
2139 </td></tr>
2140 </table>
2141
2142 <h4>return</h4>
2143
2144 <p>Error code. 0&nbsp;means success.</p>
2145 <hr>
2146
2147 <h2 id="ft_outline_conictofunc">FT_Outline_ConicToFunc<a class="headerlink" href="#ft_outline_conictofunc" title="Permanent link">&para;</a></h2>
2148 <p>Defined in FT_IMAGE_H (freetype/ftimage.h).</p>
2149 <div class = "codehilite"><pre><code>  <span class="keyword">typedef</span> <span class="keyword">int</span>
2150   (*<b>FT_Outline_ConicToFunc</b>)( <span class="keyword">const</span> <a href="ft2-basic_types.html#ft_vector">FT_Vector</a>*  control,
2151                              <span class="keyword">const</span> <a href="ft2-basic_types.html#ft_vector">FT_Vector</a>*  to,
2152                              <span class="keyword">void</span>*             user );
2153
2154 #<span class="keyword">define</span> FT_Outline_ConicTo_Func  <b>FT_Outline_ConicToFunc</b>
2155 </code></pre></div>
2156
2157 <p>A function pointer type used to describe the signature of a &lsquo;conic to&rsquo; function during outline walking or decomposition.</p>
2158 <p>A &lsquo;conic to&rsquo; is emitted to indicate a second-order Bezier arc in the outline.</p>
2159 <h4>input</h4>
2160 <table class="fields">
2161 <tr><td class="val" id="control">control</td><td class="desc">
2162 <p>An intermediate control point between the last position and the new target in <code>to</code>.</p>
2163 </td></tr>
2164 <tr><td class="val" id="to">to</td><td class="desc">
2165 <p>A pointer to the target end point of the conic arc.</p>
2166 </td></tr>
2167 <tr><td class="val" id="user">user</td><td class="desc">
2168 <p>A typeless pointer, which is passed from the caller of the decomposition function.</p>
2169 </td></tr>
2170 </table>
2171
2172 <h4>return</h4>
2173
2174 <p>Error code. 0&nbsp;means success.</p>
2175 <hr>
2176
2177 <h2 id="ft_outline_cubictofunc">FT_Outline_CubicToFunc<a class="headerlink" href="#ft_outline_cubictofunc" title="Permanent link">&para;</a></h2>
2178 <p>Defined in FT_IMAGE_H (freetype/ftimage.h).</p>
2179 <div class = "codehilite"><pre><code>  <span class="keyword">typedef</span> <span class="keyword">int</span>
2180   (*<b>FT_Outline_CubicToFunc</b>)( <span class="keyword">const</span> <a href="ft2-basic_types.html#ft_vector">FT_Vector</a>*  control1,
2181                              <span class="keyword">const</span> <a href="ft2-basic_types.html#ft_vector">FT_Vector</a>*  control2,
2182                              <span class="keyword">const</span> <a href="ft2-basic_types.html#ft_vector">FT_Vector</a>*  to,
2183                              <span class="keyword">void</span>*             user );
2184
2185 #<span class="keyword">define</span> FT_Outline_CubicTo_Func  <b>FT_Outline_CubicToFunc</b>
2186 </code></pre></div>
2187
2188 <p>A function pointer type used to describe the signature of a &lsquo;cubic to&rsquo; function during outline walking or decomposition.</p>
2189 <p>A &lsquo;cubic to&rsquo; is emitted to indicate a third-order Bezier arc.</p>
2190 <h4>input</h4>
2191 <table class="fields">
2192 <tr><td class="val" id="control1">control1</td><td class="desc">
2193 <p>A pointer to the first Bezier control point.</p>
2194 </td></tr>
2195 <tr><td class="val" id="control2">control2</td><td class="desc">
2196 <p>A pointer to the second Bezier control point.</p>
2197 </td></tr>
2198 <tr><td class="val" id="to">to</td><td class="desc">
2199 <p>A pointer to the target end point.</p>
2200 </td></tr>
2201 <tr><td class="val" id="user">user</td><td class="desc">
2202 <p>A typeless pointer, which is passed from the caller of the decomposition function.</p>
2203 </td></tr>
2204 </table>
2205
2206 <h4>return</h4>
2207
2208 <p>Error code. 0&nbsp;means success.</p>
2209 <hr>
2210
2211 <h2 id="ft_orientation">FT_Orientation<a class="headerlink" href="#ft_orientation" title="Permanent link">&para;</a></h2>
2212 <p>Defined in FT_OUTLINE_H (freetype/ftoutln.h).</p>
2213 <div class = "codehilite"><pre><code>  <span class="keyword">typedef</span> <span class="keyword">enum</span>  FT_Orientation_
2214   {
2215     <a href="ft2-outline_processing.html#ft_orientation_truetype">FT_ORIENTATION_TRUETYPE</a>   = 0,
2216     <a href="ft2-outline_processing.html#ft_orientation_postscript">FT_ORIENTATION_POSTSCRIPT</a> = 1,
2217     <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>,
2218     <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>,
2219     <a href="ft2-outline_processing.html#ft_orientation_none">FT_ORIENTATION_NONE</a>
2220
2221   } <b>FT_Orientation</b>;
2222 </code></pre></div>
2223
2224 <p>A list of values used to describe an outline's contour orientation.</p>
2225 <p>The TrueType and PostScript specifications use different conventions to determine whether outline contours should be filled or unfilled.</p>
2226 <h4>values</h4>
2227 <table class="fields">
2228 <tr><td class="val" id="ft_orientation_truetype">FT_ORIENTATION_TRUETYPE</td><td class="desc">
2229 <p>According to the TrueType specification, clockwise contours must be filled, and counter-clockwise ones must be unfilled.</p>
2230 </td></tr>
2231 <tr><td class="val" id="ft_orientation_postscript">FT_ORIENTATION_POSTSCRIPT</td><td class="desc">
2232 <p>According to the PostScript specification, counter-clockwise contours must be filled, and clockwise ones must be unfilled.</p>
2233 </td></tr>
2234 <tr><td class="val" id="ft_orientation_fill_right">FT_ORIENTATION_FILL_RIGHT</td><td class="desc">
2235 <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>
2236 </td></tr>
2237 <tr><td class="val" id="ft_orientation_fill_left">FT_ORIENTATION_FILL_LEFT</td><td class="desc">
2238 <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>
2239 </td></tr>
2240 <tr><td class="val" id="ft_orientation_none">FT_ORIENTATION_NONE</td><td class="desc">
2241 <p>The orientation cannot be determined. That is, different parts of the glyph have different orientation.</p>
2242 </td></tr>
2243 </table>
2244
2245 <hr>
2246
2247 <h2 id="ft_outline_get_orientation">FT_Outline_Get_Orientation<a class="headerlink" href="#ft_outline_get_orientation" title="Permanent link">&para;</a></h2>
2248 <p>Defined in FT_OUTLINE_H (freetype/ftoutln.h).</p>
2249 <div class = "codehilite"><pre><code>  FT_EXPORT( <a href="ft2-outline_processing.html#ft_orientation">FT_Orientation</a> )
2250   <b>FT_Outline_Get_Orientation</b>( <a href="ft2-outline_processing.html#ft_outline">FT_Outline</a>*  outline );
2251 </code></pre></div>
2252
2253 <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>
2254 <p>Note that this will return <code><a href="ft2-outline_processing.html#ft_orientation">FT_ORIENTATION_TRUETYPE</a></code> for empty outlines.</p>
2255 <h4>input</h4>
2256 <table class="fields">
2257 <tr><td class="val" id="outline">outline</td><td class="desc">
2258 <p>A handle to the source outline.</p>
2259 </td></tr>
2260 </table>
2261
2262 <h4>return</h4>
2263
2264 <p>The orientation.</p>
2265 <hr>
2266
2267 <h2 id="ft_outline_xxx">FT_OUTLINE_XXX<a class="headerlink" href="#ft_outline_xxx" title="Permanent link">&para;</a></h2>
2268 <p>Defined in FT_IMAGE_H (freetype/ftimage.h).</p>
2269 <div class = "codehilite"><pre><code>#<span class="keyword">define</span> <a href="ft2-outline_processing.html#ft_outline_none">FT_OUTLINE_NONE</a>             0x0
2270 #<span class="keyword">define</span> <a href="ft2-outline_processing.html#ft_outline_owner">FT_OUTLINE_OWNER</a>            0x1
2271 #<span class="keyword">define</span> <a href="ft2-outline_processing.html#ft_outline_even_odd_fill">FT_OUTLINE_EVEN_ODD_FILL</a>    0x2
2272 #<span class="keyword">define</span> <a href="ft2-outline_processing.html#ft_outline_reverse_fill">FT_OUTLINE_REVERSE_FILL</a>     0x4
2273 #<span class="keyword">define</span> <a href="ft2-outline_processing.html#ft_outline_ignore_dropouts">FT_OUTLINE_IGNORE_DROPOUTS</a>  0x8
2274 #<span class="keyword">define</span> <a href="ft2-outline_processing.html#ft_outline_smart_dropouts">FT_OUTLINE_SMART_DROPOUTS</a>   0x10
2275 #<span class="keyword">define</span> <a href="ft2-outline_processing.html#ft_outline_include_stubs">FT_OUTLINE_INCLUDE_STUBS</a>    0x20
2276 #<span class="keyword">define</span> <a href="ft2-outline_processing.html#ft_outline_overlap">FT_OUTLINE_OVERLAP</a>          0x40
2277
2278 #<span class="keyword">define</span> <a href="ft2-outline_processing.html#ft_outline_high_precision">FT_OUTLINE_HIGH_PRECISION</a>   0x100
2279 #<span class="keyword">define</span> <a href="ft2-outline_processing.html#ft_outline_single_pass">FT_OUTLINE_SINGLE_PASS</a>      0x200
2280
2281
2282   /* these constants are deprecated; use the corresponding */
2283   /* `<b>FT_OUTLINE_XXX</b>` values instead                       */
2284 #<span class="keyword">define</span> ft_outline_none             <a href="ft2-outline_processing.html#ft_outline_none">FT_OUTLINE_NONE</a>
2285 #<span class="keyword">define</span> ft_outline_owner            <a href="ft2-outline_processing.html#ft_outline_owner">FT_OUTLINE_OWNER</a>
2286 #<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>
2287 #<span class="keyword">define</span> ft_outline_reverse_fill     <a href="ft2-outline_processing.html#ft_outline_reverse_fill">FT_OUTLINE_REVERSE_FILL</a>
2288 #<span class="keyword">define</span> ft_outline_ignore_dropouts  <a href="ft2-outline_processing.html#ft_outline_ignore_dropouts">FT_OUTLINE_IGNORE_DROPOUTS</a>
2289 #<span class="keyword">define</span> ft_outline_high_precision   <a href="ft2-outline_processing.html#ft_outline_high_precision">FT_OUTLINE_HIGH_PRECISION</a>
2290 #<span class="keyword">define</span> ft_outline_single_pass      <a href="ft2-outline_processing.html#ft_outline_single_pass">FT_OUTLINE_SINGLE_PASS</a>
2291 </code></pre></div>
2292
2293 <p>A list of bit-field constants used for the flags in an outline's <code>flags</code> field.</p>
2294 <h4>values</h4>
2295 <table class="fields long">
2296 <tr><td class="val" id="ft_outline_none">FT_OUTLINE_NONE</td><td class="desc">
2297 <p>Value&nbsp;0 is reserved.</p>
2298 </td></tr>
2299 <tr><td class="val" id="ft_outline_owner">FT_OUTLINE_OWNER</td><td class="desc">
2300 <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 &lsquo;owned&rsquo; by the outline object, and should thus be freed when it is destroyed.</p>
2301 </td></tr>
2302 <tr><td class="val" id="ft_outline_even_odd_fill">FT_OUTLINE_EVEN_ODD_FILL</td><td class="desc">
2303 <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>
2304 </td></tr>
2305 <tr><td class="val" id="ft_outline_reverse_fill">FT_OUTLINE_REVERSE_FILL</td><td class="desc">
2306 <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&nbsp;1 fonts). This flag is ignored by the scan converter.</p>
2307 </td></tr>
2308 <tr><td class="val" id="ft_outline_ignore_dropouts">FT_OUTLINE_IGNORE_DROPOUTS</td><td class="desc">
2309 <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>
2310 </td></tr>
2311 <tr><td class="val" id="ft_outline_smart_dropouts">FT_OUTLINE_SMART_DROPOUTS</td><td class="desc">
2312 <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>
2313 </td></tr>
2314 <tr><td class="val" id="ft_outline_include_stubs">FT_OUTLINE_INCLUDE_STUBS</td><td class="desc">
2315 <p>If set, turn pixels on for &lsquo;stubs&rsquo;, 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>
2316 </td></tr>
2317 <tr><td class="val" id="ft_outline_overlap">FT_OUTLINE_OVERLAP</td><td class="desc">
2318 <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>
2319 </td></tr>
2320 <tr><td class="val" id="ft_outline_high_precision">FT_OUTLINE_HIGH_PRECISION</td><td class="desc">
2321 <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>
2322 </td></tr>
2323 <tr><td class="val" id="ft_outline_single_pass">FT_OUTLINE_SINGLE_PASS</td><td class="desc">
2324 <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>
2325 </td></tr>
2326 </table>
2327
2328 <h4>note</h4>
2329
2330 <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>
2331 <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>
2332 <p>Please refer to the description of the &lsquo;SCANTYPE&rsquo; instruction in the OpenType specification (in file <code>ttinst1.doc</code>) how simple drop-outs, smart drop-outs, and stubs are defined.</p>
2333 <hr>
2334                 
2335               
2336               
2337                 
2338
2339
2340               
2341             </article>
2342           </div>
2343         </div>
2344         
2345       </main>
2346       
2347         
2348 <footer class="md-footer">
2349   
2350     <nav class="md-footer__inner md-grid" aria-label="Footer">
2351       
2352         
2353         <a href="ft2-list_processing.html" class="md-footer__link md-footer__link--prev" aria-label="Previous: List Processing" rel="prev">
2354           <div class="md-footer__button md-icon">
2355             <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>
2356           </div>
2357           <div class="md-footer__title">
2358             <div class="md-ellipsis">
2359               <span class="md-footer__direction">
2360                 Previous
2361               </span>
2362               List Processing
2363             </div>
2364           </div>
2365         </a>
2366       
2367       
2368         
2369         <a href="ft2-quick_advance.html" class="md-footer__link md-footer__link--next" aria-label="Next: Quick retrieval of advance values" rel="next">
2370           <div class="md-footer__title">
2371             <div class="md-ellipsis">
2372               <span class="md-footer__direction">
2373                 Next
2374               </span>
2375               Quick retrieval of advance values
2376             </div>
2377           </div>
2378           <div class="md-footer__button md-icon">
2379             <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>
2380           </div>
2381         </a>
2382       
2383     </nav>
2384   
2385   <div class="md-footer-meta md-typeset">
2386     <div class="md-footer-meta__inner md-grid">
2387       <div class="md-footer-copyright">
2388         
2389           <div class="md-footer-copyright__highlight">
2390             Copyright 2023 <a href = "https://www.freetype.org/license.html">The FreeType Project</a>.
2391           </div>
2392         
2393         Made with
2394         <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
2395           Material for MkDocs
2396         </a>
2397         
2398       </div>
2399       
2400     </div>
2401   </div>
2402 </footer>
2403       
2404     </div>
2405     <div class="md-dialog" data-md-component="dialog">
2406       <div class="md-dialog__inner md-typeset"></div>
2407     </div>
2408     <script id="__config" type="application/json">{"base": ".", "features": [], "search": "assets/javascripts/workers/search.477d984a.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.config.lang": "en", "search.config.pipeline": "trimmer, stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.placeholder": "Search", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version.title": "Select version"}, "version": null}</script>
2409     
2410     
2411       <script src="assets/javascripts/bundle.82b56eb2.min.js"></script>
2412       
2413         <script src="javascripts/extra.js"></script>
2414       
2415     
2416   </body>
2417 </html>