c48861b3557e6bf5a8a1a55ede4c8a82cc28da4a
[platform/upstream/freetype2.git] / docs / reference / ft2-outline_processing.html
1
2
3
4
5 <!doctype html>
6 <html lang="en" class="no-js">
7   <head>
8     
9       <meta charset="utf-8">
10       <meta name="viewport" content="width=device-width,initial-scale=1">
11       <meta http-equiv="x-ua-compatible" content="ie=edge">
12       
13         <meta name="description" content="API Reference Documentation for FreeType-2.10.4">
14       
15       
16       
17         <meta name="author" content="FreeType Contributors">
18       
19       
20         <meta name="lang:clipboard.copy" content="Copy to clipboard">
21       
22         <meta name="lang:clipboard.copied" content="Copied to clipboard">
23       
24         <meta name="lang:search.language" content="en">
25       
26         <meta name="lang:search.pipeline.stopwords" content="True">
27       
28         <meta name="lang:search.pipeline.trimmer" content="True">
29       
30         <meta name="lang:search.result.none" content="No matching documents">
31       
32         <meta name="lang:search.result.one" content="1 matching document">
33       
34         <meta name="lang:search.result.other" content="# matching documents">
35       
36         <meta name="lang:search.tokenizer" content="[\s\-]+">
37       
38       <link rel="shortcut icon" href="images/favico.ico">
39       <meta name="generator" content="mkdocs-1.1, mkdocs-material-4.6.3">
40     
41     
42       
43         <title>Outline Processing - FreeType-2.10.4 API Reference</title>
44       
45     
46     
47       <link rel="stylesheet" href="assets/stylesheets/application.adb8469c.css">
48       
49         <link rel="stylesheet" href="assets/stylesheets/application-palette.a8b3c06d.css">
50       
51       
52         
53         
54         <meta name="theme-color" content="#4caf50">
55       
56     
57     
58       <script src="assets/javascripts/modernizr.86422ebf.js"></script>
59     
60     
61       
62         <link href="https://fonts.gstatic.com" rel="preconnect" crossorigin>
63         <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Noto+Serif:300,400,400i,700%7CRoboto+Mono&display=fallback">
64         <style>body,input{font-family:"Noto Serif","Helvetica Neue",Helvetica,Arial,sans-serif}code,kbd,pre{font-family:"Roboto Mono","Courier New",Courier,monospace}</style>
65       
66     
67     <link rel="stylesheet" href="assets/fonts/material-icons.css">
68     
69     
70       <link rel="stylesheet" href="stylesheets/extra.css">
71     
72     
73       
74     
75     
76   </head>
77   
78     
79     
80     <body dir="ltr" data-md-color-primary="green" data-md-color-accent="green">
81   
82     <svg class="md-svg">
83       <defs>
84         
85         
86       </defs>
87     </svg>
88     <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
89     <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
90     <label class="md-overlay" data-md-component="overlay" for="__drawer"></label>
91     
92       <a href="#outline-processing" tabindex="0" class="md-skip">
93         Skip to content
94       </a>
95     
96     
97       <header class="md-header" data-md-component="header">
98   <nav class="md-header-nav md-grid">
99     <div class="md-flex">
100       <div class="md-flex__cell md-flex__cell--shrink">
101         <a href="." title="FreeType-2.10.4 API Reference" aria-label="FreeType-2.10.4 API Reference" class="md-header-nav__button md-logo">
102           
103             <img alt="logo" src="images/favico.ico" width="24" height="24">
104           
105         </a>
106       </div>
107       <div class="md-flex__cell md-flex__cell--shrink">
108         <label class="md-icon md-icon--menu md-header-nav__button" for="__drawer"></label>
109       </div>
110       <div class="md-flex__cell md-flex__cell--stretch">
111         <div class="md-flex__ellipsis md-header-nav__title" data-md-component="title">
112           
113             <span class="md-header-nav__topic">
114               FreeType-2.10.4 API Reference
115             </span>
116             <span class="md-header-nav__topic">
117               
118                 Outline Processing
119               
120             </span>
121           
122         </div>
123       </div>
124       <div class="md-flex__cell md-flex__cell--shrink">
125         
126           <label class="md-icon md-icon--search md-header-nav__button" for="__search"></label>
127           
128 <div class="md-search" data-md-component="search" role="dialog">
129   <label class="md-search__overlay" for="__search"></label>
130   <div class="md-search__inner" role="search">
131     <form class="md-search__form" name="search">
132       <input type="text" class="md-search__input" aria-label="search" name="query" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="query" data-md-state="active">
133       <label class="md-icon md-search__icon" for="__search"></label>
134       <button type="reset" class="md-icon md-search__icon" data-md-component="reset" tabindex="-1">
135         &#xE5CD;
136       </button>
137     </form>
138     <div class="md-search__output">
139       <div class="md-search__scrollwrap" data-md-scrollfix>
140         <div class="md-search-result" data-md-component="result">
141           <div class="md-search-result__meta">
142             Type to start searching
143           </div>
144           <ol class="md-search-result__list"></ol>
145         </div>
146       </div>
147     </div>
148   </div>
149 </div>
150         
151       </div>
152       
153     </div>
154   </nav>
155 </header>
156     
157     <div class="md-container">
158       
159         
160       
161       
162       <main class="md-main" role="main">
163         <div class="md-main__inner md-grid" data-md-component="container">
164           
165             
166               <div class="md-sidebar md-sidebar--primary" data-md-component="navigation">
167                 <div class="md-sidebar__scrollwrap">
168                   <div class="md-sidebar__inner">
169                     <nav class="md-nav md-nav--primary" data-md-level="0">
170   <label class="md-nav__title md-nav__title--site" for="__drawer">
171     <a href="." title="FreeType-2.10.4 API Reference" class="md-nav__button md-logo">
172       
173         <img alt="logo" src="images/favico.ico" width="48" height="48">
174       
175     </a>
176     FreeType-2.10.4 API Reference
177   </label>
178   
179   <ul class="md-nav__list" data-md-scrollfix>
180     
181       
182       
183       
184
185
186   <li class="md-nav__item">
187     <a href="index.html" title="TOC" class="md-nav__link">
188       TOC
189     </a>
190   </li>
191
192     
193       
194       
195       
196
197
198   <li class="md-nav__item">
199     <a href="ft2-index.html" title="Index" class="md-nav__link">
200       Index
201     </a>
202   </li>
203
204     
205       
206       
207       
208
209
210   <li class="md-nav__item md-nav__item--nested">
211     
212       <input class="md-toggle md-nav__toggle" data-md-toggle="nav-3" type="checkbox" id="nav-3">
213     
214     <label class="md-nav__link" for="nav-3">
215       General Remarks
216     </label>
217     <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
218       <label class="md-nav__title" for="nav-3">
219         General Remarks
220       </label>
221       <ul class="md-nav__list" data-md-scrollfix>
222         
223         
224           
225           
226           
227
228
229   <li class="md-nav__item">
230     <a href="ft2-header_inclusion.html" title="FreeType's header inclusion scheme" class="md-nav__link">
231       FreeType's header inclusion scheme
232     </a>
233   </li>
234
235         
236           
237           
238           
239
240
241   <li class="md-nav__item">
242     <a href="ft2-user_allocation.html" title="User allocation" class="md-nav__link">
243       User allocation
244     </a>
245   </li>
246
247         
248       </ul>
249     </nav>
250   </li>
251
252     
253       
254       
255       
256
257
258   <li class="md-nav__item md-nav__item--nested">
259     
260       <input class="md-toggle md-nav__toggle" data-md-toggle="nav-4" type="checkbox" id="nav-4">
261     
262     <label class="md-nav__link" for="nav-4">
263       Core API
264     </label>
265     <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
266       <label class="md-nav__title" for="nav-4">
267         Core API
268       </label>
269       <ul class="md-nav__list" data-md-scrollfix>
270         
271         
272           
273           
274           
275
276
277   <li class="md-nav__item">
278     <a href="ft2-version.html" title="FreeType Version" class="md-nav__link">
279       FreeType Version
280     </a>
281   </li>
282
283         
284           
285           
286           
287
288
289   <li class="md-nav__item">
290     <a href="ft2-basic_types.html" title="Basic Data Types" class="md-nav__link">
291       Basic Data Types
292     </a>
293   </li>
294
295         
296           
297           
298           
299
300
301   <li class="md-nav__item">
302     <a href="ft2-base_interface.html" title="Base Interface" class="md-nav__link">
303       Base Interface
304     </a>
305   </li>
306
307         
308           
309           
310           
311
312
313   <li class="md-nav__item">
314     <a href="ft2-glyph_variants.html" title="Unicode Variation Sequences" class="md-nav__link">
315       Unicode Variation Sequences
316     </a>
317   </li>
318
319         
320           
321           
322           
323
324
325   <li class="md-nav__item">
326     <a href="ft2-color_management.html" title="Glyph Color Management" class="md-nav__link">
327       Glyph Color Management
328     </a>
329   </li>
330
331         
332           
333           
334           
335
336
337   <li class="md-nav__item">
338     <a href="ft2-layer_management.html" title="Glyph Layer Management" class="md-nav__link">
339       Glyph Layer Management
340     </a>
341   </li>
342
343         
344           
345           
346           
347
348
349   <li class="md-nav__item">
350     <a href="ft2-glyph_management.html" title="Glyph Management" class="md-nav__link">
351       Glyph Management
352     </a>
353   </li>
354
355         
356           
357           
358           
359
360
361   <li class="md-nav__item">
362     <a href="ft2-mac_specific.html" title="Mac Specific Interface" class="md-nav__link">
363       Mac Specific Interface
364     </a>
365   </li>
366
367         
368           
369           
370           
371
372
373   <li class="md-nav__item">
374     <a href="ft2-sizes_management.html" title="Size Management" class="md-nav__link">
375       Size Management
376     </a>
377   </li>
378
379         
380           
381           
382           
383
384
385   <li class="md-nav__item">
386     <a href="ft2-header_file_macros.html" title="Header File Macros" class="md-nav__link">
387       Header File Macros
388     </a>
389   </li>
390
391         
392       </ul>
393     </nav>
394   </li>
395
396     
397       
398       
399       
400
401
402   <li class="md-nav__item md-nav__item--nested">
403     
404       <input class="md-toggle md-nav__toggle" data-md-toggle="nav-5" type="checkbox" id="nav-5">
405     
406     <label class="md-nav__link" for="nav-5">
407       Format-Specific API
408     </label>
409     <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
410       <label class="md-nav__title" for="nav-5">
411         Format-Specific API
412       </label>
413       <ul class="md-nav__list" data-md-scrollfix>
414         
415         
416           
417           
418           
419
420
421   <li class="md-nav__item">
422     <a href="ft2-multiple_masters.html" title="Multiple Masters" class="md-nav__link">
423       Multiple Masters
424     </a>
425   </li>
426
427         
428           
429           
430           
431
432
433   <li class="md-nav__item">
434     <a href="ft2-truetype_tables.html" title="TrueType Tables" class="md-nav__link">
435       TrueType Tables
436     </a>
437   </li>
438
439         
440           
441           
442           
443
444
445   <li class="md-nav__item">
446     <a href="ft2-type1_tables.html" title="Type 1 Tables" class="md-nav__link">
447       Type 1 Tables
448     </a>
449   </li>
450
451         
452           
453           
454           
455
456
457   <li class="md-nav__item">
458     <a href="ft2-sfnt_names.html" title="SFNT Names" class="md-nav__link">
459       SFNT Names
460     </a>
461   </li>
462
463         
464           
465           
466           
467
468
469   <li class="md-nav__item">
470     <a href="ft2-bdf_fonts.html" title="BDF and PCF Files" class="md-nav__link">
471       BDF and PCF Files
472     </a>
473   </li>
474
475         
476           
477           
478           
479
480
481   <li class="md-nav__item">
482     <a href="ft2-cid_fonts.html" title="CID Fonts" class="md-nav__link">
483       CID Fonts
484     </a>
485   </li>
486
487         
488           
489           
490           
491
492
493   <li class="md-nav__item">
494     <a href="ft2-pfr_fonts.html" title="PFR Fonts" class="md-nav__link">
495       PFR Fonts
496     </a>
497   </li>
498
499         
500           
501           
502           
503
504
505   <li class="md-nav__item">
506     <a href="ft2-winfnt_fonts.html" title="Window FNT Files" class="md-nav__link">
507       Window FNT Files
508     </a>
509   </li>
510
511         
512           
513           
514           
515
516
517   <li class="md-nav__item">
518     <a href="ft2-font_formats.html" title="Font Formats" class="md-nav__link">
519       Font Formats
520     </a>
521   </li>
522
523         
524           
525           
526           
527
528
529   <li class="md-nav__item">
530     <a href="ft2-gasp_table.html" title="Gasp Table" class="md-nav__link">
531       Gasp Table
532     </a>
533   </li>
534
535         
536       </ul>
537     </nav>
538   </li>
539
540     
541       
542       
543       
544
545
546   <li class="md-nav__item md-nav__item--nested">
547     
548       <input class="md-toggle md-nav__toggle" data-md-toggle="nav-6" type="checkbox" id="nav-6">
549     
550     <label class="md-nav__link" for="nav-6">
551       Controlling FreeType Modules
552     </label>
553     <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
554       <label class="md-nav__title" for="nav-6">
555         Controlling FreeType Modules
556       </label>
557       <ul class="md-nav__list" data-md-scrollfix>
558         
559         
560           
561           
562           
563
564
565   <li class="md-nav__item">
566     <a href="ft2-auto_hinter.html" title="The auto-hinter" class="md-nav__link">
567       The auto-hinter
568     </a>
569   </li>
570
571         
572           
573           
574           
575
576
577   <li class="md-nav__item">
578     <a href="ft2-cff_driver.html" title="The CFF driver" class="md-nav__link">
579       The CFF driver
580     </a>
581   </li>
582
583         
584           
585           
586           
587
588
589   <li class="md-nav__item">
590     <a href="ft2-t1_cid_driver.html" title="The Type 1 and CID drivers" class="md-nav__link">
591       The Type 1 and CID drivers
592     </a>
593   </li>
594
595         
596           
597           
598           
599
600
601   <li class="md-nav__item">
602     <a href="ft2-tt_driver.html" title="The TrueType driver" class="md-nav__link">
603       The TrueType driver
604     </a>
605   </li>
606
607         
608           
609           
610           
611
612
613   <li class="md-nav__item">
614     <a href="ft2-pcf_driver.html" title="The PCF driver" class="md-nav__link">
615       The PCF driver
616     </a>
617   </li>
618
619         
620           
621           
622           
623
624
625   <li class="md-nav__item">
626     <a href="ft2-properties.html" title="Driver properties" class="md-nav__link">
627       Driver properties
628     </a>
629   </li>
630
631         
632           
633           
634           
635
636
637   <li class="md-nav__item">
638     <a href="ft2-parameter_tags.html" title="Parameter Tags" class="md-nav__link">
639       Parameter Tags
640     </a>
641   </li>
642
643         
644           
645           
646           
647
648
649   <li class="md-nav__item">
650     <a href="ft2-lcd_rendering.html" title="Subpixel Rendering" class="md-nav__link">
651       Subpixel Rendering
652     </a>
653   </li>
654
655         
656       </ul>
657     </nav>
658   </li>
659
660     
661       
662       
663       
664
665
666   <li class="md-nav__item md-nav__item--nested">
667     
668       <input class="md-toggle md-nav__toggle" data-md-toggle="nav-7" type="checkbox" id="nav-7">
669     
670     <label class="md-nav__link" for="nav-7">
671       Cache Sub-System
672     </label>
673     <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
674       <label class="md-nav__title" for="nav-7">
675         Cache Sub-System
676       </label>
677       <ul class="md-nav__list" data-md-scrollfix>
678         
679         
680           
681           
682           
683
684
685   <li class="md-nav__item">
686     <a href="ft2-cache_subsystem.html" title="Cache Sub-System" class="md-nav__link">
687       Cache Sub-System
688     </a>
689   </li>
690
691         
692       </ul>
693     </nav>
694   </li>
695
696     
697       
698       
699       
700
701   
702
703
704   <li class="md-nav__item md-nav__item--active md-nav__item--nested">
705     
706       <input class="md-toggle md-nav__toggle" data-md-toggle="nav-8" type="checkbox" id="nav-8" checked>
707     
708     <label class="md-nav__link" for="nav-8">
709       Support API
710     </label>
711     <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
712       <label class="md-nav__title" for="nav-8">
713         Support API
714       </label>
715       <ul class="md-nav__list" data-md-scrollfix>
716         
717         
718           
719           
720           
721
722
723   <li class="md-nav__item">
724     <a href="ft2-computations.html" title="Computations" class="md-nav__link">
725       Computations
726     </a>
727   </li>
728
729         
730           
731           
732           
733
734
735   <li class="md-nav__item">
736     <a href="ft2-list_processing.html" title="List Processing" class="md-nav__link">
737       List Processing
738     </a>
739   </li>
740
741         
742           
743           
744           
745
746   
747
748
749   <li class="md-nav__item md-nav__item--active">
750     
751     <input class="md-toggle md-nav__toggle" data-md-toggle="toc" type="checkbox" id="__toc">
752     
753       
754     
755     
756       <label class="md-nav__link md-nav__link--active" for="__toc">
757         Outline Processing
758       </label>
759     
760     <a href="ft2-outline_processing.html" title="Outline Processing" class="md-nav__link md-nav__link--active">
761       Outline Processing
762     </a>
763     
764       
765 <nav class="md-nav md-nav--secondary">
766   
767   
768     
769   
770   
771     <label class="md-nav__title" for="__toc">Table of contents</label>
772     <ul class="md-nav__list" data-md-scrollfix>
773       
774         <li class="md-nav__item">
775   <a href="#synopsis" class="md-nav__link">
776     Synopsis
777   </a>
778   
779 </li>
780       
781         <li class="md-nav__item">
782   <a href="#ft_outline" class="md-nav__link">
783     FT_Outline
784   </a>
785   
786 </li>
787       
788         <li class="md-nav__item">
789   <a href="#ft_outline_new" class="md-nav__link">
790     FT_Outline_New
791   </a>
792   
793 </li>
794       
795         <li class="md-nav__item">
796   <a href="#ft_outline_done" class="md-nav__link">
797     FT_Outline_Done
798   </a>
799   
800 </li>
801       
802         <li class="md-nav__item">
803   <a href="#ft_outline_copy" class="md-nav__link">
804     FT_Outline_Copy
805   </a>
806   
807 </li>
808       
809         <li class="md-nav__item">
810   <a href="#ft_outline_translate" class="md-nav__link">
811     FT_Outline_Translate
812   </a>
813   
814 </li>
815       
816         <li class="md-nav__item">
817   <a href="#ft_outline_transform" class="md-nav__link">
818     FT_Outline_Transform
819   </a>
820   
821 </li>
822       
823         <li class="md-nav__item">
824   <a href="#ft_outline_embolden" class="md-nav__link">
825     FT_Outline_Embolden
826   </a>
827   
828 </li>
829       
830         <li class="md-nav__item">
831   <a href="#ft_outline_emboldenxy" class="md-nav__link">
832     FT_Outline_EmboldenXY
833   </a>
834   
835 </li>
836       
837         <li class="md-nav__item">
838   <a href="#ft_outline_reverse" class="md-nav__link">
839     FT_Outline_Reverse
840   </a>
841   
842 </li>
843       
844         <li class="md-nav__item">
845   <a href="#ft_outline_check" class="md-nav__link">
846     FT_Outline_Check
847   </a>
848   
849 </li>
850       
851         <li class="md-nav__item">
852   <a href="#ft_outline_get_cbox" class="md-nav__link">
853     FT_Outline_Get_CBox
854   </a>
855   
856 </li>
857       
858         <li class="md-nav__item">
859   <a href="#ft_outline_get_bbox" class="md-nav__link">
860     FT_Outline_Get_BBox
861   </a>
862   
863 </li>
864       
865         <li class="md-nav__item">
866   <a href="#ft_outline_get_bitmap" class="md-nav__link">
867     FT_Outline_Get_Bitmap
868   </a>
869   
870 </li>
871       
872         <li class="md-nav__item">
873   <a href="#ft_outline_render" class="md-nav__link">
874     FT_Outline_Render
875   </a>
876   
877 </li>
878       
879         <li class="md-nav__item">
880   <a href="#ft_outline_decompose" class="md-nav__link">
881     FT_Outline_Decompose
882   </a>
883   
884 </li>
885       
886         <li class="md-nav__item">
887   <a href="#ft_outline_funcs" class="md-nav__link">
888     FT_Outline_Funcs
889   </a>
890   
891 </li>
892       
893         <li class="md-nav__item">
894   <a href="#ft_outline_movetofunc" class="md-nav__link">
895     FT_Outline_MoveToFunc
896   </a>
897   
898 </li>
899       
900         <li class="md-nav__item">
901   <a href="#ft_outline_linetofunc" class="md-nav__link">
902     FT_Outline_LineToFunc
903   </a>
904   
905 </li>
906       
907         <li class="md-nav__item">
908   <a href="#ft_outline_conictofunc" class="md-nav__link">
909     FT_Outline_ConicToFunc
910   </a>
911   
912 </li>
913       
914         <li class="md-nav__item">
915   <a href="#ft_outline_cubictofunc" class="md-nav__link">
916     FT_Outline_CubicToFunc
917   </a>
918   
919 </li>
920       
921         <li class="md-nav__item">
922   <a href="#ft_orientation" class="md-nav__link">
923     FT_Orientation
924   </a>
925   
926 </li>
927       
928         <li class="md-nav__item">
929   <a href="#ft_outline_get_orientation" class="md-nav__link">
930     FT_Outline_Get_Orientation
931   </a>
932   
933 </li>
934       
935         <li class="md-nav__item">
936   <a href="#ft_outline_xxx" class="md-nav__link">
937     FT_OUTLINE_XXX
938   </a>
939   
940 </li>
941       
942       
943       
944       
945       
946     </ul>
947   
948 </nav>
949     
950   </li>
951
952         
953           
954           
955           
956
957
958   <li class="md-nav__item">
959     <a href="ft2-quick_advance.html" title="Quick retrieval of advance values" class="md-nav__link">
960       Quick retrieval of advance values
961     </a>
962   </li>
963
964         
965           
966           
967           
968
969
970   <li class="md-nav__item">
971     <a href="ft2-bitmap_handling.html" title="Bitmap Handling" class="md-nav__link">
972       Bitmap Handling
973     </a>
974   </li>
975
976         
977           
978           
979           
980
981
982   <li class="md-nav__item">
983     <a href="ft2-raster.html" title="Scanline Converter" class="md-nav__link">
984       Scanline Converter
985     </a>
986   </li>
987
988         
989           
990           
991           
992
993
994   <li class="md-nav__item">
995     <a href="ft2-glyph_stroker.html" title="Glyph Stroker" class="md-nav__link">
996       Glyph Stroker
997     </a>
998   </li>
999
1000         
1001           
1002           
1003           
1004
1005
1006   <li class="md-nav__item">
1007     <a href="ft2-system_interface.html" title="System Interface" class="md-nav__link">
1008       System Interface
1009     </a>
1010   </li>
1011
1012         
1013           
1014           
1015           
1016
1017
1018   <li class="md-nav__item">
1019     <a href="ft2-module_management.html" title="Module Management" class="md-nav__link">
1020       Module Management
1021     </a>
1022   </li>
1023
1024         
1025           
1026           
1027           
1028
1029
1030   <li class="md-nav__item">
1031     <a href="ft2-gzip.html" title="GZIP Streams" class="md-nav__link">
1032       GZIP Streams
1033     </a>
1034   </li>
1035
1036         
1037           
1038           
1039           
1040
1041
1042   <li class="md-nav__item">
1043     <a href="ft2-lzw.html" title="LZW Streams" class="md-nav__link">
1044       LZW Streams
1045     </a>
1046   </li>
1047
1048         
1049           
1050           
1051           
1052
1053
1054   <li class="md-nav__item">
1055     <a href="ft2-bzip2.html" title="BZIP2 Streams" class="md-nav__link">
1056       BZIP2 Streams
1057     </a>
1058   </li>
1059
1060         
1061       </ul>
1062     </nav>
1063   </li>
1064
1065     
1066       
1067       
1068       
1069
1070
1071   <li class="md-nav__item md-nav__item--nested">
1072     
1073       <input class="md-toggle md-nav__toggle" data-md-toggle="nav-9" type="checkbox" id="nav-9">
1074     
1075     <label class="md-nav__link" for="nav-9">
1076       Error Codes
1077     </label>
1078     <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
1079       <label class="md-nav__title" for="nav-9">
1080         Error Codes
1081       </label>
1082       <ul class="md-nav__list" data-md-scrollfix>
1083         
1084         
1085           
1086           
1087           
1088
1089
1090   <li class="md-nav__item">
1091     <a href="ft2-error_enumerations.html" title="Error Enumerations" class="md-nav__link">
1092       Error Enumerations
1093     </a>
1094   </li>
1095
1096         
1097           
1098           
1099           
1100
1101
1102   <li class="md-nav__item">
1103     <a href="ft2-error_code_values.html" title="Error Code Values" class="md-nav__link">
1104       Error Code Values
1105     </a>
1106   </li>
1107
1108         
1109       </ul>
1110     </nav>
1111   </li>
1112
1113     
1114       
1115       
1116       
1117
1118
1119   <li class="md-nav__item md-nav__item--nested">
1120     
1121       <input class="md-toggle md-nav__toggle" data-md-toggle="nav-10" type="checkbox" id="nav-10">
1122     
1123     <label class="md-nav__link" for="nav-10">
1124       Miscellaneous
1125     </label>
1126     <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
1127       <label class="md-nav__title" for="nav-10">
1128         Miscellaneous
1129       </label>
1130       <ul class="md-nav__list" data-md-scrollfix>
1131         
1132         
1133           
1134           
1135           
1136
1137
1138   <li class="md-nav__item">
1139     <a href="ft2-gx_validation.html" title="TrueTypeGX/AAT Validation" class="md-nav__link">
1140       TrueTypeGX/AAT Validation
1141     </a>
1142   </li>
1143
1144         
1145           
1146           
1147           
1148
1149
1150   <li class="md-nav__item">
1151     <a href="ft2-incremental.html" title="Incremental Loading" class="md-nav__link">
1152       Incremental Loading
1153     </a>
1154   </li>
1155
1156         
1157           
1158           
1159           
1160
1161
1162   <li class="md-nav__item">
1163     <a href="ft2-truetype_engine.html" title="The TrueType Engine" class="md-nav__link">
1164       The TrueType Engine
1165     </a>
1166   </li>
1167
1168         
1169           
1170           
1171           
1172
1173
1174   <li class="md-nav__item">
1175     <a href="ft2-ot_validation.html" title="OpenType Validation" class="md-nav__link">
1176       OpenType Validation
1177     </a>
1178   </li>
1179
1180         
1181       </ul>
1182     </nav>
1183   </li>
1184
1185     
1186   </ul>
1187 </nav>
1188                   </div>
1189                 </div>
1190               </div>
1191             
1192             
1193               <div class="md-sidebar md-sidebar--secondary" data-md-component="toc">
1194                 <div class="md-sidebar__scrollwrap">
1195                   <div class="md-sidebar__inner">
1196                     
1197 <nav class="md-nav md-nav--secondary">
1198   
1199   
1200     
1201   
1202   
1203     <label class="md-nav__title" for="__toc">Table of contents</label>
1204     <ul class="md-nav__list" data-md-scrollfix>
1205       
1206         <li class="md-nav__item">
1207   <a href="#synopsis" class="md-nav__link">
1208     Synopsis
1209   </a>
1210   
1211 </li>
1212       
1213         <li class="md-nav__item">
1214   <a href="#ft_outline" class="md-nav__link">
1215     FT_Outline
1216   </a>
1217   
1218 </li>
1219       
1220         <li class="md-nav__item">
1221   <a href="#ft_outline_new" class="md-nav__link">
1222     FT_Outline_New
1223   </a>
1224   
1225 </li>
1226       
1227         <li class="md-nav__item">
1228   <a href="#ft_outline_done" class="md-nav__link">
1229     FT_Outline_Done
1230   </a>
1231   
1232 </li>
1233       
1234         <li class="md-nav__item">
1235   <a href="#ft_outline_copy" class="md-nav__link">
1236     FT_Outline_Copy
1237   </a>
1238   
1239 </li>
1240       
1241         <li class="md-nav__item">
1242   <a href="#ft_outline_translate" class="md-nav__link">
1243     FT_Outline_Translate
1244   </a>
1245   
1246 </li>
1247       
1248         <li class="md-nav__item">
1249   <a href="#ft_outline_transform" class="md-nav__link">
1250     FT_Outline_Transform
1251   </a>
1252   
1253 </li>
1254       
1255         <li class="md-nav__item">
1256   <a href="#ft_outline_embolden" class="md-nav__link">
1257     FT_Outline_Embolden
1258   </a>
1259   
1260 </li>
1261       
1262         <li class="md-nav__item">
1263   <a href="#ft_outline_emboldenxy" class="md-nav__link">
1264     FT_Outline_EmboldenXY
1265   </a>
1266   
1267 </li>
1268       
1269         <li class="md-nav__item">
1270   <a href="#ft_outline_reverse" class="md-nav__link">
1271     FT_Outline_Reverse
1272   </a>
1273   
1274 </li>
1275       
1276         <li class="md-nav__item">
1277   <a href="#ft_outline_check" class="md-nav__link">
1278     FT_Outline_Check
1279   </a>
1280   
1281 </li>
1282       
1283         <li class="md-nav__item">
1284   <a href="#ft_outline_get_cbox" class="md-nav__link">
1285     FT_Outline_Get_CBox
1286   </a>
1287   
1288 </li>
1289       
1290         <li class="md-nav__item">
1291   <a href="#ft_outline_get_bbox" class="md-nav__link">
1292     FT_Outline_Get_BBox
1293   </a>
1294   
1295 </li>
1296       
1297         <li class="md-nav__item">
1298   <a href="#ft_outline_get_bitmap" class="md-nav__link">
1299     FT_Outline_Get_Bitmap
1300   </a>
1301   
1302 </li>
1303       
1304         <li class="md-nav__item">
1305   <a href="#ft_outline_render" class="md-nav__link">
1306     FT_Outline_Render
1307   </a>
1308   
1309 </li>
1310       
1311         <li class="md-nav__item">
1312   <a href="#ft_outline_decompose" class="md-nav__link">
1313     FT_Outline_Decompose
1314   </a>
1315   
1316 </li>
1317       
1318         <li class="md-nav__item">
1319   <a href="#ft_outline_funcs" class="md-nav__link">
1320     FT_Outline_Funcs
1321   </a>
1322   
1323 </li>
1324       
1325         <li class="md-nav__item">
1326   <a href="#ft_outline_movetofunc" class="md-nav__link">
1327     FT_Outline_MoveToFunc
1328   </a>
1329   
1330 </li>
1331       
1332         <li class="md-nav__item">
1333   <a href="#ft_outline_linetofunc" class="md-nav__link">
1334     FT_Outline_LineToFunc
1335   </a>
1336   
1337 </li>
1338       
1339         <li class="md-nav__item">
1340   <a href="#ft_outline_conictofunc" class="md-nav__link">
1341     FT_Outline_ConicToFunc
1342   </a>
1343   
1344 </li>
1345       
1346         <li class="md-nav__item">
1347   <a href="#ft_outline_cubictofunc" class="md-nav__link">
1348     FT_Outline_CubicToFunc
1349   </a>
1350   
1351 </li>
1352       
1353         <li class="md-nav__item">
1354   <a href="#ft_orientation" class="md-nav__link">
1355     FT_Orientation
1356   </a>
1357   
1358 </li>
1359       
1360         <li class="md-nav__item">
1361   <a href="#ft_outline_get_orientation" class="md-nav__link">
1362     FT_Outline_Get_Orientation
1363   </a>
1364   
1365 </li>
1366       
1367         <li class="md-nav__item">
1368   <a href="#ft_outline_xxx" class="md-nav__link">
1369     FT_OUTLINE_XXX
1370   </a>
1371   
1372 </li>
1373       
1374       
1375       
1376       
1377       
1378     </ul>
1379   
1380 </nav>
1381                   </div>
1382                 </div>
1383               </div>
1384             
1385           
1386           <div class="md-content">
1387             <article class="md-content__inner md-typeset">
1388               
1389                 
1390                 
1391                 <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>
1392 <hr />
1393 <h1 id="outline-processing">Outline Processing<a class="headerlink" href="#outline-processing" title="Permanent link">&para;</a></h1>
1394 <h2 id="synopsis">Synopsis<a class="headerlink" href="#synopsis" title="Permanent link">&para;</a></h2>
1395 <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>
1396 <h2 id="ft_outline">FT_Outline<a class="headerlink" href="#ft_outline" title="Permanent link">&para;</a></h2>
1397 <p>Defined in FT_IMAGE_H (freetype/ftimage.h).</p>
1398 <div class = "codehilite"><pre><code>  <span class="keyword">typedef</span> <span class="keyword">struct</span>  FT_Outline_
1399   {
1400     <span class="keyword">short</span>       n_contours;      /* number of contours in glyph        */
1401     <span class="keyword">short</span>       n_points;        /* number of points in the glyph      */
1402
1403     <a href="ft2-basic_types.html#ft_vector">FT_Vector</a>*  points;          /* the outline's points               */
1404     <span class="keyword">char</span>*       tags;            /* the points flags                   */
1405     <span class="keyword">short</span>*      contours;        /* the contour end points             */
1406
1407     <span class="keyword">int</span>         flags;           /* outline masks                      */
1408
1409   } <b>FT_Outline</b>;
1410 </code></pre></div>
1411
1412 <p>This structure is used to describe an outline to the scan-line converter.</p>
1413 <h4>fields</h4>
1414
1415 <table class="fields">
1416 <tr><td class="val" id="n_contours">n_contours</td><td class="desc">
1417 <p>The number of contours in the outline.</p>
1418 </td></tr>
1419 <tr><td class="val" id="n_points">n_points</td><td class="desc">
1420 <p>The number of points in the outline.</p>
1421 </td></tr>
1422 <tr><td class="val" id="points">points</td><td class="desc">
1423 <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>
1424 </td></tr>
1425 <tr><td class="val" id="tags">tags</td><td class="desc">
1426 <p>A pointer to an array of <code>n_points</code> chars, giving each outline point's type.</p>
1427 <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>
1428 <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>
1429 <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>
1430 <p>Bits 3 and&nbsp;4 are reserved for internal purposes.</p>
1431 </td></tr>
1432 <tr><td class="val" id="contours">contours</td><td class="desc">
1433 <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>
1434 </td></tr>
1435 <tr><td class="val" id="flags">flags</td><td class="desc">
1436 <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>
1437 </td></tr>
1438 </table>
1439
1440 <h4>note</h4>
1441
1442 <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>
1443 <hr>
1444
1445 <h2 id="ft_outline_new">FT_Outline_New<a class="headerlink" href="#ft_outline_new" title="Permanent link">&para;</a></h2>
1446 <p>Defined in FT_OUTLINE_H (freetype/ftoutln.h).</p>
1447 <div class = "codehilite"><pre><code>  FT_EXPORT( <a href="ft2-basic_types.html#ft_error">FT_Error</a> )
1448   <b>FT_Outline_New</b>( <a href="ft2-base_interface.html#ft_library">FT_Library</a>   library,
1449                   <a href="ft2-basic_types.html#ft_uint">FT_UInt</a>      numPoints,
1450                   <a href="ft2-basic_types.html#ft_int">FT_Int</a>       numContours,
1451                   <a href="ft2-outline_processing.html#ft_outline">FT_Outline</a>  *anoutline );
1452 </code></pre></div>
1453
1454 <p>Create a new outline of a given size.</p>
1455 <h4>input</h4>
1456
1457 <table class="fields">
1458 <tr><td class="val" id="library">library</td><td class="desc">
1459 <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>
1460 </td></tr>
1461 <tr><td class="val" id="numpoints">numPoints</td><td class="desc">
1462 <p>The maximum number of points within the outline. Must be smaller than or equal to 0xFFFF (65535).</p>
1463 </td></tr>
1464 <tr><td class="val" id="numcontours">numContours</td><td class="desc">
1465 <p>The maximum number of contours within the outline. This value must be in the range 0 to <code>numPoints</code>.</p>
1466 </td></tr>
1467 </table>
1468
1469 <h4>output</h4>
1470
1471 <table class="fields">
1472 <tr><td class="val" id="anoutline">anoutline</td><td class="desc">
1473 <p>A handle to the new outline.</p>
1474 </td></tr>
1475 </table>
1476
1477 <h4>return</h4>
1478
1479 <p>FreeType error code. 0&nbsp;means success.</p>
1480 <h4>note</h4>
1481
1482 <p>The reason why this function takes a <code>library</code> parameter is simply to use the library's memory allocator.</p>
1483 <hr>
1484
1485 <h2 id="ft_outline_done">FT_Outline_Done<a class="headerlink" href="#ft_outline_done" title="Permanent link">&para;</a></h2>
1486 <p>Defined in FT_OUTLINE_H (freetype/ftoutln.h).</p>
1487 <div class = "codehilite"><pre><code>  FT_EXPORT( <a href="ft2-basic_types.html#ft_error">FT_Error</a> )
1488   <b>FT_Outline_Done</b>( <a href="ft2-base_interface.html#ft_library">FT_Library</a>   library,
1489                    <a href="ft2-outline_processing.html#ft_outline">FT_Outline</a>*  outline );
1490 </code></pre></div>
1491
1492 <p>Destroy an outline created with <code><a href="ft2-outline_processing.html#ft_outline_new">FT_Outline_New</a></code>.</p>
1493 <h4>input</h4>
1494
1495 <table class="fields">
1496 <tr><td class="val" id="library">library</td><td class="desc">
1497 <p>A handle of the library object used to allocate the outline.</p>
1498 </td></tr>
1499 <tr><td class="val" id="outline">outline</td><td class="desc">
1500 <p>A pointer to the outline object to be discarded.</p>
1501 </td></tr>
1502 </table>
1503
1504 <h4>return</h4>
1505
1506 <p>FreeType error code. 0&nbsp;means success.</p>
1507 <h4>note</h4>
1508
1509 <p>If the outline's &lsquo;owner&rsquo; field is not set, only the outline descriptor will be released.</p>
1510 <hr>
1511
1512 <h2 id="ft_outline_copy">FT_Outline_Copy<a class="headerlink" href="#ft_outline_copy" title="Permanent link">&para;</a></h2>
1513 <p>Defined in FT_OUTLINE_H (freetype/ftoutln.h).</p>
1514 <div class = "codehilite"><pre><code>  FT_EXPORT( <a href="ft2-basic_types.html#ft_error">FT_Error</a> )
1515   <b>FT_Outline_Copy</b>( <span class="keyword">const</span> <a href="ft2-outline_processing.html#ft_outline">FT_Outline</a>*  source,
1516                    <a href="ft2-outline_processing.html#ft_outline">FT_Outline</a>        *target );
1517 </code></pre></div>
1518
1519 <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>
1520 <h4>input</h4>
1521
1522 <table class="fields">
1523 <tr><td class="val" id="source">source</td><td class="desc">
1524 <p>A handle to the source outline.</p>
1525 </td></tr>
1526 </table>
1527
1528 <h4>output</h4>
1529
1530 <table class="fields">
1531 <tr><td class="val" id="target">target</td><td class="desc">
1532 <p>A handle to the target outline.</p>
1533 </td></tr>
1534 </table>
1535
1536 <h4>return</h4>
1537
1538 <p>FreeType error code. 0&nbsp;means success.</p>
1539 <hr>
1540
1541 <h2 id="ft_outline_translate">FT_Outline_Translate<a class="headerlink" href="#ft_outline_translate" title="Permanent link">&para;</a></h2>
1542 <p>Defined in FT_OUTLINE_H (freetype/ftoutln.h).</p>
1543 <div class = "codehilite"><pre><code>  FT_EXPORT( <span class="keyword">void</span> )
1544   <b>FT_Outline_Translate</b>( <span class="keyword">const</span> <a href="ft2-outline_processing.html#ft_outline">FT_Outline</a>*  outline,
1545                         <a href="ft2-basic_types.html#ft_pos">FT_Pos</a>             xOffset,
1546                         <a href="ft2-basic_types.html#ft_pos">FT_Pos</a>             yOffset );
1547 </code></pre></div>
1548
1549 <p>Apply a simple translation to the points of an outline.</p>
1550 <h4>inout</h4>
1551
1552 <table class="fields">
1553 <tr><td class="val" id="outline">outline</td><td class="desc">
1554 <p>A pointer to the target outline descriptor.</p>
1555 </td></tr>
1556 </table>
1557
1558 <h4>input</h4>
1559
1560 <table class="fields">
1561 <tr><td class="val" id="xoffset">xOffset</td><td class="desc">
1562 <p>The horizontal offset.</p>
1563 </td></tr>
1564 <tr><td class="val" id="yoffset">yOffset</td><td class="desc">
1565 <p>The vertical offset.</p>
1566 </td></tr>
1567 </table>
1568
1569 <hr>
1570
1571 <h2 id="ft_outline_transform">FT_Outline_Transform<a class="headerlink" href="#ft_outline_transform" title="Permanent link">&para;</a></h2>
1572 <p>Defined in FT_OUTLINE_H (freetype/ftoutln.h).</p>
1573 <div class = "codehilite"><pre><code>  FT_EXPORT( <span class="keyword">void</span> )
1574   <b>FT_Outline_Transform</b>( <span class="keyword">const</span> <a href="ft2-outline_processing.html#ft_outline">FT_Outline</a>*  outline,
1575                         <span class="keyword">const</span> <a href="ft2-basic_types.html#ft_matrix">FT_Matrix</a>*   matrix );
1576 </code></pre></div>
1577
1578 <p>Apply a simple 2x2 matrix to all of an outline's points. Useful for applying rotations, slanting, flipping, etc.</p>
1579 <h4>inout</h4>
1580
1581 <table class="fields">
1582 <tr><td class="val" id="outline">outline</td><td class="desc">
1583 <p>A pointer to the target outline descriptor.</p>
1584 </td></tr>
1585 </table>
1586
1587 <h4>input</h4>
1588
1589 <table class="fields">
1590 <tr><td class="val" id="matrix">matrix</td><td class="desc">
1591 <p>A pointer to the transformation matrix.</p>
1592 </td></tr>
1593 </table>
1594
1595 <h4>note</h4>
1596
1597 <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>
1598 <hr>
1599
1600 <h2 id="ft_outline_embolden">FT_Outline_Embolden<a class="headerlink" href="#ft_outline_embolden" title="Permanent link">&para;</a></h2>
1601 <p>Defined in FT_OUTLINE_H (freetype/ftoutln.h).</p>
1602 <div class = "codehilite"><pre><code>  FT_EXPORT( <a href="ft2-basic_types.html#ft_error">FT_Error</a> )
1603   <b>FT_Outline_Embolden</b>( <a href="ft2-outline_processing.html#ft_outline">FT_Outline</a>*  outline,
1604                        <a href="ft2-basic_types.html#ft_pos">FT_Pos</a>       strength );
1605 </code></pre></div>
1606
1607 <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>
1608 <p>Negative <code>strength</code> values to reduce the outline thickness are possible also.</p>
1609 <h4>inout</h4>
1610
1611 <table class="fields">
1612 <tr><td class="val" id="outline">outline</td><td class="desc">
1613 <p>A handle to the target outline.</p>
1614 </td></tr>
1615 </table>
1616
1617 <h4>input</h4>
1618
1619 <table class="fields">
1620 <tr><td class="val" id="strength">strength</td><td class="desc">
1621 <p>How strong the glyph is emboldened. Expressed in 26.6 pixel format.</p>
1622 </td></tr>
1623 </table>
1624
1625 <h4>return</h4>
1626
1627 <p>FreeType error code. 0&nbsp;means success.</p>
1628 <h4>note</h4>
1629
1630 <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>
1631 <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>
1632 <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>
1633 <h4>example</h4>
1634
1635 <div class="highlight"><pre><span></span><code>  FT_Load_Glyph( face, index, FT_LOAD_DEFAULT );
1636
1637   if ( face-&gt;glyph-&gt;format == FT_GLYPH_FORMAT_OUTLINE )
1638     FT_Outline_Embolden( &amp;face-&gt;glyph-&gt;outline, strength );
1639 </code></pre></div>
1640
1641 <hr>
1642
1643 <h2 id="ft_outline_emboldenxy">FT_Outline_EmboldenXY<a class="headerlink" href="#ft_outline_emboldenxy" title="Permanent link">&para;</a></h2>
1644 <p>Defined in FT_OUTLINE_H (freetype/ftoutln.h).</p>
1645 <div class = "codehilite"><pre><code>  FT_EXPORT( <a href="ft2-basic_types.html#ft_error">FT_Error</a> )
1646   <b>FT_Outline_EmboldenXY</b>( <a href="ft2-outline_processing.html#ft_outline">FT_Outline</a>*  outline,
1647                          <a href="ft2-basic_types.html#ft_pos">FT_Pos</a>       xstrength,
1648                          <a href="ft2-basic_types.html#ft_pos">FT_Pos</a>       ystrength );
1649 </code></pre></div>
1650
1651 <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>
1652 <h4>since</h4>
1653
1654 <p>2.4.10</p>
1655 <hr>
1656
1657 <h2 id="ft_outline_reverse">FT_Outline_Reverse<a class="headerlink" href="#ft_outline_reverse" title="Permanent link">&para;</a></h2>
1658 <p>Defined in FT_OUTLINE_H (freetype/ftoutln.h).</p>
1659 <div class = "codehilite"><pre><code>  FT_EXPORT( <span class="keyword">void</span> )
1660   <b>FT_Outline_Reverse</b>( <a href="ft2-outline_processing.html#ft_outline">FT_Outline</a>*  outline );
1661 </code></pre></div>
1662
1663 <p>Reverse the drawing direction of an outline. This is used to ensure consistent fill conventions for mirrored glyphs.</p>
1664 <h4>inout</h4>
1665
1666 <table class="fields">
1667 <tr><td class="val" id="outline">outline</td><td class="desc">
1668 <p>A pointer to the target outline descriptor.</p>
1669 </td></tr>
1670 </table>
1671
1672 <h4>note</h4>
1673
1674 <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>
1675 <p>It shouldn't be used by a normal client application, unless it knows what it is doing.</p>
1676 <hr>
1677
1678 <h2 id="ft_outline_check">FT_Outline_Check<a class="headerlink" href="#ft_outline_check" title="Permanent link">&para;</a></h2>
1679 <p>Defined in FT_OUTLINE_H (freetype/ftoutln.h).</p>
1680 <div class = "codehilite"><pre><code>  FT_EXPORT( <a href="ft2-basic_types.html#ft_error">FT_Error</a> )
1681   <b>FT_Outline_Check</b>( <a href="ft2-outline_processing.html#ft_outline">FT_Outline</a>*  outline );
1682 </code></pre></div>
1683
1684 <p>Check the contents of an outline descriptor.</p>
1685 <h4>input</h4>
1686
1687 <table class="fields">
1688 <tr><td class="val" id="outline">outline</td><td class="desc">
1689 <p>A handle to a source outline.</p>
1690 </td></tr>
1691 </table>
1692
1693 <h4>return</h4>
1694
1695 <p>FreeType error code. 0&nbsp;means success.</p>
1696 <h4>note</h4>
1697
1698 <p>An empty outline, or an outline with a single point only is also valid.</p>
1699 <hr>
1700
1701 <h2 id="ft_outline_get_cbox">FT_Outline_Get_CBox<a class="headerlink" href="#ft_outline_get_cbox" title="Permanent link">&para;</a></h2>
1702 <p>Defined in FT_OUTLINE_H (freetype/ftoutln.h).</p>
1703 <div class = "codehilite"><pre><code>  FT_EXPORT( <span class="keyword">void</span> )
1704   <b>FT_Outline_Get_CBox</b>( <span class="keyword">const</span> <a href="ft2-outline_processing.html#ft_outline">FT_Outline</a>*  outline,
1705                        <a href="ft2-basic_types.html#ft_bbox">FT_BBox</a>           *acbox );
1706 </code></pre></div>
1707
1708 <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>
1709 <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>
1710 <h4>input</h4>
1711
1712 <table class="fields">
1713 <tr><td class="val" id="outline">outline</td><td class="desc">
1714 <p>A pointer to the source outline descriptor.</p>
1715 </td></tr>
1716 </table>
1717
1718 <h4>output</h4>
1719
1720 <table class="fields">
1721 <tr><td class="val" id="acbox">acbox</td><td class="desc">
1722 <p>The outline's control box.</p>
1723 </td></tr>
1724 </table>
1725
1726 <h4>note</h4>
1727
1728 <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>
1729 <hr>
1730
1731 <h2 id="ft_outline_get_bbox">FT_Outline_Get_BBox<a class="headerlink" href="#ft_outline_get_bbox" title="Permanent link">&para;</a></h2>
1732 <p>Defined in FT_BBOX_H (freetype/ftbbox.h).</p>
1733 <div class = "codehilite"><pre><code>  FT_EXPORT( <a href="ft2-basic_types.html#ft_error">FT_Error</a> )
1734   <b>FT_Outline_Get_BBox</b>( <a href="ft2-outline_processing.html#ft_outline">FT_Outline</a>*  outline,
1735                        <a href="ft2-basic_types.html#ft_bbox">FT_BBox</a>     *abbox );
1736 </code></pre></div>
1737
1738 <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>
1739 <h4>input</h4>
1740
1741 <table class="fields">
1742 <tr><td class="val" id="outline">outline</td><td class="desc">
1743 <p>A pointer to the source outline.</p>
1744 </td></tr>
1745 </table>
1746
1747 <h4>output</h4>
1748
1749 <table class="fields">
1750 <tr><td class="val" id="abbox">abbox</td><td class="desc">
1751 <p>The outline's exact bounding box.</p>
1752 </td></tr>
1753 </table>
1754
1755 <h4>return</h4>
1756
1757 <p>FreeType error code. 0&nbsp;means success.</p>
1758 <h4>note</h4>
1759
1760 <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>
1761 <hr>
1762
1763 <h2 id="ft_outline_get_bitmap">FT_Outline_Get_Bitmap<a class="headerlink" href="#ft_outline_get_bitmap" 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( <a href="ft2-basic_types.html#ft_error">FT_Error</a> )
1766   <b>FT_Outline_Get_Bitmap</b>( <a href="ft2-base_interface.html#ft_library">FT_Library</a>        library,
1767                          <a href="ft2-outline_processing.html#ft_outline">FT_Outline</a>*       outline,
1768                          <span class="keyword">const</span> <a href="ft2-basic_types.html#ft_bitmap">FT_Bitmap</a>  *abitmap );
1769 </code></pre></div>
1770
1771 <p>Render an outline within a bitmap. The outline's image is simply OR-ed to the target bitmap.</p>
1772 <h4>input</h4>
1773
1774 <table class="fields">
1775 <tr><td class="val" id="library">library</td><td class="desc">
1776 <p>A handle to a FreeType library object.</p>
1777 </td></tr>
1778 <tr><td class="val" id="outline">outline</td><td class="desc">
1779 <p>A pointer to the source outline descriptor.</p>
1780 </td></tr>
1781 </table>
1782
1783 <h4>inout</h4>
1784
1785 <table class="fields">
1786 <tr><td class="val" id="abitmap">abitmap</td><td class="desc">
1787 <p>A pointer to the target bitmap descriptor.</p>
1788 </td></tr>
1789 </table>
1790
1791 <h4>return</h4>
1792
1793 <p>FreeType error code. 0&nbsp;means success.</p>
1794 <h4>note</h4>
1795
1796 <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>
1797 <p>It will use the raster corresponding to the default glyph format.</p>
1798 <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>
1799 <hr>
1800
1801 <h2 id="ft_outline_render">FT_Outline_Render<a class="headerlink" href="#ft_outline_render" title="Permanent link">&para;</a></h2>
1802 <p>Defined in FT_OUTLINE_H (freetype/ftoutln.h).</p>
1803 <div class = "codehilite"><pre><code>  FT_EXPORT( <a href="ft2-basic_types.html#ft_error">FT_Error</a> )
1804   <b>FT_Outline_Render</b>( <a href="ft2-base_interface.html#ft_library">FT_Library</a>         library,
1805                      <a href="ft2-outline_processing.html#ft_outline">FT_Outline</a>*        outline,
1806                      <a href="ft2-raster.html#ft_raster_params">FT_Raster_Params</a>*  params );
1807 </code></pre></div>
1808
1809 <p>Render an outline within a bitmap using the current scan-convert.</p>
1810 <h4>input</h4>
1811
1812 <table class="fields">
1813 <tr><td class="val" id="library">library</td><td class="desc">
1814 <p>A handle to a FreeType library object.</p>
1815 </td></tr>
1816 <tr><td class="val" id="outline">outline</td><td class="desc">
1817 <p>A pointer to the source outline descriptor.</p>
1818 </td></tr>
1819 </table>
1820
1821 <h4>inout</h4>
1822
1823 <table class="fields">
1824 <tr><td class="val" id="params">params</td><td class="desc">
1825 <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>
1826 </td></tr>
1827 </table>
1828
1829 <h4>return</h4>
1830
1831 <p>FreeType error code. 0&nbsp;means success.</p>
1832 <h4>note</h4>
1833
1834 <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>
1835 <hr>
1836
1837 <h2 id="ft_outline_decompose">FT_Outline_Decompose<a class="headerlink" href="#ft_outline_decompose" title="Permanent link">&para;</a></h2>
1838 <p>Defined in FT_OUTLINE_H (freetype/ftoutln.h).</p>
1839 <div class = "codehilite"><pre><code>  FT_EXPORT( <a href="ft2-basic_types.html#ft_error">FT_Error</a> )
1840   <b>FT_Outline_Decompose</b>( <a href="ft2-outline_processing.html#ft_outline">FT_Outline</a>*              outline,
1841                         <span class="keyword">const</span> <a href="ft2-outline_processing.html#ft_outline_funcs">FT_Outline_Funcs</a>*  func_interface,
1842                         <span class="keyword">void</span>*                    user );
1843 </code></pre></div>
1844
1845 <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>
1846 <h4>input</h4>
1847
1848 <table class="fields">
1849 <tr><td class="val" id="outline">outline</td><td class="desc">
1850 <p>A pointer to the source target.</p>
1851 </td></tr>
1852 <tr><td class="val" id="func_interface">func_interface</td><td class="desc">
1853 <p>A table of &lsquo;emitters&rsquo;, i.e., function pointers called during decomposition to indicate path operations.</p>
1854 </td></tr>
1855 </table>
1856
1857 <h4>inout</h4>
1858
1859 <table class="fields">
1860 <tr><td class="val" id="user">user</td><td class="desc">
1861 <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>
1862 </td></tr>
1863 </table>
1864
1865 <h4>return</h4>
1866
1867 <p>FreeType error code. 0&nbsp;means success.</p>
1868 <h4>note</h4>
1869
1870 <p>A contour that contains a single point only is represented by a &lsquo;move to&rsquo; operation followed by &lsquo;line to&rsquo; to the same point. In most cases, it is best to filter this out before using the outline for stroking purposes (otherwise it would result in a visible dot when round caps are used).</p>
1871 <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>
1872 <hr>
1873
1874 <h2 id="ft_outline_funcs">FT_Outline_Funcs<a class="headerlink" href="#ft_outline_funcs" title="Permanent link">&para;</a></h2>
1875 <p>Defined in FT_IMAGE_H (freetype/ftimage.h).</p>
1876 <div class = "codehilite"><pre><code>  <span class="keyword">typedef</span> <span class="keyword">struct</span>  FT_Outline_Funcs_
1877   {
1878     <a href="ft2-outline_processing.html#ft_outline_movetofunc">FT_Outline_MoveToFunc</a>   move_to;
1879     <a href="ft2-outline_processing.html#ft_outline_linetofunc">FT_Outline_LineToFunc</a>   line_to;
1880     <a href="ft2-outline_processing.html#ft_outline_conictofunc">FT_Outline_ConicToFunc</a>  conic_to;
1881     <a href="ft2-outline_processing.html#ft_outline_cubictofunc">FT_Outline_CubicToFunc</a>  cubic_to;
1882
1883     <span class="keyword">int</span>                     shift;
1884     <a href="ft2-basic_types.html#ft_pos">FT_Pos</a>                  delta;
1885
1886   } <b>FT_Outline_Funcs</b>;
1887 </code></pre></div>
1888
1889 <p>A structure to hold various function pointers used during outline decomposition in order to emit segments, conic, and cubic Beziers.</p>
1890 <h4>fields</h4>
1891
1892 <table class="fields">
1893 <tr><td class="val" id="move_to">move_to</td><td class="desc">
1894 <p>The &lsquo;move to&rsquo; emitter.</p>
1895 </td></tr>
1896 <tr><td class="val" id="line_to">line_to</td><td class="desc">
1897 <p>The segment emitter.</p>
1898 </td></tr>
1899 <tr><td class="val" id="conic_to">conic_to</td><td class="desc">
1900 <p>The second-order Bezier arc emitter.</p>
1901 </td></tr>
1902 <tr><td class="val" id="cubic_to">cubic_to</td><td class="desc">
1903 <p>The third-order Bezier arc emitter.</p>
1904 </td></tr>
1905 <tr><td class="val" id="shift">shift</td><td class="desc">
1906 <p>The shift that is applied to coordinates before they are sent to the emitter.</p>
1907 </td></tr>
1908 <tr><td class="val" id="delta">delta</td><td class="desc">
1909 <p>The delta that is applied to coordinates before they are sent to the emitter, but after the shift.</p>
1910 </td></tr>
1911 </table>
1912
1913 <h4>note</h4>
1914
1915 <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:
1916 <div class="highlight"><pre><span></span><code>  x&#39; = (x &lt;&lt; shift) - delta
1917   y&#39; = (y &lt;&lt; shift) - delta
1918 </code></pre></div></p>
1919 <p>Set the values of <code>shift</code> and <code>delta</code> to&nbsp;0 to get the original point coordinates.</p>
1920 <hr>
1921
1922 <h2 id="ft_outline_movetofunc">FT_Outline_MoveToFunc<a class="headerlink" href="#ft_outline_movetofunc" title="Permanent link">&para;</a></h2>
1923 <p>Defined in FT_IMAGE_H (freetype/ftimage.h).</p>
1924 <div class = "codehilite"><pre><code>  <span class="keyword">typedef</span> <span class="keyword">int</span>
1925   (*<b>FT_Outline_MoveToFunc</b>)( <span class="keyword">const</span> <a href="ft2-basic_types.html#ft_vector">FT_Vector</a>*  to,
1926                             <span class="keyword">void</span>*             user );
1927
1928 #<span class="keyword">define</span> FT_Outline_MoveTo_Func  <b>FT_Outline_MoveToFunc</b>
1929 </code></pre></div>
1930
1931 <p>A function pointer type used to describe the signature of a &lsquo;move to&rsquo; function during outline walking/decomposition.</p>
1932 <p>A &lsquo;move to&rsquo; is emitted to start a new contour in an outline.</p>
1933 <h4>input</h4>
1934
1935 <table class="fields">
1936 <tr><td class="val" id="to">to</td><td class="desc">
1937 <p>A pointer to the target point of the &lsquo;move to&rsquo;.</p>
1938 </td></tr>
1939 <tr><td class="val" id="user">user</td><td class="desc">
1940 <p>A typeless pointer, which is passed from the caller of the decomposition function.</p>
1941 </td></tr>
1942 </table>
1943
1944 <h4>return</h4>
1945
1946 <p>Error code. 0&nbsp;means success.</p>
1947 <hr>
1948
1949 <h2 id="ft_outline_linetofunc">FT_Outline_LineToFunc<a class="headerlink" href="#ft_outline_linetofunc" title="Permanent link">&para;</a></h2>
1950 <p>Defined in FT_IMAGE_H (freetype/ftimage.h).</p>
1951 <div class = "codehilite"><pre><code>  <span class="keyword">typedef</span> <span class="keyword">int</span>
1952   (*<b>FT_Outline_LineToFunc</b>)( <span class="keyword">const</span> <a href="ft2-basic_types.html#ft_vector">FT_Vector</a>*  to,
1953                             <span class="keyword">void</span>*             user );
1954
1955 #<span class="keyword">define</span> FT_Outline_LineTo_Func  <b>FT_Outline_LineToFunc</b>
1956 </code></pre></div>
1957
1958 <p>A function pointer type used to describe the signature of a &lsquo;line to&rsquo; function during outline walking/decomposition.</p>
1959 <p>A &lsquo;line to&rsquo; is emitted to indicate a segment in the outline.</p>
1960 <h4>input</h4>
1961
1962 <table class="fields">
1963 <tr><td class="val" id="to">to</td><td class="desc">
1964 <p>A pointer to the target point of the &lsquo;line to&rsquo;.</p>
1965 </td></tr>
1966 <tr><td class="val" id="user">user</td><td class="desc">
1967 <p>A typeless pointer, which is passed from the caller of the decomposition function.</p>
1968 </td></tr>
1969 </table>
1970
1971 <h4>return</h4>
1972
1973 <p>Error code. 0&nbsp;means success.</p>
1974 <hr>
1975
1976 <h2 id="ft_outline_conictofunc">FT_Outline_ConicToFunc<a class="headerlink" href="#ft_outline_conictofunc" title="Permanent link">&para;</a></h2>
1977 <p>Defined in FT_IMAGE_H (freetype/ftimage.h).</p>
1978 <div class = "codehilite"><pre><code>  <span class="keyword">typedef</span> <span class="keyword">int</span>
1979   (*<b>FT_Outline_ConicToFunc</b>)( <span class="keyword">const</span> <a href="ft2-basic_types.html#ft_vector">FT_Vector</a>*  control,
1980                              <span class="keyword">const</span> <a href="ft2-basic_types.html#ft_vector">FT_Vector</a>*  to,
1981                              <span class="keyword">void</span>*             user );
1982
1983 #<span class="keyword">define</span> FT_Outline_ConicTo_Func  <b>FT_Outline_ConicToFunc</b>
1984 </code></pre></div>
1985
1986 <p>A function pointer type used to describe the signature of a &lsquo;conic to&rsquo; function during outline walking or decomposition.</p>
1987 <p>A &lsquo;conic to&rsquo; is emitted to indicate a second-order Bezier arc in the outline.</p>
1988 <h4>input</h4>
1989
1990 <table class="fields">
1991 <tr><td class="val" id="control">control</td><td class="desc">
1992 <p>An intermediate control point between the last position and the new target in <code>to</code>.</p>
1993 </td></tr>
1994 <tr><td class="val" id="to">to</td><td class="desc">
1995 <p>A pointer to the target end point of the conic arc.</p>
1996 </td></tr>
1997 <tr><td class="val" id="user">user</td><td class="desc">
1998 <p>A typeless pointer, which is passed from the caller of the decomposition function.</p>
1999 </td></tr>
2000 </table>
2001
2002 <h4>return</h4>
2003
2004 <p>Error code. 0&nbsp;means success.</p>
2005 <hr>
2006
2007 <h2 id="ft_outline_cubictofunc">FT_Outline_CubicToFunc<a class="headerlink" href="#ft_outline_cubictofunc" title="Permanent link">&para;</a></h2>
2008 <p>Defined in FT_IMAGE_H (freetype/ftimage.h).</p>
2009 <div class = "codehilite"><pre><code>  <span class="keyword">typedef</span> <span class="keyword">int</span>
2010   (*<b>FT_Outline_CubicToFunc</b>)( <span class="keyword">const</span> <a href="ft2-basic_types.html#ft_vector">FT_Vector</a>*  control1,
2011                              <span class="keyword">const</span> <a href="ft2-basic_types.html#ft_vector">FT_Vector</a>*  control2,
2012                              <span class="keyword">const</span> <a href="ft2-basic_types.html#ft_vector">FT_Vector</a>*  to,
2013                              <span class="keyword">void</span>*             user );
2014
2015 #<span class="keyword">define</span> FT_Outline_CubicTo_Func  <b>FT_Outline_CubicToFunc</b>
2016 </code></pre></div>
2017
2018 <p>A function pointer type used to describe the signature of a &lsquo;cubic to&rsquo; function during outline walking or decomposition.</p>
2019 <p>A &lsquo;cubic to&rsquo; is emitted to indicate a third-order Bezier arc.</p>
2020 <h4>input</h4>
2021
2022 <table class="fields">
2023 <tr><td class="val" id="control1">control1</td><td class="desc">
2024 <p>A pointer to the first Bezier control point.</p>
2025 </td></tr>
2026 <tr><td class="val" id="control2">control2</td><td class="desc">
2027 <p>A pointer to the second Bezier control point.</p>
2028 </td></tr>
2029 <tr><td class="val" id="to">to</td><td class="desc">
2030 <p>A pointer to the target end point.</p>
2031 </td></tr>
2032 <tr><td class="val" id="user">user</td><td class="desc">
2033 <p>A typeless pointer, which is passed from the caller of the decomposition function.</p>
2034 </td></tr>
2035 </table>
2036
2037 <h4>return</h4>
2038
2039 <p>Error code. 0&nbsp;means success.</p>
2040 <hr>
2041
2042 <h2 id="ft_orientation">FT_Orientation<a class="headerlink" href="#ft_orientation" title="Permanent link">&para;</a></h2>
2043 <p>Defined in FT_OUTLINE_H (freetype/ftoutln.h).</p>
2044 <div class = "codehilite"><pre><code>  <span class="keyword">typedef</span> <span class="keyword">enum</span>  FT_Orientation_
2045   {
2046     <a href="ft2-outline_processing.html#ft_orientation_truetype">FT_ORIENTATION_TRUETYPE</a>   = 0,
2047     <a href="ft2-outline_processing.html#ft_orientation_postscript">FT_ORIENTATION_POSTSCRIPT</a> = 1,
2048     <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>,
2049     <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>,
2050     <a href="ft2-outline_processing.html#ft_orientation_none">FT_ORIENTATION_NONE</a>
2051
2052   } <b>FT_Orientation</b>;
2053 </code></pre></div>
2054
2055 <p>A list of values used to describe an outline's contour orientation.</p>
2056 <p>The TrueType and PostScript specifications use different conventions to determine whether outline contours should be filled or unfilled.</p>
2057 <h4>values</h4>
2058
2059 <table class="fields">
2060 <tr><td class="val" id="ft_orientation_truetype">FT_ORIENTATION_TRUETYPE</td><td class="desc">
2061 <p>According to the TrueType specification, clockwise contours must be filled, and counter-clockwise ones must be unfilled.</p>
2062 </td></tr>
2063 <tr><td class="val" id="ft_orientation_postscript">FT_ORIENTATION_POSTSCRIPT</td><td class="desc">
2064 <p>According to the PostScript specification, counter-clockwise contours must be filled, and clockwise ones must be unfilled.</p>
2065 </td></tr>
2066 <tr><td class="val" id="ft_orientation_fill_right">FT_ORIENTATION_FILL_RIGHT</td><td class="desc">
2067 <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>
2068 </td></tr>
2069 <tr><td class="val" id="ft_orientation_fill_left">FT_ORIENTATION_FILL_LEFT</td><td class="desc">
2070 <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>
2071 </td></tr>
2072 <tr><td class="val" id="ft_orientation_none">FT_ORIENTATION_NONE</td><td class="desc">
2073 <p>The orientation cannot be determined. That is, different parts of the glyph have different orientation.</p>
2074 </td></tr>
2075 </table>
2076
2077 <hr>
2078
2079 <h2 id="ft_outline_get_orientation">FT_Outline_Get_Orientation<a class="headerlink" href="#ft_outline_get_orientation" title="Permanent link">&para;</a></h2>
2080 <p>Defined in FT_OUTLINE_H (freetype/ftoutln.h).</p>
2081 <div class = "codehilite"><pre><code>  FT_EXPORT( <a href="ft2-outline_processing.html#ft_orientation">FT_Orientation</a> )
2082   <b>FT_Outline_Get_Orientation</b>( <a href="ft2-outline_processing.html#ft_outline">FT_Outline</a>*  outline );
2083 </code></pre></div>
2084
2085 <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>
2086 <p>Note that this will return <code><a href="ft2-outline_processing.html#ft_orientation">FT_ORIENTATION_TRUETYPE</a></code> for empty outlines.</p>
2087 <h4>input</h4>
2088
2089 <table class="fields">
2090 <tr><td class="val" id="outline">outline</td><td class="desc">
2091 <p>A handle to the source outline.</p>
2092 </td></tr>
2093 </table>
2094
2095 <h4>return</h4>
2096
2097 <p>The orientation.</p>
2098 <hr>
2099
2100 <h2 id="ft_outline_xxx">FT_OUTLINE_XXX<a class="headerlink" href="#ft_outline_xxx" title="Permanent link">&para;</a></h2>
2101 <p>Defined in FT_IMAGE_H (freetype/ftimage.h).</p>
2102 <div class = "codehilite"><pre><code>#<span class="keyword">define</span> <a href="ft2-outline_processing.html#ft_outline_none">FT_OUTLINE_NONE</a>             0x0
2103 #<span class="keyword">define</span> <a href="ft2-outline_processing.html#ft_outline_owner">FT_OUTLINE_OWNER</a>            0x1
2104 #<span class="keyword">define</span> <a href="ft2-outline_processing.html#ft_outline_even_odd_fill">FT_OUTLINE_EVEN_ODD_FILL</a>    0x2
2105 #<span class="keyword">define</span> <a href="ft2-outline_processing.html#ft_outline_reverse_fill">FT_OUTLINE_REVERSE_FILL</a>     0x4
2106 #<span class="keyword">define</span> <a href="ft2-outline_processing.html#ft_outline_ignore_dropouts">FT_OUTLINE_IGNORE_DROPOUTS</a>  0x8
2107 #<span class="keyword">define</span> <a href="ft2-outline_processing.html#ft_outline_smart_dropouts">FT_OUTLINE_SMART_DROPOUTS</a>   0x10
2108 #<span class="keyword">define</span> <a href="ft2-outline_processing.html#ft_outline_include_stubs">FT_OUTLINE_INCLUDE_STUBS</a>    0x20
2109 #<span class="keyword">define</span> <a href="ft2-outline_processing.html#ft_outline_overlap">FT_OUTLINE_OVERLAP</a>          0x40
2110
2111 #<span class="keyword">define</span> <a href="ft2-outline_processing.html#ft_outline_high_precision">FT_OUTLINE_HIGH_PRECISION</a>   0x100
2112 #<span class="keyword">define</span> <a href="ft2-outline_processing.html#ft_outline_single_pass">FT_OUTLINE_SINGLE_PASS</a>      0x200
2113
2114
2115   /* these constants are deprecated; use the corresponding */
2116   /* `<b>FT_OUTLINE_XXX</b>` values instead                       */
2117 #<span class="keyword">define</span> ft_outline_none             <a href="ft2-outline_processing.html#ft_outline_none">FT_OUTLINE_NONE</a>
2118 #<span class="keyword">define</span> ft_outline_owner            <a href="ft2-outline_processing.html#ft_outline_owner">FT_OUTLINE_OWNER</a>
2119 #<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>
2120 #<span class="keyword">define</span> ft_outline_reverse_fill     <a href="ft2-outline_processing.html#ft_outline_reverse_fill">FT_OUTLINE_REVERSE_FILL</a>
2121 #<span class="keyword">define</span> ft_outline_ignore_dropouts  <a href="ft2-outline_processing.html#ft_outline_ignore_dropouts">FT_OUTLINE_IGNORE_DROPOUTS</a>
2122 #<span class="keyword">define</span> ft_outline_high_precision   <a href="ft2-outline_processing.html#ft_outline_high_precision">FT_OUTLINE_HIGH_PRECISION</a>
2123 #<span class="keyword">define</span> ft_outline_single_pass      <a href="ft2-outline_processing.html#ft_outline_single_pass">FT_OUTLINE_SINGLE_PASS</a>
2124 </code></pre></div>
2125
2126 <p>A list of bit-field constants used for the flags in an outline's <code>flags</code> field.</p>
2127 <h4>values</h4>
2128
2129 <table class="fields long">
2130 <tr><td class="val" id="ft_outline_none">FT_OUTLINE_NONE</td><td class="desc">
2131 <p>Value&nbsp;0 is reserved.</p>
2132 </td></tr>
2133 <tr><td class="val" id="ft_outline_owner">FT_OUTLINE_OWNER</td><td class="desc">
2134 <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>
2135 </td></tr>
2136 <tr><td class="val" id="ft_outline_even_odd_fill">FT_OUTLINE_EVEN_ODD_FILL</td><td class="desc">
2137 <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>
2138 </td></tr>
2139 <tr><td class="val" id="ft_outline_reverse_fill">FT_OUTLINE_REVERSE_FILL</td><td class="desc">
2140 <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>
2141 </td></tr>
2142 <tr><td class="val" id="ft_outline_ignore_dropouts">FT_OUTLINE_IGNORE_DROPOUTS</td><td class="desc">
2143 <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>
2144 </td></tr>
2145 <tr><td class="val" id="ft_outline_smart_dropouts">FT_OUTLINE_SMART_DROPOUTS</td><td class="desc">
2146 <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>
2147 </td></tr>
2148 <tr><td class="val" id="ft_outline_include_stubs">FT_OUTLINE_INCLUDE_STUBS</td><td class="desc">
2149 <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>
2150 </td></tr>
2151 <tr><td class="val" id="ft_outline_overlap">FT_OUTLINE_OVERLAP</td><td class="desc">
2152 <p>This flag indicates that this outline contains overlapping contrours 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>
2153 </td></tr>
2154 <tr><td class="val" id="ft_outline_high_precision">FT_OUTLINE_HIGH_PRECISION</td><td class="desc">
2155 <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>
2156 </td></tr>
2157 <tr><td class="val" id="ft_outline_single_pass">FT_OUTLINE_SINGLE_PASS</td><td class="desc">
2158 <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>
2159 </td></tr>
2160 </table>
2161
2162 <h4>note</h4>
2163
2164 <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>
2165 <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>
2166 <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>
2167 <hr>
2168                 
2169                   
2170                 
2171                 
2172               
2173               
2174                 
2175
2176
2177               
2178             </article>
2179           </div>
2180         </div>
2181       </main>
2182       
2183         
2184 <footer class="md-footer">
2185   
2186     <div class="md-footer-nav">
2187       <nav class="md-footer-nav__inner md-grid">
2188         
2189           <a href="ft2-list_processing.html" title="List Processing" class="md-flex md-footer-nav__link md-footer-nav__link--prev" rel="prev">
2190             <div class="md-flex__cell md-flex__cell--shrink">
2191               <i class="md-icon md-icon--arrow-back md-footer-nav__button"></i>
2192             </div>
2193             <div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title">
2194               <span class="md-flex__ellipsis">
2195                 <span class="md-footer-nav__direction">
2196                   Previous
2197                 </span>
2198                 List Processing
2199               </span>
2200             </div>
2201           </a>
2202         
2203         
2204           <a href="ft2-quick_advance.html" title="Quick retrieval of advance values" class="md-flex md-footer-nav__link md-footer-nav__link--next" rel="next">
2205             <div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title">
2206               <span class="md-flex__ellipsis">
2207                 <span class="md-footer-nav__direction">
2208                   Next
2209                 </span>
2210                 Quick retrieval of advance values
2211               </span>
2212             </div>
2213             <div class="md-flex__cell md-flex__cell--shrink">
2214               <i class="md-icon md-icon--arrow-forward md-footer-nav__button"></i>
2215             </div>
2216           </a>
2217         
2218       </nav>
2219     </div>
2220   
2221   <div class="md-footer-meta md-typeset">
2222     <div class="md-footer-meta__inner md-grid">
2223       <div class="md-footer-copyright">
2224         
2225           <div class="md-footer-copyright__highlight">
2226             Copyright 2020 <a href = "https://www.freetype.org/license.html">The FreeType Project</a>.
2227           </div>
2228         
2229         powered by
2230         <a href="https://www.mkdocs.org" target="_blank" rel="noopener">MkDocs</a>
2231         and
2232         <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
2233           Material for MkDocs</a>
2234       </div>
2235       
2236     </div>
2237   </div>
2238 </footer>
2239       
2240     </div>
2241     
2242       <script src="assets/javascripts/application.c33a9706.js"></script>
2243       
2244       <script>app.initialize({version:"1.1",url:{base:"."}})</script>
2245       
2246         <script src="javascripts/extra.js"></script>
2247       
2248     
2249   </body>
2250 </html>