summaryrefslogtreecommitdiffstats
path: root/modules/freetype2/docs/reference/ft2-tt_driver.html
diff options
context:
space:
mode:
Diffstat (limited to 'modules/freetype2/docs/reference/ft2-tt_driver.html')
-rw-r--r--modules/freetype2/docs/reference/ft2-tt_driver.html143
1 files changed, 6 insertions, 137 deletions
diff --git a/modules/freetype2/docs/reference/ft2-tt_driver.html b/modules/freetype2/docs/reference/ft2-tt_driver.html
index aea3aa720..cc8008ddf 100644
--- a/modules/freetype2/docs/reference/ft2-tt_driver.html
+++ b/modules/freetype2/docs/reference/ft2-tt_driver.html
@@ -1,9 +1,9 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
-"http://www.w3.org/TR/html4/loose.dtd">
+"https://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>FreeType-2.7.1 API Reference</title>
+<title>FreeType-2.9.1 API Reference</title>
<style type="text/css">
a:link { color: #0000EF; }
a:visited { color: #51188E; }
@@ -100,17 +100,13 @@
<body>
<table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table>
-<h1>FreeType-2.7.1 API Reference</h1>
+<h1>FreeType-2.9.1 API Reference</h1>
<h1 id="tt_driver">The TrueType driver</h1>
-<h2>Synopsis</h2>
-<table class="synopsis">
-<tr><td><a href="#interpreter-version">interpreter-version</a></td><td><a href="#TT_INTERPRETER_VERSION_XXX">TT_INTERPRETER_VERSION_XXX</a></td></tr>
-</table>
-
<p>While FreeType's TrueType driver doesn't expose API functions by itself, it is possible to control its behaviour with <a href="ft2-module_management.html#FT_Property_Set">FT_Property_Set</a> and <a href="ft2-module_management.html#FT_Property_Get">FT_Property_Get</a>. The following lists the available properties together with the necessary macros and structures.</p>
<p>The TrueType driver's module name is &lsquo;truetype&rsquo;.</p>
+<p>A single property <a href="ft2-properties.html#interpreter-version">interpreter-version</a> is available, as documented in the &lsquo;<a href="ft2-properties.html#properties">Driver properties</a>&rsquo; section.</p>
<p>We start with a list of definitions, kindly provided by Greg Hitchcock.</p>
<p><i>Bi-Level</i> <i>Rendering</i></p>
<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>
@@ -122,137 +118,10 @@
<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://www.beatstamm.com/typography/RTRCh4.htm#Sec20">http://www.beatstamm.com/typography/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>
<p><i>ClearType</i> <i>Subpixel</i> <i>Positioning</i></p>
<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://www.beatstamm.com/typography/RTRCh4.htm#Sec22">http://www.beatstamm.com/typography/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>
-<p><i>ClearType</i> <i>Backwards</i> <i>Compatibility</i></p>
-<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://www.beatstamm.com/typography/RTRCh4.htm#Sec1">http://www.beatstamm.com/typography/RTRCh4.htm#Sec1</a> and <a href="http://www.microsoft.com/typography/cleartype/truetypecleartype.aspx">http://www.microsoft.com/typography/cleartype/truetypecleartype.aspx</a>. This technique is not to be confused with ClearType compatible widths. ClearType backwards 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 backwards compatibility mode.</p>
+<p><i>ClearType</i> <i>Backward</i> <i>Compatibility</i></p>
+<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://www.beatstamm.com/typography/RTRCh4.htm#Sec1">http://www.beatstamm.com/typography/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>
<p><i>Native</i> <i>ClearType</i> <i>Mode</i></p>
<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>
-<div class="section">
-<h3 id="interpreter-version">interpreter-version</h3>
-<p>Defined in FT_TRUETYPE_DRIVER_H (freetype/ftttdrv.h).</p>
-<pre>
- * Currently, three versions are available, two representing the
- * bytecode interpreter with subpixel hinting support (old `Infinality'
- * code and new stripped-down and higher performance `minimal' code) and
- * one without, respectively. The default is subpixel support if
- * TT_CONFIG_OPTION_SUBPIXEL_HINTING is defined, and no subpixel support
- * otherwise (since it isn't available then).
- *
- * If subpixel hinting is on, many TrueType bytecode instructions behave
- * differently compared to B/W or grayscale rendering (except if `native
- * ClearType' is selected by the font). Microsoft's main idea is to
- * render at a much increased horizontal resolution, then sampling down
- * the created output to subpixel precision. However, many older fonts
- * are not suited to this and must be specially taken care of by
- * applying (hardcoded) tweaks in Microsoft's interpreter.
- *
- * Details on subpixel hinting and some of the necessary tweaks can be
- * found in Greg Hitchcock's whitepaper at
- * `http://www.microsoft.com/typography/cleartype/truetypecleartype.aspx'.
- * Note that FreeType currently doesn't really `subpixel hint' (6x1, 6x2,
- * or 6x5 supersampling) like discussed in the paper. Depending on the
- * chosen interpreter, it simply ignores instructions on vertical stems
- * to arrive at very similar results.
- *
- * The following example code demonstrates how to deactivate subpixel
- * hinting (omitting the error handling).
- *
- * {
- * <a href="ft2-base_interface.html#FT_Library">FT_Library</a> library;
- * <a href="ft2-base_interface.html#FT_Face">FT_Face</a> face;
- * <a href="ft2-basic_types.html#FT_UInt">FT_UInt</a> interpreter_version = <a href="ft2-tt_driver.html#TT_INTERPRETER_VERSION_35">TT_INTERPRETER_VERSION_35</a>;
- *
- *
- * <a href="ft2-base_interface.html#FT_Init_FreeType">FT_Init_FreeType</a>( &amp;library );
- *
- * <a href="ft2-module_management.html#FT_Property_Set">FT_Property_Set</a>( library, "truetype",
- * "interpreter-version",
- * &amp;interpreter_version );
- * }
- *
- * @note:
- * This property can be used with @<a href="ft2-module_management.html#FT_Property_Get">FT_Property_Get</a> also.
- *
- * This property can be set via the `FREETYPE_PROPERTIES' environment
- * variable (using values `35', `38', or `40').
- */
-</pre>
-<hr>
-<table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="middle">[<a href="#">Top</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table></div>
-
-<div class="section">
-<h3 id="TT_INTERPRETER_VERSION_XXX">TT_INTERPRETER_VERSION_XXX</h3>
-<p>Defined in FT_TRUETYPE_DRIVER_H (freetype/ftttdrv.h).</p>
-<pre>
-#define <a href="ft2-tt_driver.html#TT_INTERPRETER_VERSION_35">TT_INTERPRETER_VERSION_35</a> 35
-#define <a href="ft2-tt_driver.html#TT_INTERPRETER_VERSION_38">TT_INTERPRETER_VERSION_38</a> 38
-#define <a href="ft2-tt_driver.html#TT_INTERPRETER_VERSION_40">TT_INTERPRETER_VERSION_40</a> 40
-</pre>
-
-<p>A list of constants used for the <a href="ft2-tt_driver.html#interpreter-version">interpreter-version</a> property to select the hinting engine for Truetype fonts.</p>
-<p>The numeric value in the constant names represents the version number as returned by the &lsquo;GETINFO&rsquo; bytecode instruction.</p>
-
-<h4>values</h4>
-<table class="fields">
-<tr><td class="val" id="TT_INTERPRETER_VERSION_35">TT_INTERPRETER_VERSION_35</td><td class="desc">
-<p>Version&nbsp;35 corresponds to MS rasterizer v.1.7 as used e.g. in Windows&nbsp;98; only grayscale and B/W rasterizing is supported.</p>
-</td></tr>
-<tr><td class="val" id="TT_INTERPRETER_VERSION_38">TT_INTERPRETER_VERSION_38</td><td class="desc">
-<p>Version&nbsp;38 corresponds to MS rasterizer v.1.9; it is roughly equivalent to the hinting provided by DirectWrite ClearType (as can be found, for example, in the Internet Explorer&nbsp;9 running on Windows&nbsp;7). It is used in FreeType to select the &lsquo;Infinality&rsquo; subpixel hinting code. The code may be removed in a future version.</p>
-</td></tr>
-<tr><td class="val" id="TT_INTERPRETER_VERSION_40">TT_INTERPRETER_VERSION_40</td><td class="desc">
-<p>Version&nbsp;40 corresponds to MS rasterizer v.2.1; it is roughly equivalent to the hinting provided by DirectWrite ClearType (as can be found, for example, in Microsoft's Edge Browser on Windows&nbsp;10). It is used in FreeType to select the &lsquo;minimal&rsquo; subpixel hinting code, a stripped-down and higher performance version of the &lsquo;Infinality&rsquo; code.</p>
-</td></tr>
-</table>
-
-<h4>note</h4>
-<p>This property controls the behaviour of the bytecode interpreter and thus how outlines get hinted. It does <b>not</b> control how glyph get rasterized! In particular, it does not control subpixel color filtering.</p>
-<p>If FreeType has not been compiled with the configuration option FT_CONFIG_OPTION_SUBPIXEL_HINTING, selecting version&nbsp;38 or&nbsp;40 causes an &lsquo;FT_Err_Unimplemented_Feature&rsquo; error.</p>
-<p>Depending on the graphics framework, Microsoft uses different bytecode and rendering engines. As a consequence, the version numbers returned by a call to the &lsquo;GETINFO&rsquo; bytecode instruction are more convoluted than desired.</p>
-<p>Here are two tables that try to shed some light on the possible values for the MS rasterizer engine, together with the additional features introduced by it.</p>
-<pre class="colored">
- GETINFO framework version feature
- -------------------------------------------------------------------
- 3 GDI (Win 3.1), v1.0 16-bit, first version
- TrueImage
- 33 GDI (Win NT 3.1), v1.5 32-bit
- HP Laserjet
- 34 GDI (Win 95) v1.6 font smoothing,
- new SCANTYPE opcode
- 35 GDI (Win 98/2000) v1.7 (UN)SCALED_COMPONENT_OFFSET
- bits in composite glyphs
- 36 MGDI (Win CE 2) v1.6+ classic ClearType
- 37 GDI (XP and later), v1.8 ClearType
- GDI+ old (before Vista)
- 38 GDI+ old (Vista, Win 7), v1.9 subpixel ClearType,
- WPF Y-direction ClearType,
- additional error checking
- 39 DWrite (before Win 8) v2.0 subpixel ClearType flags
- in GETINFO opcode,
- bug fixes
- 40 GDI+ (after Win 7), v2.1 Y-direction ClearType flag
- DWrite (Win 8) in GETINFO opcode,
- Gray ClearType
-</pre>
-<p>The &lsquo;version&rsquo; field gives a rough orientation only, since some applications provided certain features much earlier (as an example, Microsoft Reader used subpixel and Y-direction ClearType already in Windows 2000). Similarly, updates to a given framework might include improved hinting support.</p>
-<pre class="colored">
- version sampling rendering comment
- x y x y
- --------------------------------------------------------------
- v1.0 normal normal B/W B/W bi-level
- v1.6 high high gray gray grayscale
- v1.8 high normal color-filter B/W (GDI) ClearType
- v1.9 high high color-filter gray Color ClearType
- v2.1 high normal gray B/W Gray ClearType
- v2.1 high high gray gray Gray ClearType
-</pre>
-<p>Color and Gray ClearType are the two available variants of &lsquo;Y-direction ClearType&rsquo;, meaning grayscale rasterization along the Y-direction; the name used in the TrueType specification for this feature is &lsquo;symmetric smoothing&rsquo;. &lsquo;Classic ClearType&rsquo; is the original algorithm used before introducing a modified version in Win&nbsp;XP. Another name for v1.6's grayscale rendering is &lsquo;font smoothing&rsquo;, and &lsquo;Color ClearType&rsquo; is sometimes also called &lsquo;DWrite ClearType&rsquo;. To differentiate between today's Color ClearType and the earlier ClearType variant with B/W rendering along the vertical axis, the latter is sometimes called &lsquo;GDI ClearType&rsquo;.</p>
-<p>&lsquo;Normal&rsquo; and &lsquo;high&rsquo; sampling describe the (virtual) resolution to access the rasterized outline after the hinting process. &lsquo;Normal&rsquo; means 1 sample per grid line (i.e., B/W). In the current Microsoft implementation, &lsquo;high&rsquo; means an extra virtual resolution of 16x16 (or 16x1) grid lines per pixel for bytecode instructions like &lsquo;MIRP&rsquo;. After hinting, these 16 grid lines are mapped to 6x5 (or 6x1) grid lines for color filtering if Color ClearType is activated.</p>
-<p>Note that &lsquo;Gray ClearType&rsquo; is essentially the same as v1.6's grayscale rendering. However, the GETINFO instruction handles it differently: v1.6 returns bit&nbsp;12 (hinting for grayscale), while v2.1 returns bits&nbsp;13 (hinting for ClearType), 18 (symmetrical smoothing), and&nbsp;19 (Gray ClearType). Also, this mode respects bits 2 and&nbsp;3 for the version&nbsp;1 gasp table exclusively (like Color ClearType), while v1.6 only respects the values of version&nbsp;0 (bits 0 and&nbsp;1).</p>
-<p>Keep in mind that the features of the above interpreter versions might not map exactly to FreeType features or behavior because it is a fundamentally different library with different internals.</p>
-
-<hr>
-<table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="middle">[<a href="#">Top</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table></div>
-
</body>
</html>