6 <html lang="en" class="no-js">
10 <meta name="viewport" content="width=device-width,initial-scale=1">
11 <meta http-equiv="x-ua-compatible" content="ie=edge">
13 <meta name="description" content="API Reference Documentation for FreeType-2.10.4">
17 <meta name="author" content="FreeType Contributors">
20 <meta name="lang:clipboard.copy" content="Copy to clipboard">
22 <meta name="lang:clipboard.copied" content="Copied to clipboard">
24 <meta name="lang:search.language" content="en">
26 <meta name="lang:search.pipeline.stopwords" content="True">
28 <meta name="lang:search.pipeline.trimmer" content="True">
30 <meta name="lang:search.result.none" content="No matching documents">
32 <meta name="lang:search.result.one" content="1 matching document">
34 <meta name="lang:search.result.other" content="# matching documents">
36 <meta name="lang:search.tokenizer" content="[\s\-]+">
38 <link rel="shortcut icon" href="images/favico.ico">
39 <meta name="generator" content="mkdocs-1.1, mkdocs-material-4.6.3">
43 <title>System Interface - FreeType-2.10.4 API Reference</title>
47 <link rel="stylesheet" href="assets/stylesheets/application.adb8469c.css">
49 <link rel="stylesheet" href="assets/stylesheets/application-palette.a8b3c06d.css">
54 <meta name="theme-color" content="#4caf50">
58 <script src="assets/javascripts/modernizr.86422ebf.js"></script>
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>
67 <link rel="stylesheet" href="assets/fonts/material-icons.css">
70 <link rel="stylesheet" href="stylesheets/extra.css">
80 <body dir="ltr" data-md-color-primary="green" data-md-color-accent="green">
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>
92 <a href="#system-interface" tabindex="0" class="md-skip">
97 <header class="md-header" data-md-component="header">
98 <nav class="md-header-nav md-grid">
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">
103 <img alt="logo" src="images/favico.ico" width="24" height="24">
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>
110 <div class="md-flex__cell md-flex__cell--stretch">
111 <div class="md-flex__ellipsis md-header-nav__title" data-md-component="title">
113 <span class="md-header-nav__topic">
114 FreeType-2.10.4 API Reference
116 <span class="md-header-nav__topic">
124 <div class="md-flex__cell md-flex__cell--shrink">
126 <label class="md-icon md-icon--search md-header-nav__button" for="__search"></label>
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">
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
144 <ol class="md-search-result__list"></ol>
157 <div class="md-container">
162 <main class="md-main" role="main">
163 <div class="md-main__inner md-grid" data-md-component="container">
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">
173 <img alt="logo" src="images/favico.ico" width="48" height="48">
176 FreeType-2.10.4 API Reference
179 <ul class="md-nav__list" data-md-scrollfix>
186 <li class="md-nav__item">
187 <a href="index.html" title="TOC" class="md-nav__link">
198 <li class="md-nav__item">
199 <a href="ft2-index.html" title="Index" class="md-nav__link">
210 <li class="md-nav__item md-nav__item--nested">
212 <input class="md-toggle md-nav__toggle" data-md-toggle="nav-3" type="checkbox" id="nav-3">
214 <label class="md-nav__link" for="nav-3">
217 <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
218 <label class="md-nav__title" for="nav-3">
221 <ul class="md-nav__list" data-md-scrollfix>
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
241 <li class="md-nav__item">
242 <a href="ft2-user_allocation.html" title="User allocation" class="md-nav__link">
258 <li class="md-nav__item md-nav__item--nested">
260 <input class="md-toggle md-nav__toggle" data-md-toggle="nav-4" type="checkbox" id="nav-4">
262 <label class="md-nav__link" for="nav-4">
265 <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
266 <label class="md-nav__title" for="nav-4">
269 <ul class="md-nav__list" data-md-scrollfix>
277 <li class="md-nav__item">
278 <a href="ft2-version.html" title="FreeType Version" class="md-nav__link">
289 <li class="md-nav__item">
290 <a href="ft2-basic_types.html" title="Basic Data Types" class="md-nav__link">
301 <li class="md-nav__item">
302 <a href="ft2-base_interface.html" title="Base Interface" class="md-nav__link">
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
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
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
349 <li class="md-nav__item">
350 <a href="ft2-glyph_management.html" title="Glyph Management" class="md-nav__link">
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
373 <li class="md-nav__item">
374 <a href="ft2-sizes_management.html" title="Size Management" class="md-nav__link">
385 <li class="md-nav__item">
386 <a href="ft2-header_file_macros.html" title="Header File Macros" class="md-nav__link">
402 <li class="md-nav__item md-nav__item--nested">
404 <input class="md-toggle md-nav__toggle" data-md-toggle="nav-5" type="checkbox" id="nav-5">
406 <label class="md-nav__link" for="nav-5">
409 <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
410 <label class="md-nav__title" for="nav-5">
413 <ul class="md-nav__list" data-md-scrollfix>
421 <li class="md-nav__item">
422 <a href="ft2-multiple_masters.html" title="Multiple Masters" class="md-nav__link">
433 <li class="md-nav__item">
434 <a href="ft2-truetype_tables.html" title="TrueType Tables" class="md-nav__link">
445 <li class="md-nav__item">
446 <a href="ft2-type1_tables.html" title="Type 1 Tables" class="md-nav__link">
457 <li class="md-nav__item">
458 <a href="ft2-sfnt_names.html" title="SFNT Names" class="md-nav__link">
469 <li class="md-nav__item">
470 <a href="ft2-bdf_fonts.html" title="BDF and PCF Files" class="md-nav__link">
481 <li class="md-nav__item">
482 <a href="ft2-cid_fonts.html" title="CID Fonts" class="md-nav__link">
493 <li class="md-nav__item">
494 <a href="ft2-pfr_fonts.html" title="PFR Fonts" class="md-nav__link">
505 <li class="md-nav__item">
506 <a href="ft2-winfnt_fonts.html" title="Window FNT Files" class="md-nav__link">
517 <li class="md-nav__item">
518 <a href="ft2-font_formats.html" title="Font Formats" class="md-nav__link">
529 <li class="md-nav__item">
530 <a href="ft2-gasp_table.html" title="Gasp Table" class="md-nav__link">
546 <li class="md-nav__item md-nav__item--nested">
548 <input class="md-toggle md-nav__toggle" data-md-toggle="nav-6" type="checkbox" id="nav-6">
550 <label class="md-nav__link" for="nav-6">
551 Controlling FreeType Modules
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
557 <ul class="md-nav__list" data-md-scrollfix>
565 <li class="md-nav__item">
566 <a href="ft2-auto_hinter.html" title="The auto-hinter" class="md-nav__link">
577 <li class="md-nav__item">
578 <a href="ft2-cff_driver.html" title="The CFF driver" class="md-nav__link">
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
601 <li class="md-nav__item">
602 <a href="ft2-tt_driver.html" title="The TrueType driver" class="md-nav__link">
613 <li class="md-nav__item">
614 <a href="ft2-pcf_driver.html" title="The PCF driver" class="md-nav__link">
625 <li class="md-nav__item">
626 <a href="ft2-properties.html" title="Driver properties" class="md-nav__link">
637 <li class="md-nav__item">
638 <a href="ft2-parameter_tags.html" title="Parameter Tags" class="md-nav__link">
649 <li class="md-nav__item">
650 <a href="ft2-lcd_rendering.html" title="Subpixel Rendering" class="md-nav__link">
666 <li class="md-nav__item md-nav__item--nested">
668 <input class="md-toggle md-nav__toggle" data-md-toggle="nav-7" type="checkbox" id="nav-7">
670 <label class="md-nav__link" for="nav-7">
673 <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
674 <label class="md-nav__title" for="nav-7">
677 <ul class="md-nav__list" data-md-scrollfix>
685 <li class="md-nav__item">
686 <a href="ft2-cache_subsystem.html" title="Cache Sub-System" class="md-nav__link">
704 <li class="md-nav__item md-nav__item--active md-nav__item--nested">
706 <input class="md-toggle md-nav__toggle" data-md-toggle="nav-8" type="checkbox" id="nav-8" checked>
708 <label class="md-nav__link" for="nav-8">
711 <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
712 <label class="md-nav__title" for="nav-8">
715 <ul class="md-nav__list" data-md-scrollfix>
723 <li class="md-nav__item">
724 <a href="ft2-computations.html" title="Computations" class="md-nav__link">
735 <li class="md-nav__item">
736 <a href="ft2-list_processing.html" title="List Processing" class="md-nav__link">
747 <li class="md-nav__item">
748 <a href="ft2-outline_processing.html" title="Outline Processing" class="md-nav__link">
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
771 <li class="md-nav__item">
772 <a href="ft2-bitmap_handling.html" title="Bitmap Handling" class="md-nav__link">
783 <li class="md-nav__item">
784 <a href="ft2-raster.html" title="Scanline Converter" class="md-nav__link">
795 <li class="md-nav__item">
796 <a href="ft2-glyph_stroker.html" title="Glyph Stroker" class="md-nav__link">
809 <li class="md-nav__item md-nav__item--active">
811 <input class="md-toggle md-nav__toggle" data-md-toggle="toc" type="checkbox" id="__toc">
816 <label class="md-nav__link md-nav__link--active" for="__toc">
820 <a href="ft2-system_interface.html" title="System Interface" class="md-nav__link md-nav__link--active">
825 <nav class="md-nav md-nav--secondary">
831 <label class="md-nav__title" for="__toc">Table of contents</label>
832 <ul class="md-nav__list" data-md-scrollfix>
834 <li class="md-nav__item">
835 <a href="#synopsis" class="md-nav__link">
841 <li class="md-nav__item">
842 <a href="#ft_memory" class="md-nav__link">
848 <li class="md-nav__item">
849 <a href="#ft_alloc_func" class="md-nav__link">
855 <li class="md-nav__item">
856 <a href="#ft_free_func" class="md-nav__link">
862 <li class="md-nav__item">
863 <a href="#ft_realloc_func" class="md-nav__link">
869 <li class="md-nav__item">
870 <a href="#ft_memoryrec" class="md-nav__link">
876 <li class="md-nav__item">
877 <a href="#ft_stream" class="md-nav__link">
883 <li class="md-nav__item">
884 <a href="#ft_streamdesc" class="md-nav__link">
890 <li class="md-nav__item">
891 <a href="#ft_stream_iofunc" class="md-nav__link">
897 <li class="md-nav__item">
898 <a href="#ft_stream_closefunc" class="md-nav__link">
904 <li class="md-nav__item">
905 <a href="#ft_streamrec" class="md-nav__link">
927 <li class="md-nav__item">
928 <a href="ft2-module_management.html" title="Module Management" class="md-nav__link">
939 <li class="md-nav__item">
940 <a href="ft2-gzip.html" title="GZIP Streams" class="md-nav__link">
951 <li class="md-nav__item">
952 <a href="ft2-lzw.html" title="LZW Streams" class="md-nav__link">
963 <li class="md-nav__item">
964 <a href="ft2-bzip2.html" title="BZIP2 Streams" class="md-nav__link">
980 <li class="md-nav__item md-nav__item--nested">
982 <input class="md-toggle md-nav__toggle" data-md-toggle="nav-9" type="checkbox" id="nav-9">
984 <label class="md-nav__link" for="nav-9">
987 <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
988 <label class="md-nav__title" for="nav-9">
991 <ul class="md-nav__list" data-md-scrollfix>
999 <li class="md-nav__item">
1000 <a href="ft2-error_enumerations.html" title="Error Enumerations" class="md-nav__link">
1011 <li class="md-nav__item">
1012 <a href="ft2-error_code_values.html" title="Error Code Values" class="md-nav__link">
1028 <li class="md-nav__item md-nav__item--nested">
1030 <input class="md-toggle md-nav__toggle" data-md-toggle="nav-10" type="checkbox" id="nav-10">
1032 <label class="md-nav__link" for="nav-10">
1035 <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
1036 <label class="md-nav__title" for="nav-10">
1039 <ul class="md-nav__list" data-md-scrollfix>
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
1059 <li class="md-nav__item">
1060 <a href="ft2-incremental.html" title="Incremental Loading" class="md-nav__link">
1071 <li class="md-nav__item">
1072 <a href="ft2-truetype_engine.html" title="The TrueType Engine" class="md-nav__link">
1083 <li class="md-nav__item">
1084 <a href="ft2-ot_validation.html" title="OpenType Validation" class="md-nav__link">
1102 <div class="md-sidebar md-sidebar--secondary" data-md-component="toc">
1103 <div class="md-sidebar__scrollwrap">
1104 <div class="md-sidebar__inner">
1106 <nav class="md-nav md-nav--secondary">
1112 <label class="md-nav__title" for="__toc">Table of contents</label>
1113 <ul class="md-nav__list" data-md-scrollfix>
1115 <li class="md-nav__item">
1116 <a href="#synopsis" class="md-nav__link">
1122 <li class="md-nav__item">
1123 <a href="#ft_memory" class="md-nav__link">
1129 <li class="md-nav__item">
1130 <a href="#ft_alloc_func" class="md-nav__link">
1136 <li class="md-nav__item">
1137 <a href="#ft_free_func" class="md-nav__link">
1143 <li class="md-nav__item">
1144 <a href="#ft_realloc_func" class="md-nav__link">
1150 <li class="md-nav__item">
1151 <a href="#ft_memoryrec" class="md-nav__link">
1157 <li class="md-nav__item">
1158 <a href="#ft_stream" class="md-nav__link">
1164 <li class="md-nav__item">
1165 <a href="#ft_streamdesc" class="md-nav__link">
1171 <li class="md-nav__item">
1172 <a href="#ft_stream_iofunc" class="md-nav__link">
1178 <li class="md-nav__item">
1179 <a href="#ft_stream_closefunc" class="md-nav__link">
1185 <li class="md-nav__item">
1186 <a href="#ft_streamrec" class="md-nav__link">
1204 <div class="md-content">
1205 <article class="md-content__inner md-typeset">
1209 <p><a href="https://www.freetype.org">FreeType</a> » <a href="../">Docs</a> » <a href="index.html#support-api">Support API</a> » System Interface</p>
1211 <h1 id="system-interface">System Interface<a class="headerlink" href="#system-interface" title="Permanent link">¶</a></h1>
1212 <h2 id="synopsis">Synopsis<a class="headerlink" href="#synopsis" title="Permanent link">¶</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">¶</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>;
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>
1222 <h2 id="ft_alloc_func">FT_Alloc_Func<a class="headerlink" href="#ft_alloc_func" title="Permanent link">¶</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 );
1229 <p>A function used to allocate <code>size</code> bytes from <code>memory</code>.</p>
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>
1236 <tr><td class="val" id="size">size</td><td class="desc">
1237 <p>The size in bytes to allocate.</p>
1243 <p>Address of new memory block. 0 in case of failure.</p>
1246 <h2 id="ft_free_func">FT_Free_Func<a class="headerlink" href="#ft_free_func" title="Permanent link">¶</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 );
1253 <p>A function used to release a given block of memory.</p>
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>
1260 <tr><td class="val" id="block">block</td><td class="desc">
1261 <p>The address of the target memory block.</p>
1267 <h2 id="ft_realloc_func">FT_Realloc_Func<a class="headerlink" href="#ft_realloc_func" title="Permanent link">¶</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 );
1276 <p>A function used to re-allocate a given block of memory.</p>
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>
1283 <tr><td class="val" id="cur_size">cur_size</td><td class="desc">
1284 <p>The block's current size in bytes.</p>
1286 <tr><td class="val" id="new_size">new_size</td><td class="desc">
1287 <p>The block's requested new size.</p>
1289 <tr><td class="val" id="block">block</td><td class="desc">
1290 <p>The block's current address.</p>
1296 <p>New block address. 0 in case of memory shortage.</p>
1299 <p>In case of error, the old block must still be available.</p>
1302 <h2 id="ft_memoryrec">FT_MemoryRec<a class="headerlink" href="#ft_memoryrec" title="Permanent link">¶</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_
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;
1313 <p>A structure used to describe a given memory manager to FreeType 2.</p>
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>
1320 <tr><td class="val" id="alloc">alloc</td><td class="desc">
1321 <p>A pointer type to an allocation function.</p>
1323 <tr><td class="val" id="free">free</td><td class="desc">
1324 <p>A pointer type to an memory freeing function.</p>
1326 <tr><td class="val" id="realloc">realloc</td><td class="desc">
1327 <p>A pointer type to a reallocation function.</p>
1333 <h2 id="ft_stream">FT_Stream<a class="headerlink" href="#ft_stream" title="Permanent link">¶</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>;
1338 <p>A handle to an input stream.</p>
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>
1344 <h2 id="ft_streamdesc">FT_StreamDesc<a class="headerlink" href="#ft_streamdesc" title="Permanent link">¶</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_
1348 <span class="keyword">long</span> value;
1349 <span class="keyword">void</span>* pointer;
1351 } <b>FT_StreamDesc</b>;
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>
1357 <h2 id="ft_stream_iofunc">FT_Stream_IoFunc<a class="headerlink" href="#ft_stream_iofunc" title="Permanent link">¶</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 );
1366 <p>A function used to seek and read data from a given input stream.</p>
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>
1373 <tr><td class="val" id="offset">offset</td><td class="desc">
1374 <p>The offset of read in stream (always from start).</p>
1376 <tr><td class="val" id="buffer">buffer</td><td class="desc">
1377 <p>The address of the read buffer.</p>
1379 <tr><td class="val" id="count">count</td><td class="desc">
1380 <p>The number of bytes to read from the stream.</p>
1386 <p>The number of bytes effectively read by the stream.</p>
1389 <p>This function might be called to perform a seek or skip operation with a <code>count</code> of 0. A non-zero return value then indicates an error.</p>
1392 <h2 id="ft_stream_closefunc">FT_Stream_CloseFunc<a class="headerlink" href="#ft_stream_closefunc" title="Permanent link">¶</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 );
1398 <p>A function used to close a given input stream.</p>
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>
1409 <h2 id="ft_streamrec">FT_StreamRec<a class="headerlink" href="#ft_streamrec" title="Permanent link">¶</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_
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;
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;
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;
1426 } <b>FT_StreamRec</b>;
1429 <p>A structure used to describe an input stream.</p>
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>
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>
1440 <tr><td class="val" id="pos">pos</td><td class="desc">
1441 <p>The current position within the stream.</p>
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>
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>
1449 <tr><td class="val" id="read">read</td><td class="desc">
1450 <p>The stream's input function.</p>
1452 <tr><td class="val" id="close">close</td><td class="desc">
1453 <p>The stream's close function.</p>
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>
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>
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>
1483 <footer class="md-footer">
1485 <div class="md-footer-nav">
1486 <nav class="md-footer-nav__inner md-grid">
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>
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">
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">
1512 <div class="md-flex__cell md-flex__cell--shrink">
1513 <i class="md-icon md-icon--arrow-forward md-footer-nav__button"></i>
1520 <div class="md-footer-meta md-typeset">
1521 <div class="md-footer-meta__inner md-grid">
1522 <div class="md-footer-copyright">
1524 <div class="md-footer-copyright__highlight">
1525 Copyright 2020 <a href = "https://www.freetype.org/license.html">The FreeType Project</a>.
1529 <a href="https://www.mkdocs.org" target="_blank" rel="noopener">MkDocs</a>
1531 <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
1532 Material for MkDocs</a>
1541 <script src="assets/javascripts/application.c33a9706.js"></script>
1543 <script>app.initialize({version:"1.1",url:{base:"."}})</script>
1545 <script src="javascripts/extra.js"></script>