🛠️🐜 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.

1247 lines
30 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>The TrueType driver - 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="#the-truetype-driver" 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. The TrueType driver
  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--active md-nav__item--nested">
  268. <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_6" type="checkbox" id="__nav_6" checked>
  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 md-nav__item--active">
  295. <input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc">
  296. <label class="md-nav__link md-nav__link--active" for="__toc">
  297. The TrueType driver
  298. <span class="md-nav__icon md-icon"></span>
  299. </label>
  300. <a href="ft2-tt_driver.html" class="md-nav__link md-nav__link--active">
  301. The TrueType driver
  302. </a>
  303. <nav class="md-nav md-nav--secondary" aria-label="Table of contents">
  304. <label class="md-nav__title" for="__toc">
  305. <span class="md-nav__icon md-icon"></span>
  306. Table of contents
  307. </label>
  308. <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
  309. <li class="md-nav__item">
  310. <a href="#synopsis" class="md-nav__link">
  311. Synopsis
  312. </a>
  313. </li>
  314. </ul>
  315. </nav>
  316. </li>
  317. <li class="md-nav__item">
  318. <a href="ft2-pcf_driver.html" class="md-nav__link">
  319. The PCF driver
  320. </a>
  321. </li>
  322. <li class="md-nav__item">
  323. <a href="ft2-properties.html" class="md-nav__link">
  324. Driver properties
  325. </a>
  326. </li>
  327. <li class="md-nav__item">
  328. <a href="ft2-parameter_tags.html" class="md-nav__link">
  329. Parameter Tags
  330. </a>
  331. </li>
  332. <li class="md-nav__item">
  333. <a href="ft2-lcd_rendering.html" class="md-nav__link">
  334. Subpixel Rendering
  335. </a>
  336. </li>
  337. </ul>
  338. </nav>
  339. </li>
  340. <li class="md-nav__item md-nav__item--nested">
  341. <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_7" type="checkbox" id="__nav_7" >
  342. <label class="md-nav__link" for="__nav_7">
  343. Cache Sub-System
  344. <span class="md-nav__icon md-icon"></span>
  345. </label>
  346. <nav class="md-nav" aria-label="Cache Sub-System" data-md-level="1">
  347. <label class="md-nav__title" for="__nav_7">
  348. <span class="md-nav__icon md-icon"></span>
  349. Cache Sub-System
  350. </label>
  351. <ul class="md-nav__list" data-md-scrollfix>
  352. <li class="md-nav__item">
  353. <a href="ft2-cache_subsystem.html" class="md-nav__link">
  354. Cache Sub-System
  355. </a>
  356. </li>
  357. </ul>
  358. </nav>
  359. </li>
  360. <li class="md-nav__item md-nav__item--nested">
  361. <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_8" type="checkbox" id="__nav_8" >
  362. <label class="md-nav__link" for="__nav_8">
  363. Support API
  364. <span class="md-nav__icon md-icon"></span>
  365. </label>
  366. <nav class="md-nav" aria-label="Support API" data-md-level="1">
  367. <label class="md-nav__title" for="__nav_8">
  368. <span class="md-nav__icon md-icon"></span>
  369. Support API
  370. </label>
  371. <ul class="md-nav__list" data-md-scrollfix>
  372. <li class="md-nav__item">
  373. <a href="ft2-computations.html" class="md-nav__link">
  374. Computations
  375. </a>
  376. </li>
  377. <li class="md-nav__item">
  378. <a href="ft2-list_processing.html" class="md-nav__link">
  379. List Processing
  380. </a>
  381. </li>
  382. <li class="md-nav__item">
  383. <a href="ft2-outline_processing.html" class="md-nav__link">
  384. Outline Processing
  385. </a>
  386. </li>
  387. <li class="md-nav__item">
  388. <a href="ft2-quick_advance.html" class="md-nav__link">
  389. Quick retrieval of advance values
  390. </a>
  391. </li>
  392. <li class="md-nav__item">
  393. <a href="ft2-bitmap_handling.html" class="md-nav__link">
  394. Bitmap Handling
  395. </a>
  396. </li>
  397. <li class="md-nav__item">
  398. <a href="ft2-raster.html" class="md-nav__link">
  399. Scanline Converter
  400. </a>
  401. </li>
  402. <li class="md-nav__item">
  403. <a href="ft2-glyph_stroker.html" class="md-nav__link">
  404. Glyph Stroker
  405. </a>
  406. </li>
  407. <li class="md-nav__item">
  408. <a href="ft2-system_interface.html" class="md-nav__link">
  409. System Interface
  410. </a>
  411. </li>
  412. <li class="md-nav__item">
  413. <a href="ft2-module_management.html" class="md-nav__link">
  414. Module Management
  415. </a>
  416. </li>
  417. <li class="md-nav__item">
  418. <a href="ft2-gzip.html" class="md-nav__link">
  419. GZIP Streams
  420. </a>
  421. </li>
  422. <li class="md-nav__item">
  423. <a href="ft2-lzw.html" class="md-nav__link">
  424. LZW Streams
  425. </a>
  426. </li>
  427. <li class="md-nav__item">
  428. <a href="ft2-bzip2.html" class="md-nav__link">
  429. BZIP2 Streams
  430. </a>
  431. </li>
  432. <li class="md-nav__item">
  433. <a href="ft2-debugging_apis.html" class="md-nav__link">
  434. External Debugging APIs
  435. </a>
  436. </li>
  437. </ul>
  438. </nav>
  439. </li>
  440. <li class="md-nav__item md-nav__item--nested">
  441. <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_9" type="checkbox" id="__nav_9" >
  442. <label class="md-nav__link" for="__nav_9">
  443. Error Codes
  444. <span class="md-nav__icon md-icon"></span>
  445. </label>
  446. <nav class="md-nav" aria-label="Error Codes" data-md-level="1">
  447. <label class="md-nav__title" for="__nav_9">
  448. <span class="md-nav__icon md-icon"></span>
  449. Error Codes
  450. </label>
  451. <ul class="md-nav__list" data-md-scrollfix>
  452. <li class="md-nav__item">
  453. <a href="ft2-error_enumerations.html" class="md-nav__link">
  454. Error Enumerations
  455. </a>
  456. </li>
  457. <li class="md-nav__item">
  458. <a href="ft2-error_code_values.html" class="md-nav__link">
  459. Error Code Values
  460. </a>
  461. </li>
  462. </ul>
  463. </nav>
  464. </li>
  465. <li class="md-nav__item md-nav__item--nested">
  466. <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_10" type="checkbox" id="__nav_10" >
  467. <label class="md-nav__link" for="__nav_10">
  468. Miscellaneous
  469. <span class="md-nav__icon md-icon"></span>
  470. </label>
  471. <nav class="md-nav" aria-label="Miscellaneous" data-md-level="1">
  472. <label class="md-nav__title" for="__nav_10">
  473. <span class="md-nav__icon md-icon"></span>
  474. Miscellaneous
  475. </label>
  476. <ul class="md-nav__list" data-md-scrollfix>
  477. <li class="md-nav__item">
  478. <a href="ft2-gx_validation.html" class="md-nav__link">
  479. TrueTypeGX/AAT Validation
  480. </a>
  481. </li>
  482. <li class="md-nav__item">
  483. <a href="ft2-incremental.html" class="md-nav__link">
  484. Incremental Loading
  485. </a>
  486. </li>
  487. <li class="md-nav__item">
  488. <a href="ft2-truetype_engine.html" class="md-nav__link">
  489. The TrueType Engine
  490. </a>
  491. </li>
  492. <li class="md-nav__item">
  493. <a href="ft2-ot_validation.html" class="md-nav__link">
  494. OpenType Validation
  495. </a>
  496. </li>
  497. </ul>
  498. </nav>
  499. </li>
  500. </ul>
  501. </nav>
  502. </div>
  503. </div>
  504. </div>
  505. <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
  506. <div class="md-sidebar__scrollwrap">
  507. <div class="md-sidebar__inner">
  508. <nav class="md-nav md-nav--secondary" aria-label="Table of contents">
  509. <label class="md-nav__title" for="__toc">
  510. <span class="md-nav__icon md-icon"></span>
  511. Table of contents
  512. </label>
  513. <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
  514. <li class="md-nav__item">
  515. <a href="#synopsis" class="md-nav__link">
  516. Synopsis
  517. </a>
  518. </li>
  519. </ul>
  520. </nav>
  521. </div>
  522. </div>
  523. </div>
  524. <div class="md-content" data-md-component="content">
  525. <article class="md-content__inner md-typeset">
  526. <p><a href="https://www.freetype.org">FreeType</a> &raquo; <a href="../">Docs</a> &raquo; <a href="index.html#controlling-freetype-modules">Controlling FreeType Modules</a> &raquo; The TrueType driver</p>
  527. <hr />
  528. <h1 id="the-truetype-driver">The TrueType driver<a class="headerlink" href="#the-truetype-driver" title="Permanent link">&para;</a></h1>
  529. <h2 id="synopsis">Synopsis<a class="headerlink" href="#synopsis" title="Permanent link">&para;</a></h2>
  530. <p>While FreeType's TrueType driver doesn't expose API functions by itself, it is possible to control its behaviour with <code><a href="ft2-module_management.html#ft_property_set">FT_Property_Set</a></code> and <code><a href="ft2-module_management.html#ft_property_get">FT_Property_Get</a></code>. The following lists the available properties together with the necessary macros and structures.</p>
  531. <p>The TrueType driver's module name is &lsquo;truetype&rsquo;.</p>
  532. <p>A single property <code><a href="ft2-properties.html#interpreter-version">interpreter-version</a></code> is available, as documented in the &lsquo;<a href="ft2-properties.html#properties">Driver properties</a>&rsquo; section.</p>
  533. <p>We start with a list of definitions, kindly provided by Greg Hitchcock.</p>
  534. <p><em>Bi-Level Rendering</em></p>
  535. <p>Monochromatic rendering, exclusively used in the early days of TrueType by both Apple and Microsoft. Microsoft's GDI interface supported hinting of the right-side bearing point, such that the advance width could be non-linear. Most often this was done to achieve some level of glyph symmetry. To enable reasonable performance (e.g., not having to run hinting on all glyphs just to get the widths) there was a bit in the head table indicating if the side bearing was hinted, and additional tables, &lsquo;hdmx&rsquo; and &lsquo;LTSH&rsquo;, to cache hinting widths across multiple sizes and device aspect ratios.</p>
  536. <p><em>Font Smoothing</em></p>
  537. <p>Microsoft's GDI implementation of anti-aliasing. Not traditional anti-aliasing as the outlines were hinted before the sampling. The widths matched the bi-level rendering.</p>
  538. <p><em>ClearType Rendering</em></p>
  539. <p>Technique that uses physical subpixels to improve rendering on LCD (and other) displays. Because of the higher resolution, many methods of improving symmetry in glyphs through hinting the right-side bearing were no longer necessary. This lead to what GDI calls &lsquo;natural widths&rsquo; ClearType, see <a href="http://rastertragedy.com/RTRCh4.htm#Sec21">http://rastertragedy.com/RTRCh4.htm#Sec21</a>. Since hinting has extra resolution, most non-linearity went away, but it is still possible for hints to change the advance widths in this mode.</p>
  540. <p><em>ClearType Compatible Widths</em></p>
  541. <p>One of the earliest challenges with ClearType was allowing the implementation in GDI to be selected without requiring all UI and documents to reflow. To address this, a compatible method of rendering ClearType was added where the font hints are executed once to determine the width in bi-level rendering, and then re-run in ClearType, with the difference in widths being absorbed in the font hints for ClearType (mostly in the white space of hints); see <a href="http://rastertragedy.com/RTRCh4.htm#Sec20">http://rastertragedy.com/RTRCh4.htm#Sec20</a>. Somewhat by definition, compatible width ClearType allows for non-linear widths, but only when the bi-level version has non-linear widths.</p>
  542. <p><em>ClearType Subpixel Positioning</em></p>
  543. <p>One of the nice benefits of ClearType is the ability to more crisply display fractional widths; unfortunately, the GDI model of integer bitmaps did not support this. However, the WPF and Direct Write frameworks do support fractional widths. DWrite calls this &lsquo;natural mode&rsquo;, not to be confused with GDI's &lsquo;natural widths&rsquo;. Subpixel positioning, in the current implementation of Direct Write, unfortunately does not support hinted advance widths, see <a href="http://rastertragedy.com/RTRCh4.htm#Sec22">http://rastertragedy.com/RTRCh4.htm#Sec22</a>. Note that the TrueType interpreter fully allows the advance width to be adjusted in this mode, just the DWrite client will ignore those changes.</p>
  544. <p><em>ClearType Backward Compatibility</em></p>
  545. <p>This is a set of exceptions made in the TrueType interpreter to minimize hinting techniques that were problematic with the extra resolution of ClearType; see <a href="http://rastertragedy.com/RTRCh4.htm#Sec1">http://rastertragedy.com/RTRCh4.htm#Sec1</a> and <a href="https://www.microsoft.com/typography/cleartype/truetypecleartype.aspx">https://www.microsoft.com/typography/cleartype/truetypecleartype.aspx</a>. This technique is not to be confused with ClearType compatible widths. ClearType backward compatibility has no direct impact on changing advance widths, but there might be an indirect impact on disabling some deltas. This could be worked around in backward compatibility mode.</p>
  546. <p><em>Native ClearType Mode</em></p>
  547. <p>(Not to be confused with &lsquo;natural widths&rsquo;.) This mode removes all the exceptions in the TrueType interpreter when running with ClearType. Any issues on widths would still apply, though.</p>
  548. </article>
  549. </div>
  550. </div>
  551. </main>
  552. <footer class="md-footer">
  553. <nav class="md-footer__inner md-grid" aria-label="Footer">
  554. <a href="ft2-t1_cid_driver.html" class="md-footer__link md-footer__link--prev" aria-label="Previous: The Type 1 and CID drivers" rel="prev">
  555. <div class="md-footer__button md-icon">
  556. <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>
  557. </div>
  558. <div class="md-footer__title">
  559. <div class="md-ellipsis">
  560. <span class="md-footer__direction">
  561. Previous
  562. </span>
  563. The Type 1 and CID drivers
  564. </div>
  565. </div>
  566. </a>
  567. <a href="ft2-pcf_driver.html" class="md-footer__link md-footer__link--next" aria-label="Next: The PCF driver" rel="next">
  568. <div class="md-footer__title">
  569. <div class="md-ellipsis">
  570. <span class="md-footer__direction">
  571. Next
  572. </span>
  573. The PCF driver
  574. </div>
  575. </div>
  576. <div class="md-footer__button md-icon">
  577. <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>
  578. </div>
  579. </a>
  580. </nav>
  581. <div class="md-footer-meta md-typeset">
  582. <div class="md-footer-meta__inner md-grid">
  583. <div class="md-footer-copyright">
  584. <div class="md-footer-copyright__highlight">
  585. Copyright 2021 <a href = "https://www.freetype.org/license.html">The FreeType Project</a>.
  586. </div>
  587. Made with
  588. <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
  589. Material for MkDocs
  590. </a>
  591. </div>
  592. </div>
  593. </div>
  594. </footer>
  595. </div>
  596. <div class="md-dialog" data-md-component="dialog">
  597. <div class="md-dialog__inner md-typeset"></div>
  598. </div>
  599. <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>
  600. <script src="assets/javascripts/bundle.82b56eb2.min.js"></script>
  601. <script src="javascripts/extra.js"></script>
  602. </body>
  603. </html>