27a4a0f3b21cbec7fa4701429a7dbd6356eaa3ba
[platform/upstream/freetype2.git] / docs / reference / ft2-system_interface.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>System Interface - 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="#system-interface" 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                 System Interface
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   <li class="md-nav__item">
748     <a href="ft2-outline_processing.html" title="Outline Processing" class="md-nav__link">
749       Outline Processing
750     </a>
751   </li>
752
753         
754           
755           
756           
757
758
759   <li class="md-nav__item">
760     <a href="ft2-quick_advance.html" title="Quick retrieval of advance values" class="md-nav__link">
761       Quick retrieval of advance values
762     </a>
763   </li>
764
765         
766           
767           
768           
769
770
771   <li class="md-nav__item">
772     <a href="ft2-bitmap_handling.html" title="Bitmap Handling" class="md-nav__link">
773       Bitmap Handling
774     </a>
775   </li>
776
777         
778           
779           
780           
781
782
783   <li class="md-nav__item">
784     <a href="ft2-raster.html" title="Scanline Converter" class="md-nav__link">
785       Scanline Converter
786     </a>
787   </li>
788
789         
790           
791           
792           
793
794
795   <li class="md-nav__item">
796     <a href="ft2-glyph_stroker.html" title="Glyph Stroker" class="md-nav__link">
797       Glyph Stroker
798     </a>
799   </li>
800
801         
802           
803           
804           
805
806   
807
808
809   <li class="md-nav__item md-nav__item--active">
810     
811     <input class="md-toggle md-nav__toggle" data-md-toggle="toc" type="checkbox" id="__toc">
812     
813       
814     
815     
816       <label class="md-nav__link md-nav__link--active" for="__toc">
817         System Interface
818       </label>
819     
820     <a href="ft2-system_interface.html" title="System Interface" class="md-nav__link md-nav__link--active">
821       System Interface
822     </a>
823     
824       
825 <nav class="md-nav md-nav--secondary">
826   
827   
828     
829   
830   
831     <label class="md-nav__title" for="__toc">Table of contents</label>
832     <ul class="md-nav__list" data-md-scrollfix>
833       
834         <li class="md-nav__item">
835   <a href="#synopsis" class="md-nav__link">
836     Synopsis
837   </a>
838   
839 </li>
840       
841         <li class="md-nav__item">
842   <a href="#ft_memory" class="md-nav__link">
843     FT_Memory
844   </a>
845   
846 </li>
847       
848         <li class="md-nav__item">
849   <a href="#ft_alloc_func" class="md-nav__link">
850     FT_Alloc_Func
851   </a>
852   
853 </li>
854       
855         <li class="md-nav__item">
856   <a href="#ft_free_func" class="md-nav__link">
857     FT_Free_Func
858   </a>
859   
860 </li>
861       
862         <li class="md-nav__item">
863   <a href="#ft_realloc_func" class="md-nav__link">
864     FT_Realloc_Func
865   </a>
866   
867 </li>
868       
869         <li class="md-nav__item">
870   <a href="#ft_memoryrec" class="md-nav__link">
871     FT_MemoryRec
872   </a>
873   
874 </li>
875       
876         <li class="md-nav__item">
877   <a href="#ft_stream" class="md-nav__link">
878     FT_Stream
879   </a>
880   
881 </li>
882       
883         <li class="md-nav__item">
884   <a href="#ft_streamdesc" class="md-nav__link">
885     FT_StreamDesc
886   </a>
887   
888 </li>
889       
890         <li class="md-nav__item">
891   <a href="#ft_stream_iofunc" class="md-nav__link">
892     FT_Stream_IoFunc
893   </a>
894   
895 </li>
896       
897         <li class="md-nav__item">
898   <a href="#ft_stream_closefunc" class="md-nav__link">
899     FT_Stream_CloseFunc
900   </a>
901   
902 </li>
903       
904         <li class="md-nav__item">
905   <a href="#ft_streamrec" class="md-nav__link">
906     FT_StreamRec
907   </a>
908   
909 </li>
910       
911       
912       
913       
914       
915     </ul>
916   
917 </nav>
918     
919   </li>
920
921         
922           
923           
924           
925
926
927   <li class="md-nav__item">
928     <a href="ft2-module_management.html" title="Module Management" class="md-nav__link">
929       Module Management
930     </a>
931   </li>
932
933         
934           
935           
936           
937
938
939   <li class="md-nav__item">
940     <a href="ft2-gzip.html" title="GZIP Streams" class="md-nav__link">
941       GZIP Streams
942     </a>
943   </li>
944
945         
946           
947           
948           
949
950
951   <li class="md-nav__item">
952     <a href="ft2-lzw.html" title="LZW Streams" class="md-nav__link">
953       LZW Streams
954     </a>
955   </li>
956
957         
958           
959           
960           
961
962
963   <li class="md-nav__item">
964     <a href="ft2-bzip2.html" title="BZIP2 Streams" class="md-nav__link">
965       BZIP2 Streams
966     </a>
967   </li>
968
969         
970       </ul>
971     </nav>
972   </li>
973
974     
975       
976       
977       
978
979
980   <li class="md-nav__item md-nav__item--nested">
981     
982       <input class="md-toggle md-nav__toggle" data-md-toggle="nav-9" type="checkbox" id="nav-9">
983     
984     <label class="md-nav__link" for="nav-9">
985       Error Codes
986     </label>
987     <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
988       <label class="md-nav__title" for="nav-9">
989         Error Codes
990       </label>
991       <ul class="md-nav__list" data-md-scrollfix>
992         
993         
994           
995           
996           
997
998
999   <li class="md-nav__item">
1000     <a href="ft2-error_enumerations.html" title="Error Enumerations" class="md-nav__link">
1001       Error Enumerations
1002     </a>
1003   </li>
1004
1005         
1006           
1007           
1008           
1009
1010
1011   <li class="md-nav__item">
1012     <a href="ft2-error_code_values.html" title="Error Code Values" class="md-nav__link">
1013       Error Code Values
1014     </a>
1015   </li>
1016
1017         
1018       </ul>
1019     </nav>
1020   </li>
1021
1022     
1023       
1024       
1025       
1026
1027
1028   <li class="md-nav__item md-nav__item--nested">
1029     
1030       <input class="md-toggle md-nav__toggle" data-md-toggle="nav-10" type="checkbox" id="nav-10">
1031     
1032     <label class="md-nav__link" for="nav-10">
1033       Miscellaneous
1034     </label>
1035     <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
1036       <label class="md-nav__title" for="nav-10">
1037         Miscellaneous
1038       </label>
1039       <ul class="md-nav__list" data-md-scrollfix>
1040         
1041         
1042           
1043           
1044           
1045
1046
1047   <li class="md-nav__item">
1048     <a href="ft2-gx_validation.html" title="TrueTypeGX/AAT Validation" class="md-nav__link">
1049       TrueTypeGX/AAT Validation
1050     </a>
1051   </li>
1052
1053         
1054           
1055           
1056           
1057
1058
1059   <li class="md-nav__item">
1060     <a href="ft2-incremental.html" title="Incremental Loading" class="md-nav__link">
1061       Incremental Loading
1062     </a>
1063   </li>
1064
1065         
1066           
1067           
1068           
1069
1070
1071   <li class="md-nav__item">
1072     <a href="ft2-truetype_engine.html" title="The TrueType Engine" class="md-nav__link">
1073       The TrueType Engine
1074     </a>
1075   </li>
1076
1077         
1078           
1079           
1080           
1081
1082
1083   <li class="md-nav__item">
1084     <a href="ft2-ot_validation.html" title="OpenType Validation" class="md-nav__link">
1085       OpenType Validation
1086     </a>
1087   </li>
1088
1089         
1090       </ul>
1091     </nav>
1092   </li>
1093
1094     
1095   </ul>
1096 </nav>
1097                   </div>
1098                 </div>
1099               </div>
1100             
1101             
1102               <div class="md-sidebar md-sidebar--secondary" data-md-component="toc">
1103                 <div class="md-sidebar__scrollwrap">
1104                   <div class="md-sidebar__inner">
1105                     
1106 <nav class="md-nav md-nav--secondary">
1107   
1108   
1109     
1110   
1111   
1112     <label class="md-nav__title" for="__toc">Table of contents</label>
1113     <ul class="md-nav__list" data-md-scrollfix>
1114       
1115         <li class="md-nav__item">
1116   <a href="#synopsis" class="md-nav__link">
1117     Synopsis
1118   </a>
1119   
1120 </li>
1121       
1122         <li class="md-nav__item">
1123   <a href="#ft_memory" class="md-nav__link">
1124     FT_Memory
1125   </a>
1126   
1127 </li>
1128       
1129         <li class="md-nav__item">
1130   <a href="#ft_alloc_func" class="md-nav__link">
1131     FT_Alloc_Func
1132   </a>
1133   
1134 </li>
1135       
1136         <li class="md-nav__item">
1137   <a href="#ft_free_func" class="md-nav__link">
1138     FT_Free_Func
1139   </a>
1140   
1141 </li>
1142       
1143         <li class="md-nav__item">
1144   <a href="#ft_realloc_func" class="md-nav__link">
1145     FT_Realloc_Func
1146   </a>
1147   
1148 </li>
1149       
1150         <li class="md-nav__item">
1151   <a href="#ft_memoryrec" class="md-nav__link">
1152     FT_MemoryRec
1153   </a>
1154   
1155 </li>
1156       
1157         <li class="md-nav__item">
1158   <a href="#ft_stream" class="md-nav__link">
1159     FT_Stream
1160   </a>
1161   
1162 </li>
1163       
1164         <li class="md-nav__item">
1165   <a href="#ft_streamdesc" class="md-nav__link">
1166     FT_StreamDesc
1167   </a>
1168   
1169 </li>
1170       
1171         <li class="md-nav__item">
1172   <a href="#ft_stream_iofunc" class="md-nav__link">
1173     FT_Stream_IoFunc
1174   </a>
1175   
1176 </li>
1177       
1178         <li class="md-nav__item">
1179   <a href="#ft_stream_closefunc" class="md-nav__link">
1180     FT_Stream_CloseFunc
1181   </a>
1182   
1183 </li>
1184       
1185         <li class="md-nav__item">
1186   <a href="#ft_streamrec" class="md-nav__link">
1187     FT_StreamRec
1188   </a>
1189   
1190 </li>
1191       
1192       
1193       
1194       
1195       
1196     </ul>
1197   
1198 </nav>
1199                   </div>
1200                 </div>
1201               </div>
1202             
1203           
1204           <div class="md-content">
1205             <article class="md-content__inner md-typeset">
1206               
1207                 
1208                 
1209                 <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; System Interface</p>
1210 <hr />
1211 <h1 id="system-interface">System Interface<a class="headerlink" href="#system-interface" title="Permanent link">&para;</a></h1>
1212 <h2 id="synopsis">Synopsis<a class="headerlink" href="#synopsis" title="Permanent link">&para;</a></h2>
1213 <p>This section contains various definitions related to memory management and i/o access. You need to understand this information if you want to use a custom memory manager or you own i/o streams.</p>
1214 <h2 id="ft_memory">FT_Memory<a class="headerlink" href="#ft_memory" title="Permanent link">&para;</a></h2>
1215 <p>Defined in FT_SYSTEM_H (freetype/ftsystem.h).</p>
1216 <div class = "codehilite"><pre><code>  <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_MemoryRec_*  <b>FT_Memory</b>;
1217 </code></pre></div>
1218
1219 <p>A handle to a given memory manager object, defined with an <code><a href="ft2-system_interface.html#ft_memoryrec">FT_MemoryRec</a></code> structure.</p>
1220 <hr>
1221
1222 <h2 id="ft_alloc_func">FT_Alloc_Func<a class="headerlink" href="#ft_alloc_func" title="Permanent link">&para;</a></h2>
1223 <p>Defined in FT_SYSTEM_H (freetype/ftsystem.h).</p>
1224 <div class = "codehilite"><pre><code>  <span class="keyword">typedef</span> <span class="keyword">void</span>*
1225   (*<b>FT_Alloc_Func</b>)( <a href="ft2-system_interface.html#ft_memory">FT_Memory</a>  memory,
1226                     <span class="keyword">long</span>       size );
1227 </code></pre></div>
1228
1229 <p>A function used to allocate <code>size</code> bytes from <code>memory</code>.</p>
1230 <h4>input</h4>
1231
1232 <table class="fields">
1233 <tr><td class="val" id="memory">memory</td><td class="desc">
1234 <p>A handle to the source memory manager.</p>
1235 </td></tr>
1236 <tr><td class="val" id="size">size</td><td class="desc">
1237 <p>The size in bytes to allocate.</p>
1238 </td></tr>
1239 </table>
1240
1241 <h4>return</h4>
1242
1243 <p>Address of new memory block. 0&nbsp;in case of failure.</p>
1244 <hr>
1245
1246 <h2 id="ft_free_func">FT_Free_Func<a class="headerlink" href="#ft_free_func" title="Permanent link">&para;</a></h2>
1247 <p>Defined in FT_SYSTEM_H (freetype/ftsystem.h).</p>
1248 <div class = "codehilite"><pre><code>  <span class="keyword">typedef</span> <span class="keyword">void</span>
1249   (*<b>FT_Free_Func</b>)( <a href="ft2-system_interface.html#ft_memory">FT_Memory</a>  memory,
1250                    <span class="keyword">void</span>*      block );
1251 </code></pre></div>
1252
1253 <p>A function used to release a given block of memory.</p>
1254 <h4>input</h4>
1255
1256 <table class="fields">
1257 <tr><td class="val" id="memory">memory</td><td class="desc">
1258 <p>A handle to the source memory manager.</p>
1259 </td></tr>
1260 <tr><td class="val" id="block">block</td><td class="desc">
1261 <p>The address of the target memory block.</p>
1262 </td></tr>
1263 </table>
1264
1265 <hr>
1266
1267 <h2 id="ft_realloc_func">FT_Realloc_Func<a class="headerlink" href="#ft_realloc_func" title="Permanent link">&para;</a></h2>
1268 <p>Defined in FT_SYSTEM_H (freetype/ftsystem.h).</p>
1269 <div class = "codehilite"><pre><code>  <span class="keyword">typedef</span> <span class="keyword">void</span>*
1270   (*<b>FT_Realloc_Func</b>)( <a href="ft2-system_interface.html#ft_memory">FT_Memory</a>  memory,
1271                       <span class="keyword">long</span>       cur_size,
1272                       <span class="keyword">long</span>       new_size,
1273                       <span class="keyword">void</span>*      block );
1274 </code></pre></div>
1275
1276 <p>A function used to re-allocate a given block of memory.</p>
1277 <h4>input</h4>
1278
1279 <table class="fields">
1280 <tr><td class="val" id="memory">memory</td><td class="desc">
1281 <p>A handle to the source memory manager.</p>
1282 </td></tr>
1283 <tr><td class="val" id="cur_size">cur_size</td><td class="desc">
1284 <p>The block's current size in bytes.</p>
1285 </td></tr>
1286 <tr><td class="val" id="new_size">new_size</td><td class="desc">
1287 <p>The block's requested new size.</p>
1288 </td></tr>
1289 <tr><td class="val" id="block">block</td><td class="desc">
1290 <p>The block's current address.</p>
1291 </td></tr>
1292 </table>
1293
1294 <h4>return</h4>
1295
1296 <p>New block address. 0&nbsp;in case of memory shortage.</p>
1297 <h4>note</h4>
1298
1299 <p>In case of error, the old block must still be available.</p>
1300 <hr>
1301
1302 <h2 id="ft_memoryrec">FT_MemoryRec<a class="headerlink" href="#ft_memoryrec" title="Permanent link">&para;</a></h2>
1303 <p>Defined in FT_SYSTEM_H (freetype/ftsystem.h).</p>
1304 <div class = "codehilite"><pre><code>  <span class="keyword">struct</span>  FT_MemoryRec_
1305   {
1306     <span class="keyword">void</span>*            user;
1307     <a href="ft2-system_interface.html#ft_alloc_func">FT_Alloc_Func</a>    alloc;
1308     <a href="ft2-system_interface.html#ft_free_func">FT_Free_Func</a>     free;
1309     <a href="ft2-system_interface.html#ft_realloc_func">FT_Realloc_Func</a>  realloc;
1310   };
1311 </code></pre></div>
1312
1313 <p>A structure used to describe a given memory manager to FreeType&nbsp;2.</p>
1314 <h4>fields</h4>
1315
1316 <table class="fields">
1317 <tr><td class="val" id="user">user</td><td class="desc">
1318 <p>A generic typeless pointer for user data.</p>
1319 </td></tr>
1320 <tr><td class="val" id="alloc">alloc</td><td class="desc">
1321 <p>A pointer type to an allocation function.</p>
1322 </td></tr>
1323 <tr><td class="val" id="free">free</td><td class="desc">
1324 <p>A pointer type to an memory freeing function.</p>
1325 </td></tr>
1326 <tr><td class="val" id="realloc">realloc</td><td class="desc">
1327 <p>A pointer type to a reallocation function.</p>
1328 </td></tr>
1329 </table>
1330
1331 <hr>
1332
1333 <h2 id="ft_stream">FT_Stream<a class="headerlink" href="#ft_stream" title="Permanent link">&para;</a></h2>
1334 <p>Defined in FT_SYSTEM_H (freetype/ftsystem.h).</p>
1335 <div class = "codehilite"><pre><code>  <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_StreamRec_*  <b>FT_Stream</b>;
1336 </code></pre></div>
1337
1338 <p>A handle to an input stream.</p>
1339 <h4>also</h4>
1340
1341 <p>See <code><a href="ft2-system_interface.html#ft_streamrec">FT_StreamRec</a></code> for the publicly accessible fields of a given stream object.</p>
1342 <hr>
1343
1344 <h2 id="ft_streamdesc">FT_StreamDesc<a class="headerlink" href="#ft_streamdesc" title="Permanent link">&para;</a></h2>
1345 <p>Defined in FT_SYSTEM_H (freetype/ftsystem.h).</p>
1346 <div class = "codehilite"><pre><code>  <span class="keyword">typedef</span> <span class="keyword">union</span>  FT_StreamDesc_
1347   {
1348     <span class="keyword">long</span>   value;
1349     <span class="keyword">void</span>*  pointer;
1350
1351   } <b>FT_StreamDesc</b>;
1352 </code></pre></div>
1353
1354 <p>A union type used to store either a long or a pointer. This is used to store a file descriptor or a <code>FILE*</code> in an input stream.</p>
1355 <hr>
1356
1357 <h2 id="ft_stream_iofunc">FT_Stream_IoFunc<a class="headerlink" href="#ft_stream_iofunc" title="Permanent link">&para;</a></h2>
1358 <p>Defined in FT_SYSTEM_H (freetype/ftsystem.h).</p>
1359 <div class = "codehilite"><pre><code>  <span class="keyword">typedef</span> <span class="keyword">unsigned</span> <span class="keyword">long</span>
1360   (*<b>FT_Stream_IoFunc</b>)( <a href="ft2-system_interface.html#ft_stream">FT_Stream</a>       stream,
1361                        <span class="keyword">unsigned</span> <span class="keyword">long</span>   offset,
1362                        <span class="keyword">unsigned</span> <span class="keyword">char</span>*  buffer,
1363                        <span class="keyword">unsigned</span> <span class="keyword">long</span>   count );
1364 </code></pre></div>
1365
1366 <p>A function used to seek and read data from a given input stream.</p>
1367 <h4>input</h4>
1368
1369 <table class="fields">
1370 <tr><td class="val" id="stream">stream</td><td class="desc">
1371 <p>A handle to the source stream.</p>
1372 </td></tr>
1373 <tr><td class="val" id="offset">offset</td><td class="desc">
1374 <p>The offset of read in stream (always from start).</p>
1375 </td></tr>
1376 <tr><td class="val" id="buffer">buffer</td><td class="desc">
1377 <p>The address of the read buffer.</p>
1378 </td></tr>
1379 <tr><td class="val" id="count">count</td><td class="desc">
1380 <p>The number of bytes to read from the stream.</p>
1381 </td></tr>
1382 </table>
1383
1384 <h4>return</h4>
1385
1386 <p>The number of bytes effectively read by the stream.</p>
1387 <h4>note</h4>
1388
1389 <p>This function might be called to perform a seek or skip operation with a <code>count</code> of&nbsp;0. A non-zero return value then indicates an error.</p>
1390 <hr>
1391
1392 <h2 id="ft_stream_closefunc">FT_Stream_CloseFunc<a class="headerlink" href="#ft_stream_closefunc" title="Permanent link">&para;</a></h2>
1393 <p>Defined in FT_SYSTEM_H (freetype/ftsystem.h).</p>
1394 <div class = "codehilite"><pre><code>  <span class="keyword">typedef</span> <span class="keyword">void</span>
1395   (*<b>FT_Stream_CloseFunc</b>)( <a href="ft2-system_interface.html#ft_stream">FT_Stream</a>  stream );
1396 </code></pre></div>
1397
1398 <p>A function used to close a given input stream.</p>
1399 <h4>input</h4>
1400
1401 <table class="fields">
1402 <tr><td class="val" id="stream">stream</td><td class="desc">
1403 <p>A handle to the target stream.</p>
1404 </td></tr>
1405 </table>
1406
1407 <hr>
1408
1409 <h2 id="ft_streamrec">FT_StreamRec<a class="headerlink" href="#ft_streamrec" title="Permanent link">&para;</a></h2>
1410 <p>Defined in FT_SYSTEM_H (freetype/ftsystem.h).</p>
1411 <div class = "codehilite"><pre><code>  <span class="keyword">typedef</span> <span class="keyword">struct</span>  FT_StreamRec_
1412   {
1413     <span class="keyword">unsigned</span> <span class="keyword">char</span>*       base;
1414     <span class="keyword">unsigned</span> <span class="keyword">long</span>        size;
1415     <span class="keyword">unsigned</span> <span class="keyword">long</span>        pos;
1416
1417     <a href="ft2-system_interface.html#ft_streamdesc">FT_StreamDesc</a>        descriptor;
1418     <a href="ft2-system_interface.html#ft_streamdesc">FT_StreamDesc</a>        pathname;
1419     <a href="ft2-system_interface.html#ft_stream_iofunc">FT_Stream_IoFunc</a>     read;
1420     <a href="ft2-system_interface.html#ft_stream_closefunc">FT_Stream_CloseFunc</a>  close;
1421
1422     <a href="ft2-system_interface.html#ft_memory">FT_Memory</a>            memory;
1423     <span class="keyword">unsigned</span> <span class="keyword">char</span>*       cursor;
1424     <span class="keyword">unsigned</span> <span class="keyword">char</span>*       limit;
1425
1426   } <b>FT_StreamRec</b>;
1427 </code></pre></div>
1428
1429 <p>A structure used to describe an input stream.</p>
1430 <h4>input</h4>
1431
1432 <table class="fields">
1433 <tr><td class="val" id="base">base</td><td class="desc">
1434 <p>For memory-based streams, this is the address of the first stream byte in memory. This field should always be set to <code>NULL</code> for disk-based streams.</p>
1435 </td></tr>
1436 <tr><td class="val" id="size">size</td><td class="desc">
1437 <p>The stream size in bytes.</p>
1438 <p>In case of compressed streams where the size is unknown before actually doing the decompression, the value is set to 0x7FFFFFFF. (Note that this size value can occur for normal streams also; it is thus just a hint.)</p>
1439 </td></tr>
1440 <tr><td class="val" id="pos">pos</td><td class="desc">
1441 <p>The current position within the stream.</p>
1442 </td></tr>
1443 <tr><td class="val" id="descriptor">descriptor</td><td class="desc">
1444 <p>This field is a union that can hold an integer or a pointer. It is used by stream implementations to store file descriptors or <code>FILE*</code> pointers.</p>
1445 </td></tr>
1446 <tr><td class="val" id="pathname">pathname</td><td class="desc">
1447 <p>This field is completely ignored by FreeType. However, it is often useful during debugging to use it to store the stream's filename (where available).</p>
1448 </td></tr>
1449 <tr><td class="val" id="read">read</td><td class="desc">
1450 <p>The stream's input function.</p>
1451 </td></tr>
1452 <tr><td class="val" id="close">close</td><td class="desc">
1453 <p>The stream's close function.</p>
1454 </td></tr>
1455 <tr><td class="val" id="memory">memory</td><td class="desc">
1456 <p>The memory manager to use to preload frames. This is set internally by FreeType and shouldn't be touched by stream implementations.</p>
1457 </td></tr>
1458 <tr><td class="val" id="cursor">cursor</td><td class="desc">
1459 <p>This field is set and used internally by FreeType when parsing frames. In particular, the <code>FT_GET_XXX</code> macros use this instead of the <code>pos</code> field.</p>
1460 </td></tr>
1461 <tr><td class="val" id="limit">limit</td><td class="desc">
1462 <p>This field is set and used internally by FreeType when parsing frames.</p>
1463 </td></tr>
1464 </table>
1465
1466 <hr>
1467                 
1468                   
1469                 
1470                 
1471               
1472               
1473                 
1474
1475
1476               
1477             </article>
1478           </div>
1479         </div>
1480       </main>
1481       
1482         
1483 <footer class="md-footer">
1484   
1485     <div class="md-footer-nav">
1486       <nav class="md-footer-nav__inner md-grid">
1487         
1488           <a href="ft2-glyph_stroker.html" title="Glyph Stroker" class="md-flex md-footer-nav__link md-footer-nav__link--prev" rel="prev">
1489             <div class="md-flex__cell md-flex__cell--shrink">
1490               <i class="md-icon md-icon--arrow-back md-footer-nav__button"></i>
1491             </div>
1492             <div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title">
1493               <span class="md-flex__ellipsis">
1494                 <span class="md-footer-nav__direction">
1495                   Previous
1496                 </span>
1497                 Glyph Stroker
1498               </span>
1499             </div>
1500           </a>
1501         
1502         
1503           <a href="ft2-module_management.html" title="Module Management" class="md-flex md-footer-nav__link md-footer-nav__link--next" rel="next">
1504             <div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title">
1505               <span class="md-flex__ellipsis">
1506                 <span class="md-footer-nav__direction">
1507                   Next
1508                 </span>
1509                 Module Management
1510               </span>
1511             </div>
1512             <div class="md-flex__cell md-flex__cell--shrink">
1513               <i class="md-icon md-icon--arrow-forward md-footer-nav__button"></i>
1514             </div>
1515           </a>
1516         
1517       </nav>
1518     </div>
1519   
1520   <div class="md-footer-meta md-typeset">
1521     <div class="md-footer-meta__inner md-grid">
1522       <div class="md-footer-copyright">
1523         
1524           <div class="md-footer-copyright__highlight">
1525             Copyright 2020 <a href = "https://www.freetype.org/license.html">The FreeType Project</a>.
1526           </div>
1527         
1528         powered by
1529         <a href="https://www.mkdocs.org" target="_blank" rel="noopener">MkDocs</a>
1530         and
1531         <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
1532           Material for MkDocs</a>
1533       </div>
1534       
1535     </div>
1536   </div>
1537 </footer>
1538       
1539     </div>
1540     
1541       <script src="assets/javascripts/application.c33a9706.js"></script>
1542       
1543       <script>app.initialize({version:"1.1",url:{base:"."}})</script>
1544       
1545         <script src="javascripts/extra.js"></script>
1546       
1547     
1548   </body>
1549 </html>