• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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>