• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1
2<!doctype html>
3<html lang="en" class="no-js">
4  <head>
5
6      <meta charset="utf-8">
7      <meta name="viewport" content="width=device-width,initial-scale=1">
8
9        <meta name="description" content="API Reference Documentation for FreeType-2.12.1">
10
11
12
13        <meta name="author" content="FreeType Contributors">
14
15
16      <link rel="icon" href="images/favico.ico">
17      <meta name="generator" content="mkdocs-1.2.1, mkdocs-material-7.1.9">
18
19
20
21        <title>System Interface - FreeType-2.12.1 API Reference</title>
22
23
24
25      <link rel="stylesheet" href="assets/stylesheets/main.ca7ac06f.min.css">
26
27
28        <link rel="stylesheet" href="assets/stylesheets/palette.f1a3b89f.min.css">
29
30
31
32          <meta name="theme-color" content="#4cae4f">
33
34
35
36
37
38
39
40        <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
41        <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Noto+Serif:300,400,400i,700%7CRoboto+Mono&display=fallback">
42        <style>:root{--md-text-font-family:"Noto Serif";--md-code-font-family:"Roboto Mono"}</style>
43
44
45
46
47      <link rel="stylesheet" href="stylesheets/extra.css">
48
49
50
51
52
53
54
55  </head>
56
57
58
59
60
61
62
63    <body dir="ltr" data-md-color-scheme="" data-md-color-primary="green" data-md-color-accent="green">
64
65
66    <script>function __prefix(e){return new URL(".",location).pathname+"."+e}function __get(e,t=localStorage){return JSON.parse(t.getItem(__prefix(e)))}</script>
67
68    <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
69    <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
70    <label class="md-overlay" for="__drawer"></label>
71    <div data-md-component="skip">
72
73
74        <a href="#system-interface" class="md-skip">
75          Skip to content
76        </a>
77
78    </div>
79    <div data-md-component="announce">
80
81    </div>
82
83      <header class="md-header" data-md-component="header">
84  <nav class="md-header__inner md-grid" aria-label="Header">
85    <a href="index.html" title="FreeType-2.12.1 API Reference" class="md-header__button md-logo" aria-label="FreeType-2.12.1 API Reference" data-md-component="logo">
86
87  <img src="images/favico.ico" alt="logo">
88
89    </a>
90    <label class="md-header__button md-icon" for="__drawer">
91      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2z"/></svg>
92    </label>
93    <div class="md-header__title" data-md-component="header-title">
94      <div class="md-header__ellipsis">
95        <div class="md-header__topic">
96          <span class="md-ellipsis">
97            FreeType-2.12.1 API Reference
98          </span>
99        </div>
100        <div class="md-header__topic" data-md-component="header-topic">
101          <span class="md-ellipsis">
102
103              System Interface
104
105          </span>
106        </div>
107      </div>
108    </div>
109
110
111
112      <label class="md-header__button md-icon" for="__search">
113        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"/></svg>
114      </label>
115
116<div class="md-search" data-md-component="search" role="dialog">
117  <label class="md-search__overlay" for="__search"></label>
118  <div class="md-search__inner" role="search">
119    <form class="md-search__form" name="search">
120      <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" data-md-state="active" required>
121      <label class="md-search__icon md-icon" for="__search">
122        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"/></svg>
123        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"/></svg>
124      </label>
125      <button type="reset" class="md-search__icon md-icon" aria-label="Clear" tabindex="-1">
126        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z"/></svg>
127      </button>
128    </form>
129    <div class="md-search__output">
130      <div class="md-search__scrollwrap" data-md-scrollfix>
131        <div class="md-search-result" data-md-component="search-result">
132          <div class="md-search-result__meta">
133            Initializing search
134          </div>
135          <ol class="md-search-result__list"></ol>
136        </div>
137      </div>
138    </div>
139  </div>
140</div>
141
142
143  </nav>
144</header>
145
146    <div class="md-container" data-md-component="container">
147
148
149
150
151      <main class="md-main" data-md-component="main">
152        <div class="md-main__inner md-grid">
153
154
155
156              <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
157                <div class="md-sidebar__scrollwrap">
158                  <div class="md-sidebar__inner">
159
160
161
162<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
163  <label class="md-nav__title" for="__drawer">
164    <a href="index.html" title="FreeType-2.12.1 API Reference" class="md-nav__button md-logo" aria-label="FreeType-2.12.1 API Reference" data-md-component="logo">
165
166  <img src="images/favico.ico" alt="logo">
167
168    </a>
169    FreeType-2.12.1 API Reference
170  </label>
171
172  <ul class="md-nav__list" data-md-scrollfix>
173
174
175
176
177
178
179
180
181    <li class="md-nav__item">
182      <a href="index.html" class="md-nav__link">
183        TOC
184      </a>
185    </li>
186
187
188
189
190
191
192
193
194
195
196    <li class="md-nav__item">
197      <a href="ft2-index.html" class="md-nav__link">
198        Index
199      </a>
200    </li>
201
202
203
204
205
206
207
208
209
210
211
212    <li class="md-nav__item md-nav__item--nested">
213
214
215        <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_3" type="checkbox" id="__nav_3" >
216
217      <label class="md-nav__link" for="__nav_3">
218        General Remarks
219        <span class="md-nav__icon md-icon"></span>
220      </label>
221      <nav class="md-nav" aria-label="General Remarks" data-md-level="1">
222        <label class="md-nav__title" for="__nav_3">
223          <span class="md-nav__icon md-icon"></span>
224          General Remarks
225        </label>
226        <ul class="md-nav__list" data-md-scrollfix>
227
228
229
230
231
232    <li class="md-nav__item">
233      <a href="ft2-preamble.html" class="md-nav__link">
234        Preamble
235      </a>
236    </li>
237
238
239
240
241
242
243
244    <li class="md-nav__item">
245      <a href="ft2-header_inclusion.html" class="md-nav__link">
246        FreeType's header inclusion scheme
247      </a>
248    </li>
249
250
251
252
253
254
255
256    <li class="md-nav__item">
257      <a href="ft2-user_allocation.html" class="md-nav__link">
258        User allocation
259      </a>
260    </li>
261
262
263
264        </ul>
265      </nav>
266    </li>
267
268
269
270
271
272
273
274
275
276
277
278    <li class="md-nav__item md-nav__item--nested">
279
280
281        <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_4" type="checkbox" id="__nav_4" >
282
283      <label class="md-nav__link" for="__nav_4">
284        Core API
285        <span class="md-nav__icon md-icon"></span>
286      </label>
287      <nav class="md-nav" aria-label="Core API" data-md-level="1">
288        <label class="md-nav__title" for="__nav_4">
289          <span class="md-nav__icon md-icon"></span>
290          Core API
291        </label>
292        <ul class="md-nav__list" data-md-scrollfix>
293
294
295
296
297
298    <li class="md-nav__item">
299      <a href="ft2-version.html" class="md-nav__link">
300        FreeType Version
301      </a>
302    </li>
303
304
305
306
307
308
309
310    <li class="md-nav__item">
311      <a href="ft2-basic_types.html" class="md-nav__link">
312        Basic Data Types
313      </a>
314    </li>
315
316
317
318
319
320
321
322    <li class="md-nav__item">
323      <a href="ft2-base_interface.html" class="md-nav__link">
324        Base Interface
325      </a>
326    </li>
327
328
329
330
331
332
333
334    <li class="md-nav__item">
335      <a href="ft2-glyph_variants.html" class="md-nav__link">
336        Unicode Variation Sequences
337      </a>
338    </li>
339
340
341
342
343
344
345
346    <li class="md-nav__item">
347      <a href="ft2-color_management.html" class="md-nav__link">
348        Glyph Color Management
349      </a>
350    </li>
351
352
353
354
355
356
357
358    <li class="md-nav__item">
359      <a href="ft2-layer_management.html" class="md-nav__link">
360        Glyph Layer Management
361      </a>
362    </li>
363
364
365
366
367
368
369
370    <li class="md-nav__item">
371      <a href="ft2-glyph_management.html" class="md-nav__link">
372        Glyph Management
373      </a>
374    </li>
375
376
377
378
379
380
381
382    <li class="md-nav__item">
383      <a href="ft2-mac_specific.html" class="md-nav__link">
384        Mac Specific Interface
385      </a>
386    </li>
387
388
389
390
391
392
393
394    <li class="md-nav__item">
395      <a href="ft2-sizes_management.html" class="md-nav__link">
396        Size Management
397      </a>
398    </li>
399
400
401
402
403
404
405
406    <li class="md-nav__item">
407      <a href="ft2-header_file_macros.html" class="md-nav__link">
408        Header File Macros
409      </a>
410    </li>
411
412
413
414        </ul>
415      </nav>
416    </li>
417
418
419
420
421
422
423
424
425
426
427
428    <li class="md-nav__item md-nav__item--nested">
429
430
431        <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_5" type="checkbox" id="__nav_5" >
432
433      <label class="md-nav__link" for="__nav_5">
434        Format-Specific API
435        <span class="md-nav__icon md-icon"></span>
436      </label>
437      <nav class="md-nav" aria-label="Format-Specific API" data-md-level="1">
438        <label class="md-nav__title" for="__nav_5">
439          <span class="md-nav__icon md-icon"></span>
440          Format-Specific API
441        </label>
442        <ul class="md-nav__list" data-md-scrollfix>
443
444
445
446
447
448    <li class="md-nav__item">
449      <a href="ft2-multiple_masters.html" class="md-nav__link">
450        Multiple Masters
451      </a>
452    </li>
453
454
455
456
457
458
459
460    <li class="md-nav__item">
461      <a href="ft2-truetype_tables.html" class="md-nav__link">
462        TrueType Tables
463      </a>
464    </li>
465
466
467
468
469
470
471
472    <li class="md-nav__item">
473      <a href="ft2-type1_tables.html" class="md-nav__link">
474        Type 1 Tables
475      </a>
476    </li>
477
478
479
480
481
482
483
484    <li class="md-nav__item">
485      <a href="ft2-sfnt_names.html" class="md-nav__link">
486        SFNT Names
487      </a>
488    </li>
489
490
491
492
493
494
495
496    <li class="md-nav__item">
497      <a href="ft2-bdf_fonts.html" class="md-nav__link">
498        BDF and PCF Files
499      </a>
500    </li>
501
502
503
504
505
506
507
508    <li class="md-nav__item">
509      <a href="ft2-cid_fonts.html" class="md-nav__link">
510        CID Fonts
511      </a>
512    </li>
513
514
515
516
517
518
519
520    <li class="md-nav__item">
521      <a href="ft2-pfr_fonts.html" class="md-nav__link">
522        PFR Fonts
523      </a>
524    </li>
525
526
527
528
529
530
531
532    <li class="md-nav__item">
533      <a href="ft2-winfnt_fonts.html" class="md-nav__link">
534        Window FNT Files
535      </a>
536    </li>
537
538
539
540
541
542
543
544    <li class="md-nav__item">
545      <a href="ft2-svg_fonts.html" class="md-nav__link">
546        OpenType SVG Fonts
547      </a>
548    </li>
549
550
551
552
553
554
555
556    <li class="md-nav__item">
557      <a href="ft2-font_formats.html" class="md-nav__link">
558        Font Formats
559      </a>
560    </li>
561
562
563
564
565
566
567
568    <li class="md-nav__item">
569      <a href="ft2-gasp_table.html" class="md-nav__link">
570        Gasp Table
571      </a>
572    </li>
573
574
575
576        </ul>
577      </nav>
578    </li>
579
580
581
582
583
584
585
586
587
588
589
590    <li class="md-nav__item md-nav__item--nested">
591
592
593        <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_6" type="checkbox" id="__nav_6" >
594
595      <label class="md-nav__link" for="__nav_6">
596        Controlling FreeType Modules
597        <span class="md-nav__icon md-icon"></span>
598      </label>
599      <nav class="md-nav" aria-label="Controlling FreeType Modules" data-md-level="1">
600        <label class="md-nav__title" for="__nav_6">
601          <span class="md-nav__icon md-icon"></span>
602          Controlling FreeType Modules
603        </label>
604        <ul class="md-nav__list" data-md-scrollfix>
605
606
607
608
609
610    <li class="md-nav__item">
611      <a href="ft2-auto_hinter.html" class="md-nav__link">
612        The auto-hinter
613      </a>
614    </li>
615
616
617
618
619
620
621
622    <li class="md-nav__item">
623      <a href="ft2-cff_driver.html" class="md-nav__link">
624        The CFF driver
625      </a>
626    </li>
627
628
629
630
631
632
633
634    <li class="md-nav__item">
635      <a href="ft2-t1_cid_driver.html" class="md-nav__link">
636        The Type 1 and CID drivers
637      </a>
638    </li>
639
640
641
642
643
644
645
646    <li class="md-nav__item">
647      <a href="ft2-tt_driver.html" class="md-nav__link">
648        The TrueType driver
649      </a>
650    </li>
651
652
653
654
655
656
657
658    <li class="md-nav__item">
659      <a href="ft2-pcf_driver.html" class="md-nav__link">
660        The PCF driver
661      </a>
662    </li>
663
664
665
666
667
668
669
670    <li class="md-nav__item">
671      <a href="ft2-ot_svg_driver.html" class="md-nav__link">
672        The SVG driver
673      </a>
674    </li>
675
676
677
678
679
680
681
682    <li class="md-nav__item">
683      <a href="ft2-properties.html" class="md-nav__link">
684        Driver properties
685      </a>
686    </li>
687
688
689
690
691
692
693
694    <li class="md-nav__item">
695      <a href="ft2-parameter_tags.html" class="md-nav__link">
696        Parameter Tags
697      </a>
698    </li>
699
700
701
702
703
704
705
706    <li class="md-nav__item">
707      <a href="ft2-lcd_rendering.html" class="md-nav__link">
708        Subpixel Rendering
709      </a>
710    </li>
711
712
713
714        </ul>
715      </nav>
716    </li>
717
718
719
720
721
722
723
724
725
726
727
728    <li class="md-nav__item md-nav__item--nested">
729
730
731        <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_7" type="checkbox" id="__nav_7" >
732
733      <label class="md-nav__link" for="__nav_7">
734        Cache Sub-System
735        <span class="md-nav__icon md-icon"></span>
736      </label>
737      <nav class="md-nav" aria-label="Cache Sub-System" data-md-level="1">
738        <label class="md-nav__title" for="__nav_7">
739          <span class="md-nav__icon md-icon"></span>
740          Cache Sub-System
741        </label>
742        <ul class="md-nav__list" data-md-scrollfix>
743
744
745
746
747
748    <li class="md-nav__item">
749      <a href="ft2-cache_subsystem.html" class="md-nav__link">
750        Cache Sub-System
751      </a>
752    </li>
753
754
755
756        </ul>
757      </nav>
758    </li>
759
760
761
762
763
764
765
766
767
768
769
770
771
772    <li class="md-nav__item md-nav__item--active md-nav__item--nested">
773
774
775        <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_8" type="checkbox" id="__nav_8" checked>
776
777      <label class="md-nav__link" for="__nav_8">
778        Support API
779        <span class="md-nav__icon md-icon"></span>
780      </label>
781      <nav class="md-nav" aria-label="Support API" data-md-level="1">
782        <label class="md-nav__title" for="__nav_8">
783          <span class="md-nav__icon md-icon"></span>
784          Support API
785        </label>
786        <ul class="md-nav__list" data-md-scrollfix>
787
788
789
790
791
792    <li class="md-nav__item">
793      <a href="ft2-computations.html" class="md-nav__link">
794        Computations
795      </a>
796    </li>
797
798
799
800
801
802
803
804    <li class="md-nav__item">
805      <a href="ft2-list_processing.html" class="md-nav__link">
806        List Processing
807      </a>
808    </li>
809
810
811
812
813
814
815
816    <li class="md-nav__item">
817      <a href="ft2-outline_processing.html" class="md-nav__link">
818        Outline Processing
819      </a>
820    </li>
821
822
823
824
825
826
827
828    <li class="md-nav__item">
829      <a href="ft2-quick_advance.html" class="md-nav__link">
830        Quick retrieval of advance values
831      </a>
832    </li>
833
834
835
836
837
838
839
840    <li class="md-nav__item">
841      <a href="ft2-bitmap_handling.html" class="md-nav__link">
842        Bitmap Handling
843      </a>
844    </li>
845
846
847
848
849
850
851
852    <li class="md-nav__item">
853      <a href="ft2-raster.html" class="md-nav__link">
854        Scanline Converter
855      </a>
856    </li>
857
858
859
860
861
862
863
864    <li class="md-nav__item">
865      <a href="ft2-glyph_stroker.html" class="md-nav__link">
866        Glyph Stroker
867      </a>
868    </li>
869
870
871
872
873
874
875
876
877
878    <li class="md-nav__item md-nav__item--active">
879
880      <input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc">
881
882
883
884
885
886        <label class="md-nav__link md-nav__link--active" for="__toc">
887          System Interface
888          <span class="md-nav__icon md-icon"></span>
889        </label>
890
891      <a href="ft2-system_interface.html" class="md-nav__link md-nav__link--active">
892        System Interface
893      </a>
894
895
896<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
897
898
899
900
901
902
903    <label class="md-nav__title" for="__toc">
904      <span class="md-nav__icon md-icon"></span>
905      Table of contents
906    </label>
907    <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
908
909        <li class="md-nav__item">
910  <a href="#synopsis" class="md-nav__link">
911    Synopsis
912  </a>
913
914</li>
915
916        <li class="md-nav__item">
917  <a href="#ft_memory" class="md-nav__link">
918    FT_Memory
919  </a>
920
921</li>
922
923        <li class="md-nav__item">
924  <a href="#ft_alloc_func" class="md-nav__link">
925    FT_Alloc_Func
926  </a>
927
928</li>
929
930        <li class="md-nav__item">
931  <a href="#ft_free_func" class="md-nav__link">
932    FT_Free_Func
933  </a>
934
935</li>
936
937        <li class="md-nav__item">
938  <a href="#ft_realloc_func" class="md-nav__link">
939    FT_Realloc_Func
940  </a>
941
942</li>
943
944        <li class="md-nav__item">
945  <a href="#ft_memoryrec" class="md-nav__link">
946    FT_MemoryRec
947  </a>
948
949</li>
950
951        <li class="md-nav__item">
952  <a href="#ft_stream" class="md-nav__link">
953    FT_Stream
954  </a>
955
956</li>
957
958        <li class="md-nav__item">
959  <a href="#ft_streamdesc" class="md-nav__link">
960    FT_StreamDesc
961  </a>
962
963</li>
964
965        <li class="md-nav__item">
966  <a href="#ft_stream_iofunc" class="md-nav__link">
967    FT_Stream_IoFunc
968  </a>
969
970</li>
971
972        <li class="md-nav__item">
973  <a href="#ft_stream_closefunc" class="md-nav__link">
974    FT_Stream_CloseFunc
975  </a>
976
977</li>
978
979        <li class="md-nav__item">
980  <a href="#ft_streamrec" class="md-nav__link">
981    FT_StreamRec
982  </a>
983
984</li>
985
986    </ul>
987
988</nav>
989
990    </li>
991
992
993
994
995
996
997
998    <li class="md-nav__item">
999      <a href="ft2-module_management.html" class="md-nav__link">
1000        Module Management
1001      </a>
1002    </li>
1003
1004
1005
1006
1007
1008
1009
1010    <li class="md-nav__item">
1011      <a href="ft2-gzip.html" class="md-nav__link">
1012        GZIP Streams
1013      </a>
1014    </li>
1015
1016
1017
1018
1019
1020
1021
1022    <li class="md-nav__item">
1023      <a href="ft2-lzw.html" class="md-nav__link">
1024        LZW Streams
1025      </a>
1026    </li>
1027
1028
1029
1030
1031
1032
1033
1034    <li class="md-nav__item">
1035      <a href="ft2-bzip2.html" class="md-nav__link">
1036        BZIP2 Streams
1037      </a>
1038    </li>
1039
1040
1041
1042
1043
1044
1045
1046    <li class="md-nav__item">
1047      <a href="ft2-debugging_apis.html" class="md-nav__link">
1048        External Debugging APIs
1049      </a>
1050    </li>
1051
1052
1053
1054        </ul>
1055      </nav>
1056    </li>
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068    <li class="md-nav__item md-nav__item--nested">
1069
1070
1071        <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_9" type="checkbox" id="__nav_9" >
1072
1073      <label class="md-nav__link" for="__nav_9">
1074        Error Codes
1075        <span class="md-nav__icon md-icon"></span>
1076      </label>
1077      <nav class="md-nav" aria-label="Error Codes" data-md-level="1">
1078        <label class="md-nav__title" for="__nav_9">
1079          <span class="md-nav__icon md-icon"></span>
1080          Error Codes
1081        </label>
1082        <ul class="md-nav__list" data-md-scrollfix>
1083
1084
1085
1086
1087
1088    <li class="md-nav__item">
1089      <a href="ft2-error_enumerations.html" class="md-nav__link">
1090        Error Enumerations
1091      </a>
1092    </li>
1093
1094
1095
1096
1097
1098
1099
1100    <li class="md-nav__item">
1101      <a href="ft2-error_code_values.html" class="md-nav__link">
1102        Error Code Values
1103      </a>
1104    </li>
1105
1106
1107
1108        </ul>
1109      </nav>
1110    </li>
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122    <li class="md-nav__item md-nav__item--nested">
1123
1124
1125        <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_10" type="checkbox" id="__nav_10" >
1126
1127      <label class="md-nav__link" for="__nav_10">
1128        Miscellaneous
1129        <span class="md-nav__icon md-icon"></span>
1130      </label>
1131      <nav class="md-nav" aria-label="Miscellaneous" data-md-level="1">
1132        <label class="md-nav__title" for="__nav_10">
1133          <span class="md-nav__icon md-icon"></span>
1134          Miscellaneous
1135        </label>
1136        <ul class="md-nav__list" data-md-scrollfix>
1137
1138
1139
1140
1141
1142    <li class="md-nav__item">
1143      <a href="ft2-gx_validation.html" class="md-nav__link">
1144        TrueTypeGX/AAT Validation
1145      </a>
1146    </li>
1147
1148
1149
1150
1151
1152
1153
1154    <li class="md-nav__item">
1155      <a href="ft2-incremental.html" class="md-nav__link">
1156        Incremental Loading
1157      </a>
1158    </li>
1159
1160
1161
1162
1163
1164
1165
1166    <li class="md-nav__item">
1167      <a href="ft2-truetype_engine.html" class="md-nav__link">
1168        The TrueType Engine
1169      </a>
1170    </li>
1171
1172
1173
1174
1175
1176
1177
1178    <li class="md-nav__item">
1179      <a href="ft2-ot_validation.html" class="md-nav__link">
1180        OpenType Validation
1181      </a>
1182    </li>
1183
1184
1185
1186        </ul>
1187      </nav>
1188    </li>
1189
1190
1191
1192  </ul>
1193</nav>
1194                  </div>
1195                </div>
1196              </div>
1197
1198
1199
1200              <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
1201                <div class="md-sidebar__scrollwrap">
1202                  <div class="md-sidebar__inner">
1203
1204<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
1205
1206
1207
1208
1209
1210
1211    <label class="md-nav__title" for="__toc">
1212      <span class="md-nav__icon md-icon"></span>
1213      Table of contents
1214    </label>
1215    <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
1216
1217        <li class="md-nav__item">
1218  <a href="#synopsis" class="md-nav__link">
1219    Synopsis
1220  </a>
1221
1222</li>
1223
1224        <li class="md-nav__item">
1225  <a href="#ft_memory" class="md-nav__link">
1226    FT_Memory
1227  </a>
1228
1229</li>
1230
1231        <li class="md-nav__item">
1232  <a href="#ft_alloc_func" class="md-nav__link">
1233    FT_Alloc_Func
1234  </a>
1235
1236</li>
1237
1238        <li class="md-nav__item">
1239  <a href="#ft_free_func" class="md-nav__link">
1240    FT_Free_Func
1241  </a>
1242
1243</li>
1244
1245        <li class="md-nav__item">
1246  <a href="#ft_realloc_func" class="md-nav__link">
1247    FT_Realloc_Func
1248  </a>
1249
1250</li>
1251
1252        <li class="md-nav__item">
1253  <a href="#ft_memoryrec" class="md-nav__link">
1254    FT_MemoryRec
1255  </a>
1256
1257</li>
1258
1259        <li class="md-nav__item">
1260  <a href="#ft_stream" class="md-nav__link">
1261    FT_Stream
1262  </a>
1263
1264</li>
1265
1266        <li class="md-nav__item">
1267  <a href="#ft_streamdesc" class="md-nav__link">
1268    FT_StreamDesc
1269  </a>
1270
1271</li>
1272
1273        <li class="md-nav__item">
1274  <a href="#ft_stream_iofunc" class="md-nav__link">
1275    FT_Stream_IoFunc
1276  </a>
1277
1278</li>
1279
1280        <li class="md-nav__item">
1281  <a href="#ft_stream_closefunc" class="md-nav__link">
1282    FT_Stream_CloseFunc
1283  </a>
1284
1285</li>
1286
1287        <li class="md-nav__item">
1288  <a href="#ft_streamrec" class="md-nav__link">
1289    FT_StreamRec
1290  </a>
1291
1292</li>
1293
1294    </ul>
1295
1296</nav>
1297                  </div>
1298                </div>
1299              </div>
1300
1301
1302          <div class="md-content" data-md-component="content">
1303            <article class="md-content__inner md-typeset">
1304
1305
1306
1307                <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>
1308<hr />
1309<h1 id="system-interface">System Interface<a class="headerlink" href="#system-interface" title="Permanent link">&para;</a></h1>
1310<h2 id="synopsis">Synopsis<a class="headerlink" href="#synopsis" title="Permanent link">&para;</a></h2>
1311<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>
1312<h2 id="ft_memory">FT_Memory<a class="headerlink" href="#ft_memory" title="Permanent link">&para;</a></h2>
1313<p>Defined in FT_SYSTEM_H (freetype/ftsystem.h).</p>
1314<div class = "codehilite"><pre><code>  <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_MemoryRec_*  <b>FT_Memory</b>;
1315</code></pre></div>
1316
1317<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>
1318<hr>
1319
1320<h2 id="ft_alloc_func">FT_Alloc_Func<a class="headerlink" href="#ft_alloc_func" title="Permanent link">&para;</a></h2>
1321<p>Defined in FT_SYSTEM_H (freetype/ftsystem.h).</p>
1322<div class = "codehilite"><pre><code>  <span class="keyword">typedef</span> <span class="keyword">void</span>*
1323  (*<b>FT_Alloc_Func</b>)( <a href="ft2-system_interface.html#ft_memory">FT_Memory</a>  memory,
1324                    <span class="keyword">long</span>       size );
1325</code></pre></div>
1326
1327<p>A function used to allocate <code>size</code> bytes from <code>memory</code>.</p>
1328<h4>input</h4>
1329<table class="fields">
1330<tr><td class="val" id="memory">memory</td><td class="desc">
1331<p>A handle to the source memory manager.</p>
1332</td></tr>
1333<tr><td class="val" id="size">size</td><td class="desc">
1334<p>The size in bytes to allocate.</p>
1335</td></tr>
1336</table>
1337
1338<h4>return</h4>
1339
1340<p>Address of new memory block. 0&nbsp;in case of failure.</p>
1341<hr>
1342
1343<h2 id="ft_free_func">FT_Free_Func<a class="headerlink" href="#ft_free_func" title="Permanent link">&para;</a></h2>
1344<p>Defined in FT_SYSTEM_H (freetype/ftsystem.h).</p>
1345<div class = "codehilite"><pre><code>  <span class="keyword">typedef</span> <span class="keyword">void</span>
1346  (*<b>FT_Free_Func</b>)( <a href="ft2-system_interface.html#ft_memory">FT_Memory</a>  memory,
1347                   <span class="keyword">void</span>*      block );
1348</code></pre></div>
1349
1350<p>A function used to release a given block of memory.</p>
1351<h4>input</h4>
1352<table class="fields">
1353<tr><td class="val" id="memory">memory</td><td class="desc">
1354<p>A handle to the source memory manager.</p>
1355</td></tr>
1356<tr><td class="val" id="block">block</td><td class="desc">
1357<p>The address of the target memory block.</p>
1358</td></tr>
1359</table>
1360
1361<hr>
1362
1363<h2 id="ft_realloc_func">FT_Realloc_Func<a class="headerlink" href="#ft_realloc_func" title="Permanent link">&para;</a></h2>
1364<p>Defined in FT_SYSTEM_H (freetype/ftsystem.h).</p>
1365<div class = "codehilite"><pre><code>  <span class="keyword">typedef</span> <span class="keyword">void</span>*
1366  (*<b>FT_Realloc_Func</b>)( <a href="ft2-system_interface.html#ft_memory">FT_Memory</a>  memory,
1367                      <span class="keyword">long</span>       cur_size,
1368                      <span class="keyword">long</span>       new_size,
1369                      <span class="keyword">void</span>*      block );
1370</code></pre></div>
1371
1372<p>A function used to re-allocate a given block of memory.</p>
1373<h4>input</h4>
1374<table class="fields">
1375<tr><td class="val" id="memory">memory</td><td class="desc">
1376<p>A handle to the source memory manager.</p>
1377</td></tr>
1378<tr><td class="val" id="cur_size">cur_size</td><td class="desc">
1379<p>The block's current size in bytes.</p>
1380</td></tr>
1381<tr><td class="val" id="new_size">new_size</td><td class="desc">
1382<p>The block's requested new size.</p>
1383</td></tr>
1384<tr><td class="val" id="block">block</td><td class="desc">
1385<p>The block's current address.</p>
1386</td></tr>
1387</table>
1388
1389<h4>return</h4>
1390
1391<p>New block address. 0&nbsp;in case of memory shortage.</p>
1392<h4>note</h4>
1393
1394<p>In case of error, the old block must still be available.</p>
1395<hr>
1396
1397<h2 id="ft_memoryrec">FT_MemoryRec<a class="headerlink" href="#ft_memoryrec" title="Permanent link">&para;</a></h2>
1398<p>Defined in FT_SYSTEM_H (freetype/ftsystem.h).</p>
1399<div class = "codehilite"><pre><code>  <span class="keyword">struct</span>  FT_MemoryRec_
1400  {
1401    <span class="keyword">void</span>*            user;
1402    <a href="ft2-system_interface.html#ft_alloc_func">FT_Alloc_Func</a>    alloc;
1403    <a href="ft2-system_interface.html#ft_free_func">FT_Free_Func</a>     free;
1404    <a href="ft2-system_interface.html#ft_realloc_func">FT_Realloc_Func</a>  realloc;
1405  };
1406</code></pre></div>
1407
1408<p>A structure used to describe a given memory manager to FreeType&nbsp;2.</p>
1409<h4>fields</h4>
1410<table class="fields">
1411<tr><td class="val" id="user">user</td><td class="desc">
1412<p>A generic typeless pointer for user data.</p>
1413</td></tr>
1414<tr><td class="val" id="alloc">alloc</td><td class="desc">
1415<p>A pointer type to an allocation function.</p>
1416</td></tr>
1417<tr><td class="val" id="free">free</td><td class="desc">
1418<p>A pointer type to an memory freeing function.</p>
1419</td></tr>
1420<tr><td class="val" id="realloc">realloc</td><td class="desc">
1421<p>A pointer type to a reallocation function.</p>
1422</td></tr>
1423</table>
1424
1425<hr>
1426
1427<h2 id="ft_stream">FT_Stream<a class="headerlink" href="#ft_stream" title="Permanent link">&para;</a></h2>
1428<p>Defined in FT_SYSTEM_H (freetype/ftsystem.h).</p>
1429<div class = "codehilite"><pre><code>  <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_StreamRec_*  <b>FT_Stream</b>;
1430</code></pre></div>
1431
1432<p>A handle to an input stream.</p>
1433<h4>also</h4>
1434
1435<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>
1436<hr>
1437
1438<h2 id="ft_streamdesc">FT_StreamDesc<a class="headerlink" href="#ft_streamdesc" title="Permanent link">&para;</a></h2>
1439<p>Defined in FT_SYSTEM_H (freetype/ftsystem.h).</p>
1440<div class = "codehilite"><pre><code>  <span class="keyword">typedef</span> <span class="keyword">union</span>  FT_StreamDesc_
1441  {
1442    <span class="keyword">long</span>   value;
1443    <span class="keyword">void</span>*  pointer;
1444
1445  } <b>FT_StreamDesc</b>;
1446</code></pre></div>
1447
1448<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>
1449<hr>
1450
1451<h2 id="ft_stream_iofunc">FT_Stream_IoFunc<a class="headerlink" href="#ft_stream_iofunc" title="Permanent link">&para;</a></h2>
1452<p>Defined in FT_SYSTEM_H (freetype/ftsystem.h).</p>
1453<div class = "codehilite"><pre><code>  <span class="keyword">typedef</span> <span class="keyword">unsigned</span> <span class="keyword">long</span>
1454  (*<b>FT_Stream_IoFunc</b>)( <a href="ft2-system_interface.html#ft_stream">FT_Stream</a>       stream,
1455                       <span class="keyword">unsigned</span> <span class="keyword">long</span>   offset,
1456                       <span class="keyword">unsigned</span> <span class="keyword">char</span>*  buffer,
1457                       <span class="keyword">unsigned</span> <span class="keyword">long</span>   count );
1458</code></pre></div>
1459
1460<p>A function used to seek and read data from a given input stream.</p>
1461<h4>input</h4>
1462<table class="fields">
1463<tr><td class="val" id="stream">stream</td><td class="desc">
1464<p>A handle to the source stream.</p>
1465</td></tr>
1466<tr><td class="val" id="offset">offset</td><td class="desc">
1467<p>The offset of read in stream (always from start).</p>
1468</td></tr>
1469<tr><td class="val" id="buffer">buffer</td><td class="desc">
1470<p>The address of the read buffer.</p>
1471</td></tr>
1472<tr><td class="val" id="count">count</td><td class="desc">
1473<p>The number of bytes to read from the stream.</p>
1474</td></tr>
1475</table>
1476
1477<h4>return</h4>
1478
1479<p>The number of bytes effectively read by the stream.</p>
1480<h4>note</h4>
1481
1482<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>
1483<hr>
1484
1485<h2 id="ft_stream_closefunc">FT_Stream_CloseFunc<a class="headerlink" href="#ft_stream_closefunc" title="Permanent link">&para;</a></h2>
1486<p>Defined in FT_SYSTEM_H (freetype/ftsystem.h).</p>
1487<div class = "codehilite"><pre><code>  <span class="keyword">typedef</span> <span class="keyword">void</span>
1488  (*<b>FT_Stream_CloseFunc</b>)( <a href="ft2-system_interface.html#ft_stream">FT_Stream</a>  stream );
1489</code></pre></div>
1490
1491<p>A function used to close a given input stream.</p>
1492<h4>input</h4>
1493<table class="fields">
1494<tr><td class="val" id="stream">stream</td><td class="desc">
1495<p>A handle to the target stream.</p>
1496</td></tr>
1497</table>
1498
1499<hr>
1500
1501<h2 id="ft_streamrec">FT_StreamRec<a class="headerlink" href="#ft_streamrec" title="Permanent link">&para;</a></h2>
1502<p>Defined in FT_SYSTEM_H (freetype/ftsystem.h).</p>
1503<div class = "codehilite"><pre><code>  <span class="keyword">typedef</span> <span class="keyword">struct</span>  FT_StreamRec_
1504  {
1505    <span class="keyword">unsigned</span> <span class="keyword">char</span>*       base;
1506    <span class="keyword">unsigned</span> <span class="keyword">long</span>        size;
1507    <span class="keyword">unsigned</span> <span class="keyword">long</span>        pos;
1508
1509    <a href="ft2-system_interface.html#ft_streamdesc">FT_StreamDesc</a>        descriptor;
1510    <a href="ft2-system_interface.html#ft_streamdesc">FT_StreamDesc</a>        pathname;
1511    <a href="ft2-system_interface.html#ft_stream_iofunc">FT_Stream_IoFunc</a>     read;
1512    <a href="ft2-system_interface.html#ft_stream_closefunc">FT_Stream_CloseFunc</a>  close;
1513
1514    <a href="ft2-system_interface.html#ft_memory">FT_Memory</a>            memory;
1515    <span class="keyword">unsigned</span> <span class="keyword">char</span>*       cursor;
1516    <span class="keyword">unsigned</span> <span class="keyword">char</span>*       limit;
1517
1518  } <b>FT_StreamRec</b>;
1519</code></pre></div>
1520
1521<p>A structure used to describe an input stream.</p>
1522<h4>input</h4>
1523<table class="fields">
1524<tr><td class="val" id="base">base</td><td class="desc">
1525<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>
1526</td></tr>
1527<tr><td class="val" id="size">size</td><td class="desc">
1528<p>The stream size in bytes.</p>
1529<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>
1530</td></tr>
1531<tr><td class="val" id="pos">pos</td><td class="desc">
1532<p>The current position within the stream.</p>
1533</td></tr>
1534<tr><td class="val" id="descriptor">descriptor</td><td class="desc">
1535<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>
1536</td></tr>
1537<tr><td class="val" id="pathname">pathname</td><td class="desc">
1538<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>
1539</td></tr>
1540<tr><td class="val" id="read">read</td><td class="desc">
1541<p>The stream's input function.</p>
1542</td></tr>
1543<tr><td class="val" id="close">close</td><td class="desc">
1544<p>The stream's close function.</p>
1545</td></tr>
1546<tr><td class="val" id="memory">memory</td><td class="desc">
1547<p>The memory manager to use to preload frames. This is set internally by FreeType and shouldn't be touched by stream implementations.</p>
1548</td></tr>
1549<tr><td class="val" id="cursor">cursor</td><td class="desc">
1550<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>
1551</td></tr>
1552<tr><td class="val" id="limit">limit</td><td class="desc">
1553<p>This field is set and used internally by FreeType when parsing frames.</p>
1554</td></tr>
1555</table>
1556
1557<hr>
1558
1559
1560
1561
1562
1563
1564
1565            </article>
1566          </div>
1567        </div>
1568
1569      </main>
1570
1571
1572<footer class="md-footer">
1573
1574    <nav class="md-footer__inner md-grid" aria-label="Footer">
1575
1576
1577        <a href="ft2-glyph_stroker.html" class="md-footer__link md-footer__link--prev" aria-label="Previous: Glyph Stroker" rel="prev">
1578          <div class="md-footer__button md-icon">
1579            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"/></svg>
1580          </div>
1581          <div class="md-footer__title">
1582            <div class="md-ellipsis">
1583              <span class="md-footer__direction">
1584                Previous
1585              </span>
1586              Glyph Stroker
1587            </div>
1588          </div>
1589        </a>
1590
1591
1592
1593        <a href="ft2-module_management.html" class="md-footer__link md-footer__link--next" aria-label="Next: Module Management" rel="next">
1594          <div class="md-footer__title">
1595            <div class="md-ellipsis">
1596              <span class="md-footer__direction">
1597                Next
1598              </span>
1599              Module Management
1600            </div>
1601          </div>
1602          <div class="md-footer__button md-icon">
1603            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11H4z"/></svg>
1604          </div>
1605        </a>
1606
1607    </nav>
1608
1609  <div class="md-footer-meta md-typeset">
1610    <div class="md-footer-meta__inner md-grid">
1611      <div class="md-footer-copyright">
1612
1613          <div class="md-footer-copyright__highlight">
1614            Copyright 2022 <a href = "https://www.freetype.org/license.html">The FreeType Project</a>.
1615          </div>
1616
1617        Made with
1618        <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
1619          Material for MkDocs
1620        </a>
1621
1622      </div>
1623
1624    </div>
1625  </div>
1626</footer>
1627
1628    </div>
1629    <div class="md-dialog" data-md-component="dialog">
1630      <div class="md-dialog__inner md-typeset"></div>
1631    </div>
1632    <script id="__config" type="application/json">{"base": ".", "features": [], "translations": {"clipboard.copy": "Copy to clipboard", "clipboard.copied": "Copied to clipboard", "search.config.lang": "en", "search.config.pipeline": "trimmer, stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.placeholder": "Search", "search.result.placeholder": "Type to start searching", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.term.missing": "Missing", "select.version.title": "Select version"}, "search": "assets/javascripts/workers/search.477d984a.min.js", "version": null}</script>
1633
1634
1635      <script src="assets/javascripts/bundle.82b56eb2.min.js"></script>
1636
1637        <script src="javascripts/extra.js"></script>
1638
1639
1640  </body>
1641</html>