🛠️🐜 Antkeeper superbuild with dependencies included https://antkeeper.com
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1616 lines
40 KiB

  1. <!doctype html>
  2. <html lang="en" class="no-js">
  3. <head>
  4. <meta charset="utf-8">
  5. <meta name="viewport" content="width=device-width,initial-scale=1">
  6. <meta name="description" content="API Reference Documentation for FreeType-2.11.0">
  7. <meta name="author" content="FreeType Contributors">
  8. <link rel="icon" href="images/favico.ico">
  9. <meta name="generator" content="mkdocs-1.2.1, mkdocs-material-7.1.9">
  10. <title>System Interface - FreeType-2.11.0 API Reference</title>
  11. <link rel="stylesheet" href="assets/stylesheets/main.ca7ac06f.min.css">
  12. <link rel="stylesheet" href="assets/stylesheets/palette.f1a3b89f.min.css">
  13. <meta name="theme-color" content="#4cae4f">
  14. <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
  15. <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Noto+Serif:300,400,400i,700%7CRoboto+Mono&display=fallback">
  16. <style>:root{--md-text-font-family:"Noto Serif";--md-code-font-family:"Roboto Mono"}</style>
  17. <link rel="stylesheet" href="stylesheets/extra.css">
  18. </head>
  19. <body dir="ltr" data-md-color-scheme="" data-md-color-primary="green" data-md-color-accent="green">
  20. <script>function __prefix(e){return new URL(".",location).pathname+"."+e}function __get(e,t=localStorage){return JSON.parse(t.getItem(__prefix(e)))}</script>
  21. <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
  22. <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
  23. <label class="md-overlay" for="__drawer"></label>
  24. <div data-md-component="skip">
  25. <a href="#system-interface" class="md-skip">
  26. Skip to content
  27. </a>
  28. </div>
  29. <div data-md-component="announce">
  30. </div>
  31. <header class="md-header" data-md-component="header">
  32. <nav class="md-header__inner md-grid" aria-label="Header">
  33. <a href="index.html" title="FreeType-2.11.0 API Reference" class="md-header__button md-logo" aria-label="FreeType-2.11.0 API Reference" data-md-component="logo">
  34. <img src="images/favico.ico" alt="logo">
  35. </a>
  36. <label class="md-header__button md-icon" for="__drawer">
  37. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2z"/></svg>
  38. </label>
  39. <div class="md-header__title" data-md-component="header-title">
  40. <div class="md-header__ellipsis">
  41. <div class="md-header__topic">
  42. <span class="md-ellipsis">
  43. FreeType-2.11.0 API Reference
  44. </span>
  45. </div>
  46. <div class="md-header__topic" data-md-component="header-topic">
  47. <span class="md-ellipsis">
  48. System Interface
  49. </span>
  50. </div>
  51. </div>
  52. </div>
  53. <label class="md-header__button md-icon" for="__search">
  54. <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>
  55. </label>
  56. <div class="md-search" data-md-component="search" role="dialog">
  57. <label class="md-search__overlay" for="__search"></label>
  58. <div class="md-search__inner" role="search">
  59. <form class="md-search__form" name="search">
  60. <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>
  61. <label class="md-search__icon md-icon" for="__search">
  62. <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>
  63. <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>
  64. </label>
  65. <button type="reset" class="md-search__icon md-icon" aria-label="Clear" tabindex="-1">
  66. <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>
  67. </button>
  68. </form>
  69. <div class="md-search__output">
  70. <div class="md-search__scrollwrap" data-md-scrollfix>
  71. <div class="md-search-result" data-md-component="search-result">
  72. <div class="md-search-result__meta">
  73. Initializing search
  74. </div>
  75. <ol class="md-search-result__list"></ol>
  76. </div>
  77. </div>
  78. </div>
  79. </div>
  80. </div>
  81. </nav>
  82. </header>
  83. <div class="md-container" data-md-component="container">
  84. <main class="md-main" data-md-component="main">
  85. <div class="md-main__inner md-grid">
  86. <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
  87. <div class="md-sidebar__scrollwrap">
  88. <div class="md-sidebar__inner">
  89. <nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
  90. <label class="md-nav__title" for="__drawer">
  91. <a href="index.html" title="FreeType-2.11.0 API Reference" class="md-nav__button md-logo" aria-label="FreeType-2.11.0 API Reference" data-md-component="logo">
  92. <img src="images/favico.ico" alt="logo">
  93. </a>
  94. FreeType-2.11.0 API Reference
  95. </label>
  96. <ul class="md-nav__list" data-md-scrollfix>
  97. <li class="md-nav__item">
  98. <a href="index.html" class="md-nav__link">
  99. TOC
  100. </a>
  101. </li>
  102. <li class="md-nav__item">
  103. <a href="ft2-index.html" class="md-nav__link">
  104. Index
  105. </a>
  106. </li>
  107. <li class="md-nav__item md-nav__item--nested">
  108. <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_3" type="checkbox" id="__nav_3" >
  109. <label class="md-nav__link" for="__nav_3">
  110. General Remarks
  111. <span class="md-nav__icon md-icon"></span>
  112. </label>
  113. <nav class="md-nav" aria-label="General Remarks" data-md-level="1">
  114. <label class="md-nav__title" for="__nav_3">
  115. <span class="md-nav__icon md-icon"></span>
  116. General Remarks
  117. </label>
  118. <ul class="md-nav__list" data-md-scrollfix>
  119. <li class="md-nav__item">
  120. <a href="ft2-preamble.html" class="md-nav__link">
  121. Preamble
  122. </a>
  123. </li>
  124. <li class="md-nav__item">
  125. <a href="ft2-header_inclusion.html" class="md-nav__link">
  126. FreeType's header inclusion scheme
  127. </a>
  128. </li>
  129. <li class="md-nav__item">
  130. <a href="ft2-user_allocation.html" class="md-nav__link">
  131. User allocation
  132. </a>
  133. </li>
  134. </ul>
  135. </nav>
  136. </li>
  137. <li class="md-nav__item md-nav__item--nested">
  138. <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_4" type="checkbox" id="__nav_4" >
  139. <label class="md-nav__link" for="__nav_4">
  140. Core API
  141. <span class="md-nav__icon md-icon"></span>
  142. </label>
  143. <nav class="md-nav" aria-label="Core API" data-md-level="1">
  144. <label class="md-nav__title" for="__nav_4">
  145. <span class="md-nav__icon md-icon"></span>
  146. Core API
  147. </label>
  148. <ul class="md-nav__list" data-md-scrollfix>
  149. <li class="md-nav__item">
  150. <a href="ft2-version.html" class="md-nav__link">
  151. FreeType Version
  152. </a>
  153. </li>
  154. <li class="md-nav__item">
  155. <a href="ft2-basic_types.html" class="md-nav__link">
  156. Basic Data Types
  157. </a>
  158. </li>
  159. <li class="md-nav__item">
  160. <a href="ft2-base_interface.html" class="md-nav__link">
  161. Base Interface
  162. </a>
  163. </li>
  164. <li class="md-nav__item">
  165. <a href="ft2-glyph_variants.html" class="md-nav__link">
  166. Unicode Variation Sequences
  167. </a>
  168. </li>
  169. <li class="md-nav__item">
  170. <a href="ft2-color_management.html" class="md-nav__link">
  171. Glyph Color Management
  172. </a>
  173. </li>
  174. <li class="md-nav__item">
  175. <a href="ft2-layer_management.html" class="md-nav__link">
  176. Glyph Layer Management
  177. </a>
  178. </li>
  179. <li class="md-nav__item">
  180. <a href="ft2-glyph_management.html" class="md-nav__link">
  181. Glyph Management
  182. </a>
  183. </li>
  184. <li class="md-nav__item">
  185. <a href="ft2-mac_specific.html" class="md-nav__link">
  186. Mac Specific Interface
  187. </a>
  188. </li>
  189. <li class="md-nav__item">
  190. <a href="ft2-sizes_management.html" class="md-nav__link">
  191. Size Management
  192. </a>
  193. </li>
  194. <li class="md-nav__item">
  195. <a href="ft2-header_file_macros.html" class="md-nav__link">
  196. Header File Macros
  197. </a>
  198. </li>
  199. </ul>
  200. </nav>
  201. </li>
  202. <li class="md-nav__item md-nav__item--nested">
  203. <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_5" type="checkbox" id="__nav_5" >
  204. <label class="md-nav__link" for="__nav_5">
  205. Format-Specific API
  206. <span class="md-nav__icon md-icon"></span>
  207. </label>
  208. <nav class="md-nav" aria-label="Format-Specific API" data-md-level="1">
  209. <label class="md-nav__title" for="__nav_5">
  210. <span class="md-nav__icon md-icon"></span>
  211. Format-Specific API
  212. </label>
  213. <ul class="md-nav__list" data-md-scrollfix>
  214. <li class="md-nav__item">
  215. <a href="ft2-multiple_masters.html" class="md-nav__link">
  216. Multiple Masters
  217. </a>
  218. </li>
  219. <li class="md-nav__item">
  220. <a href="ft2-truetype_tables.html" class="md-nav__link">
  221. TrueType Tables
  222. </a>
  223. </li>
  224. <li class="md-nav__item">
  225. <a href="ft2-type1_tables.html" class="md-nav__link">
  226. Type 1 Tables
  227. </a>
  228. </li>
  229. <li class="md-nav__item">
  230. <a href="ft2-sfnt_names.html" class="md-nav__link">
  231. SFNT Names
  232. </a>
  233. </li>
  234. <li class="md-nav__item">
  235. <a href="ft2-bdf_fonts.html" class="md-nav__link">
  236. BDF and PCF Files
  237. </a>
  238. </li>
  239. <li class="md-nav__item">
  240. <a href="ft2-cid_fonts.html" class="md-nav__link">
  241. CID Fonts
  242. </a>
  243. </li>
  244. <li class="md-nav__item">
  245. <a href="ft2-pfr_fonts.html" class="md-nav__link">
  246. PFR Fonts
  247. </a>
  248. </li>
  249. <li class="md-nav__item">
  250. <a href="ft2-winfnt_fonts.html" class="md-nav__link">
  251. Window FNT Files
  252. </a>
  253. </li>
  254. <li class="md-nav__item">
  255. <a href="ft2-font_formats.html" class="md-nav__link">
  256. Font Formats
  257. </a>
  258. </li>
  259. <li class="md-nav__item">
  260. <a href="ft2-gasp_table.html" class="md-nav__link">
  261. Gasp Table
  262. </a>
  263. </li>
  264. </ul>
  265. </nav>
  266. </li>
  267. <li class="md-nav__item md-nav__item--nested">
  268. <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_6" type="checkbox" id="__nav_6" >
  269. <label class="md-nav__link" for="__nav_6">
  270. Controlling FreeType Modules
  271. <span class="md-nav__icon md-icon"></span>
  272. </label>
  273. <nav class="md-nav" aria-label="Controlling FreeType Modules" data-md-level="1">
  274. <label class="md-nav__title" for="__nav_6">
  275. <span class="md-nav__icon md-icon"></span>
  276. Controlling FreeType Modules
  277. </label>
  278. <ul class="md-nav__list" data-md-scrollfix>
  279. <li class="md-nav__item">
  280. <a href="ft2-auto_hinter.html" class="md-nav__link">
  281. The auto-hinter
  282. </a>
  283. </li>
  284. <li class="md-nav__item">
  285. <a href="ft2-cff_driver.html" class="md-nav__link">
  286. The CFF driver
  287. </a>
  288. </li>
  289. <li class="md-nav__item">
  290. <a href="ft2-t1_cid_driver.html" class="md-nav__link">
  291. The Type 1 and CID drivers
  292. </a>
  293. </li>
  294. <li class="md-nav__item">
  295. <a href="ft2-tt_driver.html" class="md-nav__link">
  296. The TrueType driver
  297. </a>
  298. </li>
  299. <li class="md-nav__item">
  300. <a href="ft2-pcf_driver.html" class="md-nav__link">
  301. The PCF driver
  302. </a>
  303. </li>
  304. <li class="md-nav__item">
  305. <a href="ft2-properties.html" class="md-nav__link">
  306. Driver properties
  307. </a>
  308. </li>
  309. <li class="md-nav__item">
  310. <a href="ft2-parameter_tags.html" class="md-nav__link">
  311. Parameter Tags
  312. </a>
  313. </li>
  314. <li class="md-nav__item">
  315. <a href="ft2-lcd_rendering.html" class="md-nav__link">
  316. Subpixel Rendering
  317. </a>
  318. </li>
  319. </ul>
  320. </nav>
  321. </li>
  322. <li class="md-nav__item md-nav__item--nested">
  323. <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_7" type="checkbox" id="__nav_7" >
  324. <label class="md-nav__link" for="__nav_7">
  325. Cache Sub-System
  326. <span class="md-nav__icon md-icon"></span>
  327. </label>
  328. <nav class="md-nav" aria-label="Cache Sub-System" data-md-level="1">
  329. <label class="md-nav__title" for="__nav_7">
  330. <span class="md-nav__icon md-icon"></span>
  331. Cache Sub-System
  332. </label>
  333. <ul class="md-nav__list" data-md-scrollfix>
  334. <li class="md-nav__item">
  335. <a href="ft2-cache_subsystem.html" class="md-nav__link">
  336. Cache Sub-System
  337. </a>
  338. </li>
  339. </ul>
  340. </nav>
  341. </li>
  342. <li class="md-nav__item md-nav__item--active md-nav__item--nested">
  343. <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_8" type="checkbox" id="__nav_8" checked>
  344. <label class="md-nav__link" for="__nav_8">
  345. Support API
  346. <span class="md-nav__icon md-icon"></span>
  347. </label>
  348. <nav class="md-nav" aria-label="Support API" data-md-level="1">
  349. <label class="md-nav__title" for="__nav_8">
  350. <span class="md-nav__icon md-icon"></span>
  351. Support API
  352. </label>
  353. <ul class="md-nav__list" data-md-scrollfix>
  354. <li class="md-nav__item">
  355. <a href="ft2-computations.html" class="md-nav__link">
  356. Computations
  357. </a>
  358. </li>
  359. <li class="md-nav__item">
  360. <a href="ft2-list_processing.html" class="md-nav__link">
  361. List Processing
  362. </a>
  363. </li>
  364. <li class="md-nav__item">
  365. <a href="ft2-outline_processing.html" class="md-nav__link">
  366. Outline Processing
  367. </a>
  368. </li>
  369. <li class="md-nav__item">
  370. <a href="ft2-quick_advance.html" class="md-nav__link">
  371. Quick retrieval of advance values
  372. </a>
  373. </li>
  374. <li class="md-nav__item">
  375. <a href="ft2-bitmap_handling.html" class="md-nav__link">
  376. Bitmap Handling
  377. </a>
  378. </li>
  379. <li class="md-nav__item">
  380. <a href="ft2-raster.html" class="md-nav__link">
  381. Scanline Converter
  382. </a>
  383. </li>
  384. <li class="md-nav__item">
  385. <a href="ft2-glyph_stroker.html" class="md-nav__link">
  386. Glyph Stroker
  387. </a>
  388. </li>
  389. <li class="md-nav__item md-nav__item--active">
  390. <input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc">
  391. <label class="md-nav__link md-nav__link--active" for="__toc">
  392. System Interface
  393. <span class="md-nav__icon md-icon"></span>
  394. </label>
  395. <a href="ft2-system_interface.html" class="md-nav__link md-nav__link--active">
  396. System Interface
  397. </a>
  398. <nav class="md-nav md-nav--secondary" aria-label="Table of contents">
  399. <label class="md-nav__title" for="__toc">
  400. <span class="md-nav__icon md-icon"></span>
  401. Table of contents
  402. </label>
  403. <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
  404. <li class="md-nav__item">
  405. <a href="#synopsis" class="md-nav__link">
  406. Synopsis
  407. </a>
  408. </li>
  409. <li class="md-nav__item">
  410. <a href="#ft_memory" class="md-nav__link">
  411. FT_Memory
  412. </a>
  413. </li>
  414. <li class="md-nav__item">
  415. <a href="#ft_alloc_func" class="md-nav__link">
  416. FT_Alloc_Func
  417. </a>
  418. </li>
  419. <li class="md-nav__item">
  420. <a href="#ft_free_func" class="md-nav__link">
  421. FT_Free_Func
  422. </a>
  423. </li>
  424. <li class="md-nav__item">
  425. <a href="#ft_realloc_func" class="md-nav__link">
  426. FT_Realloc_Func
  427. </a>
  428. </li>
  429. <li class="md-nav__item">
  430. <a href="#ft_memoryrec" class="md-nav__link">
  431. FT_MemoryRec
  432. </a>
  433. </li>
  434. <li class="md-nav__item">
  435. <a href="#ft_stream" class="md-nav__link">
  436. FT_Stream
  437. </a>
  438. </li>
  439. <li class="md-nav__item">
  440. <a href="#ft_streamdesc" class="md-nav__link">
  441. FT_StreamDesc
  442. </a>
  443. </li>
  444. <li class="md-nav__item">
  445. <a href="#ft_stream_iofunc" class="md-nav__link">
  446. FT_Stream_IoFunc
  447. </a>
  448. </li>
  449. <li class="md-nav__item">
  450. <a href="#ft_stream_closefunc" class="md-nav__link">
  451. FT_Stream_CloseFunc
  452. </a>
  453. </li>
  454. <li class="md-nav__item">
  455. <a href="#ft_streamrec" class="md-nav__link">
  456. FT_StreamRec
  457. </a>
  458. </li>
  459. </ul>
  460. </nav>
  461. </li>
  462. <li class="md-nav__item">
  463. <a href="ft2-module_management.html" class="md-nav__link">
  464. Module Management
  465. </a>
  466. </li>
  467. <li class="md-nav__item">
  468. <a href="ft2-gzip.html" class="md-nav__link">
  469. GZIP Streams
  470. </a>
  471. </li>
  472. <li class="md-nav__item">
  473. <a href="ft2-lzw.html" class="md-nav__link">
  474. LZW Streams
  475. </a>
  476. </li>
  477. <li class="md-nav__item">
  478. <a href="ft2-bzip2.html" class="md-nav__link">
  479. BZIP2 Streams
  480. </a>
  481. </li>
  482. <li class="md-nav__item">
  483. <a href="ft2-debugging_apis.html" class="md-nav__link">
  484. External Debugging APIs
  485. </a>
  486. </li>
  487. </ul>
  488. </nav>
  489. </li>
  490. <li class="md-nav__item md-nav__item--nested">
  491. <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_9" type="checkbox" id="__nav_9" >
  492. <label class="md-nav__link" for="__nav_9">
  493. Error Codes
  494. <span class="md-nav__icon md-icon"></span>
  495. </label>
  496. <nav class="md-nav" aria-label="Error Codes" data-md-level="1">
  497. <label class="md-nav__title" for="__nav_9">
  498. <span class="md-nav__icon md-icon"></span>
  499. Error Codes
  500. </label>
  501. <ul class="md-nav__list" data-md-scrollfix>
  502. <li class="md-nav__item">
  503. <a href="ft2-error_enumerations.html" class="md-nav__link">
  504. Error Enumerations
  505. </a>
  506. </li>
  507. <li class="md-nav__item">
  508. <a href="ft2-error_code_values.html" class="md-nav__link">
  509. Error Code Values
  510. </a>
  511. </li>
  512. </ul>
  513. </nav>
  514. </li>
  515. <li class="md-nav__item md-nav__item--nested">
  516. <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_10" type="checkbox" id="__nav_10" >
  517. <label class="md-nav__link" for="__nav_10">
  518. Miscellaneous
  519. <span class="md-nav__icon md-icon"></span>
  520. </label>
  521. <nav class="md-nav" aria-label="Miscellaneous" data-md-level="1">
  522. <label class="md-nav__title" for="__nav_10">
  523. <span class="md-nav__icon md-icon"></span>
  524. Miscellaneous
  525. </label>
  526. <ul class="md-nav__list" data-md-scrollfix>
  527. <li class="md-nav__item">
  528. <a href="ft2-gx_validation.html" class="md-nav__link">
  529. TrueTypeGX/AAT Validation
  530. </a>
  531. </li>
  532. <li class="md-nav__item">
  533. <a href="ft2-incremental.html" class="md-nav__link">
  534. Incremental Loading
  535. </a>
  536. </li>
  537. <li class="md-nav__item">
  538. <a href="ft2-truetype_engine.html" class="md-nav__link">
  539. The TrueType Engine
  540. </a>
  541. </li>
  542. <li class="md-nav__item">
  543. <a href="ft2-ot_validation.html" class="md-nav__link">
  544. OpenType Validation
  545. </a>
  546. </li>
  547. </ul>
  548. </nav>
  549. </li>
  550. </ul>
  551. </nav>
  552. </div>
  553. </div>
  554. </div>
  555. <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
  556. <div class="md-sidebar__scrollwrap">
  557. <div class="md-sidebar__inner">
  558. <nav class="md-nav md-nav--secondary" aria-label="Table of contents">
  559. <label class="md-nav__title" for="__toc">
  560. <span class="md-nav__icon md-icon"></span>
  561. Table of contents
  562. </label>
  563. <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
  564. <li class="md-nav__item">
  565. <a href="#synopsis" class="md-nav__link">
  566. Synopsis
  567. </a>
  568. </li>
  569. <li class="md-nav__item">
  570. <a href="#ft_memory" class="md-nav__link">
  571. FT_Memory
  572. </a>
  573. </li>
  574. <li class="md-nav__item">
  575. <a href="#ft_alloc_func" class="md-nav__link">
  576. FT_Alloc_Func
  577. </a>
  578. </li>
  579. <li class="md-nav__item">
  580. <a href="#ft_free_func" class="md-nav__link">
  581. FT_Free_Func
  582. </a>
  583. </li>
  584. <li class="md-nav__item">
  585. <a href="#ft_realloc_func" class="md-nav__link">
  586. FT_Realloc_Func
  587. </a>
  588. </li>
  589. <li class="md-nav__item">
  590. <a href="#ft_memoryrec" class="md-nav__link">
  591. FT_MemoryRec
  592. </a>
  593. </li>
  594. <li class="md-nav__item">
  595. <a href="#ft_stream" class="md-nav__link">
  596. FT_Stream
  597. </a>
  598. </li>
  599. <li class="md-nav__item">
  600. <a href="#ft_streamdesc" class="md-nav__link">
  601. FT_StreamDesc
  602. </a>
  603. </li>
  604. <li class="md-nav__item">
  605. <a href="#ft_stream_iofunc" class="md-nav__link">
  606. FT_Stream_IoFunc
  607. </a>
  608. </li>
  609. <li class="md-nav__item">
  610. <a href="#ft_stream_closefunc" class="md-nav__link">
  611. FT_Stream_CloseFunc
  612. </a>
  613. </li>
  614. <li class="md-nav__item">
  615. <a href="#ft_streamrec" class="md-nav__link">
  616. FT_StreamRec
  617. </a>
  618. </li>
  619. </ul>
  620. </nav>
  621. </div>
  622. </div>
  623. </div>
  624. <div class="md-content" data-md-component="content">
  625. <article class="md-content__inner md-typeset">
  626. <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>
  627. <hr />
  628. <h1 id="system-interface">System Interface<a class="headerlink" href="#system-interface" title="Permanent link">&para;</a></h1>
  629. <h2 id="synopsis">Synopsis<a class="headerlink" href="#synopsis" title="Permanent link">&para;</a></h2>
  630. <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>
  631. <h2 id="ft_memory">FT_Memory<a class="headerlink" href="#ft_memory" title="Permanent link">&para;</a></h2>
  632. <p>Defined in FT_SYSTEM_H (freetype/ftsystem.h).</p>
  633. <div class = "codehilite"><pre><code> <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_MemoryRec_* <b>FT_Memory</b>;
  634. </code></pre></div>
  635. <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>
  636. <hr>
  637. <h2 id="ft_alloc_func">FT_Alloc_Func<a class="headerlink" href="#ft_alloc_func" title="Permanent link">&para;</a></h2>
  638. <p>Defined in FT_SYSTEM_H (freetype/ftsystem.h).</p>
  639. <div class = "codehilite"><pre><code> <span class="keyword">typedef</span> <span class="keyword">void</span>*
  640. (*<b>FT_Alloc_Func</b>)( <a href="ft2-system_interface.html#ft_memory">FT_Memory</a> memory,
  641. <span class="keyword">long</span> size );
  642. </code></pre></div>
  643. <p>A function used to allocate <code>size</code> bytes from <code>memory</code>.</p>
  644. <h4>input</h4>
  645. <table class="fields">
  646. <tr><td class="val" id="memory">memory</td><td class="desc">
  647. <p>A handle to the source memory manager.</p>
  648. </td></tr>
  649. <tr><td class="val" id="size">size</td><td class="desc">
  650. <p>The size in bytes to allocate.</p>
  651. </td></tr>
  652. </table>
  653. <h4>return</h4>
  654. <p>Address of new memory block. 0&nbsp;in case of failure.</p>
  655. <hr>
  656. <h2 id="ft_free_func">FT_Free_Func<a class="headerlink" href="#ft_free_func" title="Permanent link">&para;</a></h2>
  657. <p>Defined in FT_SYSTEM_H (freetype/ftsystem.h).</p>
  658. <div class = "codehilite"><pre><code> <span class="keyword">typedef</span> <span class="keyword">void</span>
  659. (*<b>FT_Free_Func</b>)( <a href="ft2-system_interface.html#ft_memory">FT_Memory</a> memory,
  660. <span class="keyword">void</span>* block );
  661. </code></pre></div>
  662. <p>A function used to release a given block of memory.</p>
  663. <h4>input</h4>
  664. <table class="fields">
  665. <tr><td class="val" id="memory">memory</td><td class="desc">
  666. <p>A handle to the source memory manager.</p>
  667. </td></tr>
  668. <tr><td class="val" id="block">block</td><td class="desc">
  669. <p>The address of the target memory block.</p>
  670. </td></tr>
  671. </table>
  672. <hr>
  673. <h2 id="ft_realloc_func">FT_Realloc_Func<a class="headerlink" href="#ft_realloc_func" title="Permanent link">&para;</a></h2>
  674. <p>Defined in FT_SYSTEM_H (freetype/ftsystem.h).</p>
  675. <div class = "codehilite"><pre><code> <span class="keyword">typedef</span> <span class="keyword">void</span>*
  676. (*<b>FT_Realloc_Func</b>)( <a href="ft2-system_interface.html#ft_memory">FT_Memory</a> memory,
  677. <span class="keyword">long</span> cur_size,
  678. <span class="keyword">long</span> new_size,
  679. <span class="keyword">void</span>* block );
  680. </code></pre></div>
  681. <p>A function used to re-allocate a given block of memory.</p>
  682. <h4>input</h4>
  683. <table class="fields">
  684. <tr><td class="val" id="memory">memory</td><td class="desc">
  685. <p>A handle to the source memory manager.</p>
  686. </td></tr>
  687. <tr><td class="val" id="cur_size">cur_size</td><td class="desc">
  688. <p>The block's current size in bytes.</p>
  689. </td></tr>
  690. <tr><td class="val" id="new_size">new_size</td><td class="desc">
  691. <p>The block's requested new size.</p>
  692. </td></tr>
  693. <tr><td class="val" id="block">block</td><td class="desc">
  694. <p>The block's current address.</p>
  695. </td></tr>
  696. </table>
  697. <h4>return</h4>
  698. <p>New block address. 0&nbsp;in case of memory shortage.</p>
  699. <h4>note</h4>
  700. <p>In case of error, the old block must still be available.</p>
  701. <hr>
  702. <h2 id="ft_memoryrec">FT_MemoryRec<a class="headerlink" href="#ft_memoryrec" title="Permanent link">&para;</a></h2>
  703. <p>Defined in FT_SYSTEM_H (freetype/ftsystem.h).</p>
  704. <div class = "codehilite"><pre><code> <span class="keyword">struct</span> FT_MemoryRec_
  705. {
  706. <span class="keyword">void</span>* user;
  707. <a href="ft2-system_interface.html#ft_alloc_func">FT_Alloc_Func</a> alloc;
  708. <a href="ft2-system_interface.html#ft_free_func">FT_Free_Func</a> free;
  709. <a href="ft2-system_interface.html#ft_realloc_func">FT_Realloc_Func</a> realloc;
  710. };
  711. </code></pre></div>
  712. <p>A structure used to describe a given memory manager to FreeType&nbsp;2.</p>
  713. <h4>fields</h4>
  714. <table class="fields">
  715. <tr><td class="val" id="user">user</td><td class="desc">
  716. <p>A generic typeless pointer for user data.</p>
  717. </td></tr>
  718. <tr><td class="val" id="alloc">alloc</td><td class="desc">
  719. <p>A pointer type to an allocation function.</p>
  720. </td></tr>
  721. <tr><td class="val" id="free">free</td><td class="desc">
  722. <p>A pointer type to an memory freeing function.</p>
  723. </td></tr>
  724. <tr><td class="val" id="realloc">realloc</td><td class="desc">
  725. <p>A pointer type to a reallocation function.</p>
  726. </td></tr>
  727. </table>
  728. <hr>
  729. <h2 id="ft_stream">FT_Stream<a class="headerlink" href="#ft_stream" title="Permanent link">&para;</a></h2>
  730. <p>Defined in FT_SYSTEM_H (freetype/ftsystem.h).</p>
  731. <div class = "codehilite"><pre><code> <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_StreamRec_* <b>FT_Stream</b>;
  732. </code></pre></div>
  733. <p>A handle to an input stream.</p>
  734. <h4>also</h4>
  735. <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>
  736. <hr>
  737. <h2 id="ft_streamdesc">FT_StreamDesc<a class="headerlink" href="#ft_streamdesc" title="Permanent link">&para;</a></h2>
  738. <p>Defined in FT_SYSTEM_H (freetype/ftsystem.h).</p>
  739. <div class = "codehilite"><pre><code> <span class="keyword">typedef</span> <span class="keyword">union</span> FT_StreamDesc_
  740. {
  741. <span class="keyword">long</span> value;
  742. <span class="keyword">void</span>* pointer;
  743. } <b>FT_StreamDesc</b>;
  744. </code></pre></div>
  745. <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>
  746. <hr>
  747. <h2 id="ft_stream_iofunc">FT_Stream_IoFunc<a class="headerlink" href="#ft_stream_iofunc" title="Permanent link">&para;</a></h2>
  748. <p>Defined in FT_SYSTEM_H (freetype/ftsystem.h).</p>
  749. <div class = "codehilite"><pre><code> <span class="keyword">typedef</span> <span class="keyword">unsigned</span> <span class="keyword">long</span>
  750. (*<b>FT_Stream_IoFunc</b>)( <a href="ft2-system_interface.html#ft_stream">FT_Stream</a> stream,
  751. <span class="keyword">unsigned</span> <span class="keyword">long</span> offset,
  752. <span class="keyword">unsigned</span> <span class="keyword">char</span>* buffer,
  753. <span class="keyword">unsigned</span> <span class="keyword">long</span> count );
  754. </code></pre></div>
  755. <p>A function used to seek and read data from a given input stream.</p>
  756. <h4>input</h4>
  757. <table class="fields">
  758. <tr><td class="val" id="stream">stream</td><td class="desc">
  759. <p>A handle to the source stream.</p>
  760. </td></tr>
  761. <tr><td class="val" id="offset">offset</td><td class="desc">
  762. <p>The offset of read in stream (always from start).</p>
  763. </td></tr>
  764. <tr><td class="val" id="buffer">buffer</td><td class="desc">
  765. <p>The address of the read buffer.</p>
  766. </td></tr>
  767. <tr><td class="val" id="count">count</td><td class="desc">
  768. <p>The number of bytes to read from the stream.</p>
  769. </td></tr>
  770. </table>
  771. <h4>return</h4>
  772. <p>The number of bytes effectively read by the stream.</p>
  773. <h4>note</h4>
  774. <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>
  775. <hr>
  776. <h2 id="ft_stream_closefunc">FT_Stream_CloseFunc<a class="headerlink" href="#ft_stream_closefunc" title="Permanent link">&para;</a></h2>
  777. <p>Defined in FT_SYSTEM_H (freetype/ftsystem.h).</p>
  778. <div class = "codehilite"><pre><code> <span class="keyword">typedef</span> <span class="keyword">void</span>
  779. (*<b>FT_Stream_CloseFunc</b>)( <a href="ft2-system_interface.html#ft_stream">FT_Stream</a> stream );
  780. </code></pre></div>
  781. <p>A function used to close a given input stream.</p>
  782. <h4>input</h4>
  783. <table class="fields">
  784. <tr><td class="val" id="stream">stream</td><td class="desc">
  785. <p>A handle to the target stream.</p>
  786. </td></tr>
  787. </table>
  788. <hr>
  789. <h2 id="ft_streamrec">FT_StreamRec<a class="headerlink" href="#ft_streamrec" title="Permanent link">&para;</a></h2>
  790. <p>Defined in FT_SYSTEM_H (freetype/ftsystem.h).</p>
  791. <div class = "codehilite"><pre><code> <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_StreamRec_
  792. {
  793. <span class="keyword">unsigned</span> <span class="keyword">char</span>* base;
  794. <span class="keyword">unsigned</span> <span class="keyword">long</span> size;
  795. <span class="keyword">unsigned</span> <span class="keyword">long</span> pos;
  796. <a href="ft2-system_interface.html#ft_streamdesc">FT_StreamDesc</a> descriptor;
  797. <a href="ft2-system_interface.html#ft_streamdesc">FT_StreamDesc</a> pathname;
  798. <a href="ft2-system_interface.html#ft_stream_iofunc">FT_Stream_IoFunc</a> read;
  799. <a href="ft2-system_interface.html#ft_stream_closefunc">FT_Stream_CloseFunc</a> close;
  800. <a href="ft2-system_interface.html#ft_memory">FT_Memory</a> memory;
  801. <span class="keyword">unsigned</span> <span class="keyword">char</span>* cursor;
  802. <span class="keyword">unsigned</span> <span class="keyword">char</span>* limit;
  803. } <b>FT_StreamRec</b>;
  804. </code></pre></div>
  805. <p>A structure used to describe an input stream.</p>
  806. <h4>input</h4>
  807. <table class="fields">
  808. <tr><td class="val" id="base">base</td><td class="desc">
  809. <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>
  810. </td></tr>
  811. <tr><td class="val" id="size">size</td><td class="desc">
  812. <p>The stream size in bytes.</p>
  813. <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>
  814. </td></tr>
  815. <tr><td class="val" id="pos">pos</td><td class="desc">
  816. <p>The current position within the stream.</p>
  817. </td></tr>
  818. <tr><td class="val" id="descriptor">descriptor</td><td class="desc">
  819. <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>
  820. </td></tr>
  821. <tr><td class="val" id="pathname">pathname</td><td class="desc">
  822. <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>
  823. </td></tr>
  824. <tr><td class="val" id="read">read</td><td class="desc">
  825. <p>The stream's input function.</p>
  826. </td></tr>
  827. <tr><td class="val" id="close">close</td><td class="desc">
  828. <p>The stream's close function.</p>
  829. </td></tr>
  830. <tr><td class="val" id="memory">memory</td><td class="desc">
  831. <p>The memory manager to use to preload frames. This is set internally by FreeType and shouldn't be touched by stream implementations.</p>
  832. </td></tr>
  833. <tr><td class="val" id="cursor">cursor</td><td class="desc">
  834. <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>
  835. </td></tr>
  836. <tr><td class="val" id="limit">limit</td><td class="desc">
  837. <p>This field is set and used internally by FreeType when parsing frames.</p>
  838. </td></tr>
  839. </table>
  840. <hr>
  841. </article>
  842. </div>
  843. </div>
  844. </main>
  845. <footer class="md-footer">
  846. <nav class="md-footer__inner md-grid" aria-label="Footer">
  847. <a href="ft2-glyph_stroker.html" class="md-footer__link md-footer__link--prev" aria-label="Previous: Glyph Stroker" rel="prev">
  848. <div class="md-footer__button md-icon">
  849. <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>
  850. </div>
  851. <div class="md-footer__title">
  852. <div class="md-ellipsis">
  853. <span class="md-footer__direction">
  854. Previous
  855. </span>
  856. Glyph Stroker
  857. </div>
  858. </div>
  859. </a>
  860. <a href="ft2-module_management.html" class="md-footer__link md-footer__link--next" aria-label="Next: Module Management" rel="next">
  861. <div class="md-footer__title">
  862. <div class="md-ellipsis">
  863. <span class="md-footer__direction">
  864. Next
  865. </span>
  866. Module Management
  867. </div>
  868. </div>
  869. <div class="md-footer__button md-icon">
  870. <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>
  871. </div>
  872. </a>
  873. </nav>
  874. <div class="md-footer-meta md-typeset">
  875. <div class="md-footer-meta__inner md-grid">
  876. <div class="md-footer-copyright">
  877. <div class="md-footer-copyright__highlight">
  878. Copyright 2021 <a href = "https://www.freetype.org/license.html">The FreeType Project</a>.
  879. </div>
  880. Made with
  881. <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
  882. Material for MkDocs
  883. </a>
  884. </div>
  885. </div>
  886. </div>
  887. </footer>
  888. </div>
  889. <div class="md-dialog" data-md-component="dialog">
  890. <div class="md-dialog__inner md-typeset"></div>
  891. </div>
  892. <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>
  893. <script src="assets/javascripts/bundle.82b56eb2.min.js"></script>
  894. <script src="javascripts/extra.js"></script>
  895. </body>
  896. </html>