Imported Upstream version 3.4.0
[platform/upstream/harfbuzz.git] / docs / html / harfbuzz-hb-ot-layout.html
index d61416f..a4380a9 100644 (file)
@@ -3,12 +3,12 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>hb-ot-layout: HarfBuzz Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="HarfBuzz Manual">
-<link rel="up" href="ch13.html" title="OpenType API">
+<link rel="up" href="opentype-api.html" title="OpenType API">
 <link rel="prev" href="harfbuzz-hb-ot-font.html" title="hb-ot-font">
 <link rel="next" href="harfbuzz-hb-ot-math.html" title="hb-ot-math">
-<meta name="generator" content="GTK-Doc V1.32.1 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.32 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -18,7 +18,7 @@
                   <a href="#harfbuzz-hb-ot-layout.description" class="shortcut">Description</a></span>
 </td>
 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<td><a accesskey="u" href="ch13.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="u" href="opentype-api.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
 <td><a accesskey="p" href="harfbuzz-hb-ot-font.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
 <td><a accesskey="n" href="harfbuzz-hb-ot-math.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
 </tr></table>
 <span class="returnvalue">void</span>
 </td>
 <td class="function_name">
-<a class="link" href="harfbuzz-hb-ot-layout.html#hb-ot-layout-closure-lookups" title="hb_ot_layout_closure_lookups ()">hb_ot_layout_closure_lookups</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">void</span>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-hb-ot-layout.html#hb-ot-layout-closure-features" title="hb_ot_layout_closure_features ()">hb_ot_layout_closure_features</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">void</span>
-</td>
-<td class="function_name">
 <a class="link" href="harfbuzz-hb-ot-layout.html#hb-ot-layout-collect-lookups" title="hb_ot_layout_collect_lookups ()">hb_ot_layout_collect_lookups</a> <span class="c_punctuation">()</span>
 </td>
 </tr>
 <a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
 </td>
 <td class="function_name">
-<span class="c_punctuation">(</span><a class="link" href="harfbuzz-hb-ot-layout.html#hb-ot-layout-glyph-sequence-func-t" title="hb_ot_layout_glyph_sequence_func_t ()">*hb_ot_layout_glyph_sequence_func_t</a><span class="c_punctuation">)</span> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
-</td>
-<td class="function_name">
 <a class="link" href="harfbuzz-hb-ot-layout.html#hb-ot-layout-has-glyph-classes" title="hb_ot_layout_has_glyph_classes ()">hb_ot_layout_has_glyph_classes</a> <span class="c_punctuation">()</span>
 </td>
 </tr>
 </tr>
 <tr>
 <td class="function_type">
+<span class="returnvalue">unsigned</span>
+</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-ot-layout.html#hb-ot-layout-lookup-get-glyph-alternates" title="hb_ot_layout_lookup_get_glyph_alternates ()">hb_ot_layout_lookup_get_glyph_alternates</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
 <span class="returnvalue">void</span>
 </td>
 <td class="function_name">
 <a name="hb-ot-tag-to-language"></a><h3>hb_ot_tag_to_language ()</h3>
 <pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-language-t" title="hb_language_t"><span class="returnvalue">hb_language_t</span></a>
 hb_ot_tag_to_language (<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="type">hb_tag_t</span></a> tag</code></em>);</pre>
+<p>Converts a language tag to an <a class="link" href="harfbuzz-hb-common.html#hb-language-t" title="hb_language_t"><span class="type">hb_language_t</span></a>.</p>
+<div class="refsect3">
+<a name="hb-ot-tag-to-language.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>tag</p></td>
+<td class="parameter_description"><p>an language tag</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
 <div class="refsect3">
 <a name="hb-ot-tag-to-language.returns"></a><h4>Returns</h4>
-<p>. </p>
-<p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p>
+<p>The <a class="link" href="harfbuzz-hb-common.html#hb-language-t" title="hb_language_t"><span class="type">hb_language_t</span></a> corresponding to <em class="parameter"><code>tag</code></em>
+. </p>
+<p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>][<acronym title="NULL may be passed as the value in, out, in-out; or as a return value."><span class="acronym">nullable</span></acronym>]</span></p>
 </div>
 <p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
 </div>
@@ -441,6 +442,27 @@ hb_ot_tag_to_language (<em class="parameter"><code><a class="link" href="harfbuz
 <a name="hb-ot-tag-to-script"></a><h3>hb_ot_tag_to_script ()</h3>
 <pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-script-t" title="enum hb_script_t"><span class="returnvalue">hb_script_t</span></a>
 hb_ot_tag_to_script (<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="type">hb_tag_t</span></a> tag</code></em>);</pre>
+<p>Converts a script tag to an <a class="link" href="harfbuzz-hb-common.html#hb-script-t" title="enum hb_script_t"><span class="type">hb_script_t</span></a>.</p>
+<div class="refsect3">
+<a name="hb-ot-tag-to-script.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>tag</p></td>
+<td class="parameter_description"><p>a script tag</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="hb-ot-tag-to-script.returns"></a><h4>Returns</h4>
+<p> The <a class="link" href="harfbuzz-hb-common.html#hb-script-t" title="enum hb_script_t"><span class="type">hb_script_t</span></a> corresponding to <em class="parameter"><code>tag</code></em>
+.</p>
+</div>
 </div>
 <hr>
 <div class="refsect2">
@@ -476,27 +498,27 @@ hb_ot_tags_from_script_and_language (<em class="parameter"><code><a class="link"
 <td class="parameter_name"><p>script_count</p></td>
 <td class="parameter_description"><p>maximum number of script tags to retrieve (IN)
 and actual number of script tags retrieved (OUT). </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for input and for returning results. Default is transfer full."><span class="acronym">inout</span></acronym>][<acronym title="NULL may be passed instead of a pointer to a location."><span class="acronym">optional</span></acronym>]</span></td>
 </tr>
 <tr>
 <td class="parameter_name"><p>script_tags</p></td>
 <td class="parameter_description"><p>array of size at least <em class="parameter"><code>script_count</code></em>
 to store the
 script tag results. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="NULL may be passed instead of a pointer to a location."><span class="acronym">optional</span></acronym>]</span></td>
 </tr>
 <tr>
 <td class="parameter_name"><p>language_count</p></td>
 <td class="parameter_description"><p>maximum number of language tags to retrieve
 (IN) and actual number of language tags retrieved (OUT). </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for input and for returning results. Default is transfer full."><span class="acronym">inout</span></acronym>][<acronym title="NULL may be passed instead of a pointer to a location."><span class="acronym">optional</span></acronym>]</span></td>
 </tr>
 <tr>
 <td class="parameter_name"><p>language_tags</p></td>
 <td class="parameter_description"><p>array of size at least <em class="parameter"><code>language_count</code></em>
 to store
 the language tag results. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="NULL may be passed instead of a pointer to a location."><span class="acronym">optional</span></acronym>]</span></td>
 </tr>
 </tbody>
 </table></div>
@@ -535,16 +557,16 @@ hb_ot_tags_to_script_and_language (<em class="parameter"><code><a class="link" h
 <tr>
 <td class="parameter_name"><p>script</p></td>
 <td class="parameter_description"><p>the <a class="link" href="harfbuzz-hb-common.html#hb-script-t" title="enum hb_script_t"><span class="type">hb_script_t</span></a> corresponding to <em class="parameter"><code>script_tag</code></em>
-(OUT). </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
+. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="NULL may be passed instead of a pointer to a location."><span class="acronym">optional</span></acronym>]</span></td>
 </tr>
 <tr>
 <td class="parameter_name"><p>language</p></td>
 <td class="parameter_description"><p>the <a class="link" href="harfbuzz-hb-common.html#hb-language-t" title="hb_language_t"><span class="type">hb_language_t</span></a> corresponding to <em class="parameter"><code>script_tag</code></em>
 and
 <em class="parameter"><code>language_tag</code></em>
-(OUT). </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
+. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="NULL may be passed instead of a pointer to a location."><span class="acronym">optional</span></acronym>]</span></td>
 </tr>
 </tbody>
 </table></div>
@@ -553,88 +575,6 @@ and
 </div>
 <hr>
 <div class="refsect2">
-<a name="hb-ot-layout-closure-lookups"></a><h3>hb_ot_layout_closure_lookups ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-hb_ot_layout_closure_lookups (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t" title="hb_face_t"><span class="type">hb_face_t</span></a> *face</code></em>,
-                              <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="type">hb_tag_t</span></a> table_tag</code></em>,
-                              <em class="parameter"><code>const <a class="link" href="harfbuzz-hb-set.html#hb-set-t" title="hb_set_t"><span class="type">hb_set_t</span></a> *glyphs</code></em>,
-                              <em class="parameter"><code><a class="link" href="harfbuzz-hb-set.html#hb-set-t" title="hb_set_t"><span class="type">hb_set_t</span></a> *lookup_indexes</code></em>);</pre>
-<p>Returns all inactive lookups reachable from lookup_indices</p>
-<div class="refsect3">
-<a name="hb-ot-layout-closure-lookups.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>face</p></td>
-<td class="parameter_description"><p><a class="link" href="harfbuzz-hb-face.html#hb-face-t" title="hb_face_t"><span class="type">hb_face_t</span></a> to work upon</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>table_tag</p></td>
-<td class="parameter_description"><p>HB_OT_TAG_GSUB or HB_OT_TAG_GPOS</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>lookup_indexes</p></td>
-<td class="parameter_description"><p>lookup_indices collected from feature
-list. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for input and for returning results. Default is transfer full."><span class="acronym">inout</span></acronym>]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p class="since">Since: EXPERIMENTAL</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-ot-layout-closure-features"></a><h3>hb_ot_layout_closure_features ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-hb_ot_layout_closure_features (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t" title="hb_face_t"><span class="type">hb_face_t</span></a> *face</code></em>,
-                               <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="type">hb_tag_t</span></a> table_tag</code></em>,
-                               <em class="parameter"><code>const <a class="link" href="harfbuzz-hb-map.html#hb-map-t" title="hb_map_t"><span class="type">hb_map_t</span></a> *lookup_indexes</code></em>,
-                               <em class="parameter"><code><a class="link" href="harfbuzz-hb-set.html#hb-set-t" title="hb_set_t"><span class="type">hb_set_t</span></a> *feature_indexes</code></em>);</pre>
-<p>Returns all active feature indexes</p>
-<div class="refsect3">
-<a name="hb-ot-layout-closure-features.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>face</p></td>
-<td class="parameter_description"><p><a class="link" href="harfbuzz-hb-face.html#hb-face-t" title="hb_face_t"><span class="type">hb_face_t</span></a> to work upon</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>table_tag</p></td>
-<td class="parameter_description"><p>HB_OT_TAG_GSUB or HB_OT_TAG_GPOS</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>lookup_indexes</p></td>
-<td class="parameter_description"><p>collected active lookup_indices. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for input. Default is transfer none."><span class="acronym">in</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>feature_indexes</p></td>
-<td class="parameter_description"><p>all active feature indexes collected. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p class="since">Since: EXPERIMENTAL</p>
-</div>
-<hr>
-<div class="refsect2">
 <a name="hb-ot-layout-collect-lookups"></a><h3>hb_ot_layout_collect_lookups ()</h3>
 <pre class="programlisting"><span class="returnvalue">void</span>
 hb_ot_layout_collect_lookups (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t" title="hb_face_t"><span class="type">hb_face_t</span></a> *face</code></em>,
@@ -664,7 +604,7 @@ list of features is provided, all features will be queried.</p>
 </tr>
 <tr>
 <td class="parameter_name"><p>table_tag</p></td>
-<td class="parameter_description"><p>HB_OT_TAG_GSUB or HB_OT_TAG_GPOS</p></td>
+<td class="parameter_description"><p><a class="link" href="harfbuzz-hb-ot-layout.html#HB-OT-TAG-GSUB:CAPS" title="HB_OT_TAG_GSUB"><span class="type">HB_OT_TAG_GSUB</span></a> or <a class="link" href="harfbuzz-hb-ot-layout.html#HB-OT-TAG-GPOS:CAPS" title="HB_OT_TAG_GPOS"><span class="type">HB_OT_TAG_GPOS</span></a></p></td>
 <td class="parameter_annotations"> </td>
 </tr>
 <tr>
@@ -723,7 +663,7 @@ features is provided, all features will be queried.</p>
 </tr>
 <tr>
 <td class="parameter_name"><p>table_tag</p></td>
-<td class="parameter_description"><p>HB_OT_TAG_GSUB or HB_OT_TAG_GPOS</p></td>
+<td class="parameter_description"><p><a class="link" href="harfbuzz-hb-ot-layout.html#HB-OT-TAG-GSUB:CAPS" title="HB_OT_TAG_GSUB"><span class="type">HB_OT_TAG_GSUB</span></a> or <a class="link" href="harfbuzz-hb-ot-layout.html#HB-OT-TAG-GPOS:CAPS" title="HB_OT_TAG_GPOS"><span class="type">HB_OT_TAG_GPOS</span></a></p></td>
 <td class="parameter_annotations"> </td>
 </tr>
 <tr>
@@ -763,11 +703,6 @@ hb_ot_layout_feature_get_characters (<em class="parameter"><code><a class="link"
                                      <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> *characters</code></em>);</pre>
 <p>Fetches a list of the characters defined as having a variant under the specified
 "Character Variant" ("cvXX") feature tag.</p>
-<div class="note">Note: If the char_count output value is equal to its input value, then there
-      is a chance there were more characters defined under the feature tag than were
-      returned. This function can be called with incrementally larger start_offset
-      until the char_count output value is lower than its input value, or the size
-      of the characters array can be increased.</div>
 <div class="refsect3">
 <a name="hb-ot-layout-feature-get-characters.parameters"></a><h4>Parameters</h4>
 <div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -801,7 +736,7 @@ hb_ot_layout_feature_get_characters (<em class="parameter"><code><a class="link"
 <td class="parameter_name"><p>char_count</p></td>
 <td class="parameter_description"><p>Input = the maximum number of characters to return;
 Output = the actual number of characters returned (may be zero). </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for input and for returning results. Default is transfer full."><span class="acronym">inout</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for input and for returning results. Default is transfer full."><span class="acronym">inout</span></acronym>][<acronym title="NULL may be passed instead of a pointer to a location."><span class="acronym">optional</span></acronym>]</span></td>
 </tr>
 <tr>
 <td class="parameter_name"><p>characters</p></td>
@@ -848,7 +783,7 @@ begin at the offset provided.</p>
 </tr>
 <tr>
 <td class="parameter_name"><p>table_tag</p></td>
-<td class="parameter_description"><p>HB_OT_TAG_GSUB or HB_OT_TAG_GPOS</p></td>
+<td class="parameter_description"><p><a class="link" href="harfbuzz-hb-ot-layout.html#HB-OT-TAG-GSUB:CAPS" title="HB_OT_TAG_GSUB"><span class="type">HB_OT_TAG_GSUB</span></a> or <a class="link" href="harfbuzz-hb-ot-layout.html#HB-OT-TAG-GPOS:CAPS" title="HB_OT_TAG_GPOS"><span class="type">HB_OT_TAG_GPOS</span></a></p></td>
 <td class="parameter_annotations"> </td>
 </tr>
 <tr>
@@ -865,7 +800,7 @@ begin at the offset provided.</p>
 <td class="parameter_name"><p>lookup_count</p></td>
 <td class="parameter_description"><p>Input = the maximum number of lookups to return;
 Output = the actual number of lookups returned (may be zero). </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for input and for returning results. Default is transfer full."><span class="acronym">inout</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for input and for returning results. Default is transfer full."><span class="acronym">inout</span></acronym>][<acronym title="NULL may be passed instead of a pointer to a location."><span class="acronym">optional</span></acronym>]</span></td>
 </tr>
 <tr>
 <td class="parameter_name"><p>lookup_indexes</p></td>
@@ -875,6 +810,10 @@ Output = the actual number of lookups returned (may be zero). </p></td>
 </tbody>
 </table></div>
 </div>
+<div class="refsect3">
+<a name="hb-ot-layout-feature-get-lookups.returns"></a><h4>Returns</h4>
+<p> Total number of lookups.</p>
+</div>
 <p class="since">Since: <a class="link" href="api-index-0-9-7.html#api-index-0.9.7">0.9.7</a></p>
 </div>
 <hr>
@@ -919,39 +858,39 @@ hb_ot_layout_feature_get_name_ids (<em class="parameter"><code><a class="link" h
 <td class="parameter_name"><p>label_id</p></td>
 <td class="parameter_description"><p>The ‘name’ table name ID that specifies a string
 for a user-interface label for this feature. (May be NULL.). </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="NULL may be passed instead of a pointer to a location."><span class="acronym">optional</span></acronym>]</span></td>
 </tr>
 <tr>
 <td class="parameter_name"><p>tooltip_id</p></td>
 <td class="parameter_description"><p>The ‘name’ table name ID that specifies a string
 that an application can use for tooltip text for this
 feature. (May be NULL.). </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="NULL may be passed instead of a pointer to a location."><span class="acronym">optional</span></acronym>]</span></td>
 </tr>
 <tr>
 <td class="parameter_name"><p>sample_id</p></td>
 <td class="parameter_description"><p>The ‘name’ table name ID that specifies sample text
 that illustrates the effect of this feature. (May be NULL.). </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="NULL may be passed instead of a pointer to a location."><span class="acronym">optional</span></acronym>]</span></td>
 </tr>
 <tr>
 <td class="parameter_name"><p>num_named_parameters</p></td>
 <td class="parameter_description"><p>Number of named parameters. (May be zero.). </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="NULL may be passed instead of a pointer to a location."><span class="acronym">optional</span></acronym>]</span></td>
 </tr>
 <tr>
 <td class="parameter_name"><p>first_param_id</p></td>
 <td class="parameter_description"><p>The first ‘name’ table name ID used to specify
 strings for user-interface labels for the feature
 parameters. (Must be zero if numParameters is zero.). </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="NULL may be passed instead of a pointer to a location."><span class="acronym">optional</span></acronym>]</span></td>
 </tr>
 </tbody>
 </table></div>
 </div>
 <div class="refsect3">
 <a name="hb-ot-layout-feature-get-name-ids.returns"></a><h4>Returns</h4>
-<p> true if data found, false otherwise</p>
+<p> <code class="literal">true</code> if data found, <code class="literal">false</code> otherwise</p>
 </div>
 <p class="since">Since: <a class="link" href="api-index-2-0-0.html#api-index-2.0.0">2.0.0</a></p>
 </div>
@@ -986,7 +925,7 @@ variations index. The list returned will begin at the offset provided.</p>
 </tr>
 <tr>
 <td class="parameter_name"><p>table_tag</p></td>
-<td class="parameter_description"><p>HB_OT_TAG_GSUB or HB_OT_TAG_GPOS</p></td>
+<td class="parameter_description"><p><a class="link" href="harfbuzz-hb-ot-layout.html#HB-OT-TAG-GSUB:CAPS" title="HB_OT_TAG_GSUB"><span class="type">HB_OT_TAG_GSUB</span></a> or <a class="link" href="harfbuzz-hb-ot-layout.html#HB-OT-TAG-GPOS:CAPS" title="HB_OT_TAG_GPOS"><span class="type">HB_OT_TAG_GPOS</span></a></p></td>
 <td class="parameter_annotations"> </td>
 </tr>
 <tr>
@@ -1008,7 +947,7 @@ variations index. The list returned will begin at the offset provided.</p>
 <td class="parameter_name"><p>lookup_count</p></td>
 <td class="parameter_description"><p>Input = the maximum number of lookups to return;
 Output = the actual number of lookups returned (may be zero). </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for input and for returning results. Default is transfer full."><span class="acronym">inout</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for input and for returning results. Default is transfer full."><span class="acronym">inout</span></acronym>][<acronym title="NULL may be passed instead of a pointer to a location."><span class="acronym">optional</span></acronym>]</span></td>
 </tr>
 <tr>
 <td class="parameter_name"><p>lookup_indexes</p></td>
@@ -1018,6 +957,10 @@ Output = the actual number of lookups returned (may be zero). </p></td>
 </tbody>
 </table></div>
 </div>
+<div class="refsect3">
+<a name="hb-ot-layout-feature-with-variations-get-lookups.returns"></a><h4>Returns</h4>
+<p> Total number of lookups.</p>
+</div>
 </div>
 <hr>
 <div class="refsect2">
@@ -1059,7 +1002,7 @@ table of the face. The list returned will begin at the offset provided.</p>
 <td class="parameter_name"><p>point_count</p></td>
 <td class="parameter_description"><p>Input = the maximum number of attachment points to return;
 Output = the actual number of attachment points returned (may be zero). </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for input and for returning results. Default is transfer full."><span class="acronym">inout</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for input and for returning results. Default is transfer full."><span class="acronym">inout</span></acronym>][<acronym title="NULL may be passed instead of a pointer to a location."><span class="acronym">optional</span></acronym>]</span></td>
 </tr>
 <tr>
 <td class="parameter_name"><p>point_array</p></td>
@@ -1069,6 +1012,11 @@ Output = the actual number of attachment points returned (may be zero). </p></td
 </tbody>
 </table></div>
 </div>
+<div class="refsect3">
+<a name="hb-ot-layout-get-attach-points.returns"></a><h4>Returns</h4>
+<p> Total number of attachment points for <em class="parameter"><code>glyph</code></em>
+.</p>
+</div>
 </div>
 <hr>
 <div class="refsect2">
@@ -1112,7 +1060,7 @@ hb_ot_layout_get_baseline (<em class="parameter"><code><a class="link" href="har
 </tr>
 <tr>
 <td class="parameter_name"><p>language_tag</p></td>
-<td class="parameter_description"><p>language tag.</p></td>
+<td class="parameter_description"><p>language tag, currently unused.</p></td>
 <td class="parameter_annotations"> </td>
 </tr>
 <tr>
@@ -1125,7 +1073,7 @@ hb_ot_layout_get_baseline (<em class="parameter"><code><a class="link" href="har
 </div>
 <div class="refsect3">
 <a name="hb-ot-layout-get-baseline.returns"></a><h4>Returns</h4>
-<p> if found baseline value in the font.</p>
+<p> <code class="literal">true</code> if found baseline value in the font.</p>
 </div>
 <p class="since">Since: <a class="link" href="api-index-2-6-0.html#api-index-2.6.0">2.6.0</a></p>
 </div>
@@ -1249,7 +1197,7 @@ table of the font. The list returned will begin at the offset provided.</p>
 <td class="parameter_name"><p>caret_count</p></td>
 <td class="parameter_description"><p>Input = the maximum number of caret positions to return;
 Output = the actual number of caret positions returned (may be zero). </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for input and for returning results. Default is transfer full."><span class="acronym">inout</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for input and for returning results. Default is transfer full."><span class="acronym">inout</span></acronym>][<acronym title="NULL may be passed instead of a pointer to a location."><span class="acronym">optional</span></acronym>]</span></td>
 </tr>
 <tr>
 <td class="parameter_name"><p>caret_array</p></td>
@@ -1259,6 +1207,11 @@ Output = the actual number of caret positions returned (may be zero). </p></td>
 </tbody>
 </table></div>
 </div>
+<div class="refsect3">
+<a name="hb-ot-layout-get-ligature-carets.returns"></a><h4>Returns</h4>
+<p> Total number of ligature caret positions for <em class="parameter"><code>glyph</code></em>
+.</p>
+</div>
 </div>
 <hr>
 <div class="refsect2">
@@ -1320,22 +1273,12 @@ a subfamily are not covered by the <code class="literal">size</code> feature.</p
 </div>
 <div class="refsect3">
 <a name="hb-ot-layout-get-size-params.returns"></a><h4>Returns</h4>
-<p> true if data found, false otherwise</p>
+<p> <code class="literal">true</code> if data found, <code class="literal">false</code> otherwise</p>
 </div>
 <p class="since">Since: <a class="link" href="api-index-0-9-10.html#api-index-0.9.10">0.9.10</a></p>
 </div>
 <hr>
 <div class="refsect2">
-<a name="hb-ot-layout-glyph-sequence-func-t"></a><h3>hb_ot_layout_glyph_sequence_func_t ()</h3>
-<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
-<span class="c_punctuation">(</span>*hb_ot_layout_glyph_sequence_func_t<span class="c_punctuation">)</span> (<em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-t" title="hb_font_t"><span class="type">hb_font_t</span></a> *font</code></em>,
-                                       <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="type">hb_tag_t</span></a> table_tag</code></em>,
-                                       <em class="parameter"><code>unsigned <span class="type">int</span> lookup_index</code></em>,
-                                       <em class="parameter"><code>const <span class="type">hb_ot_layout_glyph_sequence_t</span> *sequence</code></em>,
-                                       <em class="parameter"><code><span class="type">void</span> *user_data</code></em>);</pre>
-</div>
-<hr>
-<div class="refsect2">
 <a name="hb-ot-layout-has-glyph-classes"></a><h3>hb_ot_layout_has_glyph_classes ()</h3>
 <pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
 hb_ot_layout_has_glyph_classes (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t" title="hb_face_t"><span class="type">hb_face_t</span></a> *face</code></em>);</pre>
@@ -1357,7 +1300,7 @@ hb_ot_layout_has_glyph_classes (<em class="parameter"><code><a class="link" href
 </div>
 <div class="refsect3">
 <a name="hb-ot-layout-has-glyph-classes.returns"></a><h4>Returns</h4>
-<p> true if data found, false otherwise</p>
+<p> <code class="literal">true</code> if data found, <code class="literal">false</code> otherwise</p>
 </div>
 </div>
 <hr>
@@ -1365,6 +1308,7 @@ hb_ot_layout_has_glyph_classes (<em class="parameter"><code><a class="link" href
 <a name="hb-ot-layout-has-positioning"></a><h3>hb_ot_layout_has_positioning ()</h3>
 <pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
 hb_ot_layout_has_positioning (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t" title="hb_face_t"><span class="type">hb_face_t</span></a> *face</code></em>);</pre>
+<p>Tests whether the specified face includes any GPOS positioning.</p>
 <div class="refsect3">
 <a name="hb-ot-layout-has-positioning.parameters"></a><h4>Parameters</h4>
 <div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -1382,7 +1326,7 @@ hb_ot_layout_has_positioning (<em class="parameter"><code><a class="link" href="
 </div>
 <div class="refsect3">
 <a name="hb-ot-layout-has-positioning.returns"></a><h4>Returns</h4>
-<p> true if the face has GPOS data, false otherwise</p>
+<p> <code class="literal">true</code> if the face has GPOS data, <code class="literal">false</code> otherwise</p>
 </div>
 </div>
 <hr>
@@ -1408,7 +1352,7 @@ hb_ot_layout_has_substitution (<em class="parameter"><code><a class="link" href=
 </div>
 <div class="refsect3">
 <a name="hb-ot-layout-has-substitution.returns"></a><h4>Returns</h4>
-<p> true if data found, false otherwise</p>
+<p> <code class="literal">true</code> if data found, <code class="literal">false</code> otherwise</p>
 </div>
 </div>
 <hr>
@@ -1439,7 +1383,7 @@ or GPOS table, underneath the specified script and language.</p>
 </tr>
 <tr>
 <td class="parameter_name"><p>table_tag</p></td>
-<td class="parameter_description"><p>HB_OT_TAG_GSUB or HB_OT_TAG_GPOS</p></td>
+<td class="parameter_description"><p><a class="link" href="harfbuzz-hb-ot-layout.html#HB-OT-TAG-GSUB:CAPS" title="HB_OT_TAG_GSUB"><span class="type">HB_OT_TAG_GSUB</span></a> or <a class="link" href="harfbuzz-hb-ot-layout.html#HB-OT-TAG-GPOS:CAPS" title="HB_OT_TAG_GPOS"><span class="type">HB_OT_TAG_GPOS</span></a></p></td>
 <td class="parameter_annotations"> </td>
 </tr>
 <tr>
@@ -1467,7 +1411,7 @@ or GPOS table, underneath the specified script and language.</p>
 </div>
 <div class="refsect3">
 <a name="hb-ot-layout-language-find-feature.returns"></a><h4>Returns</h4>
-<p> true if the feature is found, false otherwise</p>
+<p> <code class="literal">true</code> if the feature is found, <code class="literal">false</code> otherwise</p>
 </div>
 </div>
 <hr>
@@ -1501,7 +1445,7 @@ returned will begin at the offset provided.</p>
 </tr>
 <tr>
 <td class="parameter_name"><p>table_tag</p></td>
-<td class="parameter_description"><p>HB_OT_TAG_GSUB or HB_OT_TAG_GPOS</p></td>
+<td class="parameter_description"><p><a class="link" href="harfbuzz-hb-ot-layout.html#HB-OT-TAG-GSUB:CAPS" title="HB_OT_TAG_GSUB"><span class="type">HB_OT_TAG_GSUB</span></a> or <a class="link" href="harfbuzz-hb-ot-layout.html#HB-OT-TAG-GPOS:CAPS" title="HB_OT_TAG_GPOS"><span class="type">HB_OT_TAG_GPOS</span></a></p></td>
 <td class="parameter_annotations"> </td>
 </tr>
 <tr>
@@ -1523,7 +1467,7 @@ returned will begin at the offset provided.</p>
 <td class="parameter_name"><p>feature_count</p></td>
 <td class="parameter_description"><p>Input = the maximum number of feature tags to return;
 Output: the actual number of feature tags returned (may be zero). </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for input and for returning results. Default is transfer full."><span class="acronym">inout</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for input and for returning results. Default is transfer full."><span class="acronym">inout</span></acronym>][<acronym title="NULL may be passed instead of a pointer to a location."><span class="acronym">optional</span></acronym>]</span></td>
 </tr>
 <tr>
 <td class="parameter_name"><p>feature_indexes</p></td>
@@ -1533,6 +1477,10 @@ Output: the actual number of feature tags returned (may be zero). </p></td>
 </tbody>
 </table></div>
 </div>
+<div class="refsect3">
+<a name="hb-ot-layout-language-get-feature-indexes.returns"></a><h4>Returns</h4>
+<p> Total number of features.</p>
+</div>
 </div>
 <hr>
 <div class="refsect2">
@@ -1565,7 +1513,7 @@ returned will begin at the offset provided.</p>
 </tr>
 <tr>
 <td class="parameter_name"><p>table_tag</p></td>
-<td class="parameter_description"><p>HB_OT_TAG_GSUB or HB_OT_TAG_GPOS</p></td>
+<td class="parameter_description"><p><a class="link" href="harfbuzz-hb-ot-layout.html#HB-OT-TAG-GSUB:CAPS" title="HB_OT_TAG_GSUB"><span class="type">HB_OT_TAG_GSUB</span></a> or <a class="link" href="harfbuzz-hb-ot-layout.html#HB-OT-TAG-GPOS:CAPS" title="HB_OT_TAG_GPOS"><span class="type">HB_OT_TAG_GPOS</span></a></p></td>
 <td class="parameter_annotations"> </td>
 </tr>
 <tr>
@@ -1587,7 +1535,7 @@ returned will begin at the offset provided.</p>
 <td class="parameter_name"><p>feature_count</p></td>
 <td class="parameter_description"><p>Input = the maximum number of feature tags to return;
 Output = the actual number of feature tags returned (may be zero). </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for input and for returning results. Default is transfer full."><span class="acronym">inout</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for input and for returning results. Default is transfer full."><span class="acronym">inout</span></acronym>][<acronym title="NULL may be passed instead of a pointer to a location."><span class="acronym">optional</span></acronym>]</span></td>
 </tr>
 <tr>
 <td class="parameter_name"><p>feature_tags</p></td>
@@ -1597,6 +1545,10 @@ Output = the actual number of feature tags returned (may be zero). </p></td>
 </tbody>
 </table></div>
 </div>
+<div class="refsect3">
+<a name="hb-ot-layout-language-get-feature-tags.returns"></a><h4>Returns</h4>
+<p> Total number of feature tags.</p>
+</div>
 </div>
 <hr>
 <div class="refsect2">
@@ -1627,7 +1579,7 @@ underneath the specified script and language.</p>
 </tr>
 <tr>
 <td class="parameter_name"><p>table_tag</p></td>
-<td class="parameter_description"><p>HB_OT_TAG_GSUB or HB_OT_TAG_GPOS</p></td>
+<td class="parameter_description"><p><a class="link" href="harfbuzz-hb-ot-layout.html#HB-OT-TAG-GSUB:CAPS" title="HB_OT_TAG_GSUB"><span class="type">HB_OT_TAG_GSUB</span></a> or <a class="link" href="harfbuzz-hb-ot-layout.html#HB-OT-TAG-GPOS:CAPS" title="HB_OT_TAG_GPOS"><span class="type">HB_OT_TAG_GPOS</span></a></p></td>
 <td class="parameter_annotations"> </td>
 </tr>
 <tr>
@@ -1655,7 +1607,7 @@ underneath the specified script and language.</p>
 </div>
 <div class="refsect3">
 <a name="hb-ot-layout-language-get-required-feature.returns"></a><h4>Returns</h4>
-<p> true if the feature is found, false otherwise</p>
+<p> <code class="literal">true</code> if the feature is found, <code class="literal">false</code> otherwise</p>
 </div>
 <p class="since">Since: <a class="link" href="api-index-0-9-30.html#api-index-0.9.30">0.9.30</a></p>
 </div>
@@ -1688,7 +1640,7 @@ specified face's GSUB table or GPOS table.</p>
 </tr>
 <tr>
 <td class="parameter_name"><p>table_tag</p></td>
-<td class="parameter_description"><p>HB_OT_TAG_GSUB or HB_OT_TAG_GPOS</p></td>
+<td class="parameter_description"><p><a class="link" href="harfbuzz-hb-ot-layout.html#HB-OT-TAG-GSUB:CAPS" title="HB_OT_TAG_GSUB"><span class="type">HB_OT_TAG_GSUB</span></a> or <a class="link" href="harfbuzz-hb-ot-layout.html#HB-OT-TAG-GPOS:CAPS" title="HB_OT_TAG_GPOS"><span class="type">HB_OT_TAG_GPOS</span></a></p></td>
 <td class="parameter_annotations"> </td>
 </tr>
 <tr>
@@ -1713,7 +1665,7 @@ specified face's GSUB table or GPOS table.</p>
 </tr>
 <tr>
 <td class="parameter_name"><p>glyphs_output</p></td>
-<td class="parameter_description"><p>Array of glyphs that would be the substitued output of the lookup. </p></td>
+<td class="parameter_description"><p>Array of glyphs that would be the substituted output of the lookup. </p></td>
 <td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td>
 </tr>
 </tbody>
@@ -1723,6 +1675,68 @@ specified face's GSUB table or GPOS table.</p>
 </div>
 <hr>
 <div class="refsect2">
+<a name="hb-ot-layout-lookup-get-glyph-alternates"></a><h3>hb_ot_layout_lookup_get_glyph_alternates ()</h3>
+<pre class="programlisting"><span class="returnvalue">unsigned</span>
+hb_ot_layout_lookup_get_glyph_alternates
+                               (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t" title="hb_face_t"><span class="type">hb_face_t</span></a> *face</code></em>,
+                                <em class="parameter"><code><span class="type">unsigned </span> lookup_index</code></em>,
+                                <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> glyph</code></em>,
+                                <em class="parameter"><code><span class="type">unsigned </span> start_offset</code></em>,
+                                <em class="parameter"><code><span class="type">unsigned</span> *alternate_count</code></em>,
+                                <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> *alternate_glyphs</code></em>);</pre>
+<p>Fetches alternates of a glyph from a given GSUB lookup index.</p>
+<div class="refsect3">
+<a name="hb-ot-layout-lookup-get-glyph-alternates.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>face</p></td>
+<td class="parameter_description"><p>a face.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>lookup_index</p></td>
+<td class="parameter_description"><p>index of the feature lookup to query.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>glyph</p></td>
+<td class="parameter_description"><p>a glyph id.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>start_offset</p></td>
+<td class="parameter_description"><p>starting offset.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>alternate_count</p></td>
+<td class="parameter_description"><p>Input = the maximum number of alternate glyphs to return;
+Output = the actual number of alternate glyphs returned (may be zero). </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for input and for returning results. Default is transfer full."><span class="acronym">inout</span></acronym>][<acronym title="NULL may be passed instead of a pointer to a location."><span class="acronym">optional</span></acronym>]</span></td>
+</tr>
+<tr>
+<td class="parameter_name"><p>alternate_glyphs</p></td>
+<td class="parameter_description"><p>A glyphs buffer.
+Alternate glyphs associated with the glyph id. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Out parameter, where caller must allocate storage."><span class="acronym">out caller-allocates</span></acronym>][<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=alternate_count]</span></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="hb-ot-layout-lookup-get-glyph-alternates.returns"></a><h4>Returns</h4>
+<p> Total number of alternates found in the specific lookup index for the given glyph id.</p>
+</div>
+<p class="since">Since: <a class="link" href="api-index-2-6-8.html#api-index-2.6.8">2.6.8</a></p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="hb-ot-layout-lookup-substitute-closure"></a><h3>hb_ot_layout_lookup_substitute_closure ()</h3>
 <pre class="programlisting"><span class="returnvalue">void</span>
 hb_ot_layout_lookup_substitute_closure
@@ -1841,7 +1855,8 @@ trigger a substitution on the given glyph sequence.</p>
 </tr>
 <tr>
 <td class="parameter_name"><p>zero_context</p></td>
-<td class="parameter_description"><p><a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="type">hb_bool_t</span></a> indicating whether substitutions should be context-free</p></td>
+<td class="parameter_description"><p><a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="type">hb_bool_t</span></a> indicating whether pre-/post-context are disallowed
+in substitutions</p></td>
 <td class="parameter_annotations"> </td>
 </tr>
 </tbody>
@@ -1849,7 +1864,7 @@ trigger a substitution on the given glyph sequence.</p>
 </div>
 <div class="refsect3">
 <a name="hb-ot-layout-lookup-would-substitute.returns"></a><h4>Returns</h4>
-<p> true if a substitution would be triggered, false otherwise</p>
+<p> <code class="literal">true</code> if a substitution would be triggered, <code class="literal">false</code> otherwise</p>
 </div>
 <p class="since">Since: <a class="link" href="api-index-0-9-7.html#api-index-0.9.7">0.9.7</a></p>
 </div>
@@ -1881,7 +1896,7 @@ the specified script index. The list returned will begin at the offset provided.
 </tr>
 <tr>
 <td class="parameter_name"><p>table_tag</p></td>
-<td class="parameter_description"><p>HB_OT_TAG_GSUB or HB_OT_TAG_GPOS</p></td>
+<td class="parameter_description"><p><a class="link" href="harfbuzz-hb-ot-layout.html#HB-OT-TAG-GSUB:CAPS" title="HB_OT_TAG_GSUB"><span class="type">HB_OT_TAG_GSUB</span></a> or <a class="link" href="harfbuzz-hb-ot-layout.html#HB-OT-TAG-GPOS:CAPS" title="HB_OT_TAG_GPOS"><span class="type">HB_OT_TAG_GPOS</span></a></p></td>
 <td class="parameter_annotations"> </td>
 </tr>
 <tr>
@@ -1898,7 +1913,7 @@ the specified script index. The list returned will begin at the offset provided.
 <td class="parameter_name"><p>language_count</p></td>
 <td class="parameter_description"><p>Input = the maximum number of language tags to return;
 Output = the actual number of language tags returned (may be zero). </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for input and for returning results. Default is transfer full."><span class="acronym">inout</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for input and for returning results. Default is transfer full."><span class="acronym">inout</span></acronym>][<acronym title="NULL may be passed instead of a pointer to a location."><span class="acronym">optional</span></acronym>]</span></td>
 </tr>
 <tr>
 <td class="parameter_name"><p>language_tags</p></td>
@@ -1908,6 +1923,10 @@ Output = the actual number of language tags returned (may be zero). </p></td>
 </tbody>
 </table></div>
 </div>
+<div class="refsect3">
+<a name="hb-ot-layout-script-get-language-tags.returns"></a><h4>Returns</h4>
+<p> Total number of language tags.</p>
+</div>
 </div>
 <hr>
 <div class="refsect2">
@@ -1919,8 +1938,13 @@ hb_ot_layout_script_select_language (<em class="parameter"><code><a class="link"
                                      <em class="parameter"><code>unsigned <span class="type">int</span> language_count</code></em>,
                                      <em class="parameter"><code>const <a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="type">hb_tag_t</span></a> *language_tags</code></em>,
                                      <em class="parameter"><code>unsigned <span class="type">int</span> *language_index</code></em>);</pre>
-<p>Fetches the index of a given language tag in the specified face's GSUB table
-or GPOS table, underneath the specified script index.</p>
+<p>Fetches the index of the first language tag fom <em class="parameter"><code>language_tags</code></em>
+ that is present
+in the specified face's GSUB or GPOS table, underneath the specified script
+index.</p>
+<p>If none of the given language tags is found, <code class="literal">false</code> is returned and
+<em class="parameter"><code>language_index</code></em>
+ is set to the default language index.</p>
 <div class="refsect3">
 <a name="hb-ot-layout-script-select-language.parameters"></a><h4>Parameters</h4>
 <div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -1937,7 +1961,7 @@ or GPOS table, underneath the specified script index.</p>
 </tr>
 <tr>
 <td class="parameter_name"><p>table_tag</p></td>
-<td class="parameter_description"><p>HB_OT_TAG_GSUB or HB_OT_TAG_GPOS</p></td>
+<td class="parameter_description"><p><a class="link" href="harfbuzz-hb-ot-layout.html#HB-OT-TAG-GSUB:CAPS" title="HB_OT_TAG_GSUB"><span class="type">HB_OT_TAG_GSUB</span></a> or <a class="link" href="harfbuzz-hb-ot-layout.html#HB-OT-TAG-GPOS:CAPS" title="HB_OT_TAG_GPOS"><span class="type">HB_OT_TAG_GPOS</span></a></p></td>
 <td class="parameter_annotations"> </td>
 </tr>
 <tr>
@@ -1965,7 +1989,7 @@ or GPOS table, underneath the specified script index.</p>
 </div>
 <div class="refsect3">
 <a name="hb-ot-layout-script-select-language.returns"></a><h4>Returns</h4>
-<p> true if the language tag is found, false otherwise</p>
+<p> <code class="literal">true</code> if one of the given language tags is found, <code class="literal">false</code> otherwise</p>
 </div>
 <p class="since">Since: <a class="link" href="api-index-2-0-0.html#api-index-2.0.0">2.0.0</a></p>
 </div>
@@ -1997,7 +2021,7 @@ or GPOS table, at the specified variation coordinates.</p>
 </tr>
 <tr>
 <td class="parameter_name"><p>table_tag</p></td>
-<td class="parameter_description"><p>HB_OT_TAG_GSUB or HB_OT_TAG_GPOS</p></td>
+<td class="parameter_description"><p><a class="link" href="harfbuzz-hb-ot-layout.html#HB-OT-TAG-GSUB:CAPS" title="HB_OT_TAG_GSUB"><span class="type">HB_OT_TAG_GSUB</span></a> or <a class="link" href="harfbuzz-hb-ot-layout.html#HB-OT-TAG-GPOS:CAPS" title="HB_OT_TAG_GPOS"><span class="type">HB_OT_TAG_GPOS</span></a></p></td>
 <td class="parameter_annotations"> </td>
 </tr>
 <tr>
@@ -2007,7 +2031,7 @@ or GPOS table, at the specified variation coordinates.</p>
 </tr>
 <tr>
 <td class="parameter_name"><p>num_coords</p></td>
-<td class="parameter_description"><p>The number of variation coorinates</p></td>
+<td class="parameter_description"><p>The number of variation coordinates</p></td>
 <td class="parameter_annotations"> </td>
 </tr>
 <tr>
@@ -2018,6 +2042,10 @@ or GPOS table, at the specified variation coordinates.</p>
 </tbody>
 </table></div>
 </div>
+<div class="refsect3">
+<a name="hb-ot-layout-table-find-feature-variations.returns"></a><h4>Returns</h4>
+<p> <code class="literal">true</code> if feature variations were found, <code class="literal">false</code> otherwise.</p>
+</div>
 </div>
 <hr>
 <div class="refsect2">
@@ -2045,7 +2073,7 @@ hb_ot_layout_table_get_feature_tags (<em class="parameter"><code><a class="link"
 </tr>
 <tr>
 <td class="parameter_name"><p>table_tag</p></td>
-<td class="parameter_description"><p>HB_OT_TAG_GSUB or HB_OT_TAG_GPOS</p></td>
+<td class="parameter_description"><p><a class="link" href="harfbuzz-hb-ot-layout.html#HB-OT-TAG-GSUB:CAPS" title="HB_OT_TAG_GSUB"><span class="type">HB_OT_TAG_GSUB</span></a> or <a class="link" href="harfbuzz-hb-ot-layout.html#HB-OT-TAG-GPOS:CAPS" title="HB_OT_TAG_GPOS"><span class="type">HB_OT_TAG_GPOS</span></a></p></td>
 <td class="parameter_annotations"> </td>
 </tr>
 <tr>
@@ -2057,7 +2085,7 @@ hb_ot_layout_table_get_feature_tags (<em class="parameter"><code><a class="link"
 <td class="parameter_name"><p>feature_count</p></td>
 <td class="parameter_description"><p>Input = the maximum number of feature tags to return;
 Output = the actual number of feature tags returned (may be zero). </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for input and for returning results. Default is transfer full."><span class="acronym">inout</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for input and for returning results. Default is transfer full."><span class="acronym">inout</span></acronym>][<acronym title="NULL may be passed instead of a pointer to a location."><span class="acronym">optional</span></acronym>]</span></td>
 </tr>
 <tr>
 <td class="parameter_name"><p>feature_tags</p></td>
@@ -2067,6 +2095,10 @@ Output = the actual number of feature tags returned (may be zero). </p></td>
 </tbody>
 </table></div>
 </div>
+<div class="refsect3">
+<a name="hb-ot-layout-table-get-feature-tags.returns"></a><h4>Returns</h4>
+<p> Total number of feature tags.</p>
+</div>
 </div>
 <hr>
 <div class="refsect2">
@@ -2095,7 +2127,7 @@ or GPOS table. The list returned will begin at the offset provided.</p>
 </tr>
 <tr>
 <td class="parameter_name"><p>table_tag</p></td>
-<td class="parameter_description"><p>HB_OT_TAG_GSUB or HB_OT_TAG_GPOS</p></td>
+<td class="parameter_description"><p><a class="link" href="harfbuzz-hb-ot-layout.html#HB-OT-TAG-GSUB:CAPS" title="HB_OT_TAG_GSUB"><span class="type">HB_OT_TAG_GSUB</span></a> or <a class="link" href="harfbuzz-hb-ot-layout.html#HB-OT-TAG-GPOS:CAPS" title="HB_OT_TAG_GPOS"><span class="type">HB_OT_TAG_GPOS</span></a></p></td>
 <td class="parameter_annotations"> </td>
 </tr>
 <tr>
@@ -2107,7 +2139,7 @@ or GPOS table. The list returned will begin at the offset provided.</p>
 <td class="parameter_name"><p>script_count</p></td>
 <td class="parameter_description"><p>Input = the maximum number of script tags to return;
 Output = the actual number of script tags returned (may be zero). </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for input and for returning results. Default is transfer full."><span class="acronym">inout</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for input and for returning results. Default is transfer full."><span class="acronym">inout</span></acronym>][<acronym title="NULL may be passed instead of a pointer to a location."><span class="acronym">optional</span></acronym>]</span></td>
 </tr>
 <tr>
 <td class="parameter_name"><p>script_tags</p></td>
@@ -2117,6 +2149,10 @@ Output = the actual number of script tags returned (may be zero). </p></td>
 </tbody>
 </table></div>
 </div>
+<div class="refsect3">
+<a name="hb-ot-layout-table-get-script-tags.returns"></a><h4>Returns</h4>
+<p> Total number of script tags.</p>
+</div>
 </div>
 <hr>
 <div class="refsect2">
@@ -2142,12 +2178,16 @@ face's GSUB table or GPOS table.</p>
 </tr>
 <tr>
 <td class="parameter_name"><p>table_tag</p></td>
-<td class="parameter_description"><p>HB_OT_TAG_GSUB or HB_OT_TAG_GPOS</p></td>
+<td class="parameter_description"><p><a class="link" href="harfbuzz-hb-ot-layout.html#HB-OT-TAG-GSUB:CAPS" title="HB_OT_TAG_GSUB"><span class="type">HB_OT_TAG_GSUB</span></a> or <a class="link" href="harfbuzz-hb-ot-layout.html#HB-OT-TAG-GPOS:CAPS" title="HB_OT_TAG_GPOS"><span class="type">HB_OT_TAG_GPOS</span></a></p></td>
 <td class="parameter_annotations"> </td>
 </tr>
 </tbody>
 </table></div>
 </div>
+<div class="refsect3">
+<a name="hb-ot-layout-table-get-lookup-count.returns"></a><h4>Returns</h4>
+<p> Total number of lookups.</p>
+</div>
 <p class="since">Since: <a class="link" href="api-index-0-9-22.html#api-index-0.9.22">0.9.22</a></p>
 </div>
 <hr>
@@ -2160,6 +2200,15 @@ hb_ot_layout_table_select_script (<em class="parameter"><code><a class="link" hr
                                   <em class="parameter"><code>const <a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="type">hb_tag_t</span></a> *script_tags</code></em>,
                                   <em class="parameter"><code>unsigned <span class="type">int</span> *script_index</code></em>,
                                   <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="type">hb_tag_t</span></a> *chosen_script</code></em>);</pre>
+<p>Selects an OpenType script for <em class="parameter"><code>table_tag</code></em>
+ from the <em class="parameter"><code>script_tags</code></em>
+ array.</p>
+<p>If the table does not have any of the requested scripts, then <code class="literal">DFLT</code>,
+<code class="literal">dflt</code>, and <code class="literal">latn</code> tags are tried in that order. If the table still does not
+have any of these scripts, <em class="parameter"><code>script_index</code></em>
+ and <em class="parameter"><code>chosen_script</code></em>
+ are set to
+<a class="link" href="harfbuzz-hb-ot-layout.html#HB-OT-LAYOUT-NO-SCRIPT-INDEX:CAPS" title="HB_OT_LAYOUT_NO_SCRIPT_INDEX"><span class="type">HB_OT_LAYOUT_NO_SCRIPT_INDEX</span></a>.</p>
 <div class="refsect3">
 <a name="hb-ot-layout-table-select-script.parameters"></a><h4>Parameters</h4>
 <div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -2176,7 +2225,7 @@ hb_ot_layout_table_select_script (<em class="parameter"><code><a class="link" hr
 </tr>
 <tr>
 <td class="parameter_name"><p>table_tag</p></td>
-<td class="parameter_description"><p>HB_OT_TAG_GSUB or HB_OT_TAG_GPOS</p></td>
+<td class="parameter_description"><p><a class="link" href="harfbuzz-hb-ot-layout.html#HB-OT-TAG-GSUB:CAPS" title="HB_OT_TAG_GSUB"><span class="type">HB_OT_TAG_GSUB</span></a> or <a class="link" href="harfbuzz-hb-ot-layout.html#HB-OT-TAG-GPOS:CAPS" title="HB_OT_TAG_GPOS"><span class="type">HB_OT_TAG_GPOS</span></a></p></td>
 <td class="parameter_annotations"> </td>
 </tr>
 <tr>
@@ -2192,16 +2241,21 @@ hb_ot_layout_table_select_script (<em class="parameter"><code><a class="link" hr
 <tr>
 <td class="parameter_name"><p>script_index</p></td>
 <td class="parameter_description"><p>The index of the requested script. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="NULL may be passed instead of a pointer to a location."><span class="acronym">optional</span></acronym>]</span></td>
 </tr>
 <tr>
 <td class="parameter_name"><p>chosen_script</p></td>
 <td class="parameter_description"><p><a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="type">hb_tag_t</span></a> of the requested script. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="NULL may be passed instead of a pointer to a location."><span class="acronym">optional</span></acronym>]</span></td>
 </tr>
 </tbody>
 </table></div>
 </div>
+<div class="refsect3">
+<a name="hb-ot-layout-table-select-script.returns"></a><h4>Returns</h4>
+<p><code class="literal">true</code> if one of the requested scripts is selected, <code class="literal">false</code> if a fallback
+script is selected or if no scripts are selected.</p>
+</div>
 <p class="since">Since: <a class="link" href="api-index-2-0-0.html#api-index-2.0.0">2.0.0</a></p>
 </div>
 <hr>
@@ -2211,6 +2265,36 @@ hb_ot_layout_table_select_script (<em class="parameter"><code><a class="link" hr
 hb_ot_shape_plan_collect_lookups (<em class="parameter"><code><a class="link" href="harfbuzz-hb-shape-plan.html#hb-shape-plan-t" title="hb_shape_plan_t"><span class="type">hb_shape_plan_t</span></a> *shape_plan</code></em>,
                                   <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="type">hb_tag_t</span></a> table_tag</code></em>,
                                   <em class="parameter"><code><a class="link" href="harfbuzz-hb-set.html#hb-set-t" title="hb_set_t"><span class="type">hb_set_t</span></a> *lookup_indexes</code></em>);</pre>
+<p>Computes the complete set of GSUB or GPOS lookups that are applicable
+under a given <em class="parameter"><code>shape_plan</code></em>
+.</p>
+<div class="refsect3">
+<a name="hb-ot-shape-plan-collect-lookups.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>shape_plan</p></td>
+<td class="parameter_description"><p><a class="link" href="harfbuzz-hb-shape-plan.html#hb-shape-plan-t" title="hb_shape_plan_t"><span class="type">hb_shape_plan_t</span></a> to query</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>table_tag</p></td>
+<td class="parameter_description"><p>GSUB or GPOS</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>lookup_indexes</p></td>
+<td class="parameter_description"><p>The <a class="link" href="harfbuzz-hb-set.html#hb-set-t" title="hb_set_t"><span class="type">hb_set_t</span></a> set of lookups returned. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td>
+</tr>
+</tbody>
+</table></div>
+</div>
 <p class="since">Since: <a class="link" href="api-index-0-9-7.html#api-index-0.9.7">0.9.7</a></p>
 </div>
 <hr>
@@ -2241,7 +2325,7 @@ underneath the specified script and language.</p>
 </tr>
 <tr>
 <td class="parameter_name"><p>table_tag</p></td>
-<td class="parameter_description"><p>HB_OT_TAG_GSUB or HB_OT_TAG_GPOS</p></td>
+<td class="parameter_description"><p><a class="link" href="harfbuzz-hb-ot-layout.html#HB-OT-TAG-GSUB:CAPS" title="HB_OT_TAG_GSUB"><span class="type">HB_OT_TAG_GSUB</span></a> or <a class="link" href="harfbuzz-hb-ot-layout.html#HB-OT-TAG-GPOS:CAPS" title="HB_OT_TAG_GPOS"><span class="type">HB_OT_TAG_GPOS</span></a></p></td>
 <td class="parameter_annotations"> </td>
 </tr>
 <tr>
@@ -2264,7 +2348,7 @@ underneath the specified script and language.</p>
 </div>
 <div class="refsect3">
 <a name="hb-ot-layout-language-get-required-feature-index.returns"></a><h4>Returns</h4>
-<p> true if the feature is found, false otherwise</p>
+<p> <code class="literal">true</code> if the feature is found, <code class="literal">false</code> otherwise</p>
 </div>
 </div>
 </div>
@@ -2274,6 +2358,7 @@ underneath the specified script and language.</p>
 <a name="HB-OT-MAX-TAGS-PER-LANGUAGE:CAPS"></a><h3>HB_OT_MAX_TAGS_PER_LANGUAGE</h3>
 <pre class="programlisting">#define HB_OT_MAX_TAGS_PER_LANGUAGE 3u
 </pre>
+<p>Maximum number of OpenType tags that can correspond to a give <a class="link" href="harfbuzz-hb-common.html#hb-language-t" title="hb_language_t"><span class="type">hb_language_t</span></a>.</p>
 <p class="since">Since: <a class="link" href="api-index-2-0-0.html#api-index-2.0.0">2.0.0</a></p>
 </div>
 <hr>
@@ -2281,6 +2366,7 @@ underneath the specified script and language.</p>
 <a name="HB-OT-MAX-TAGS-PER-SCRIPT:CAPS"></a><h3>HB_OT_MAX_TAGS_PER_SCRIPT</h3>
 <pre class="programlisting">#define HB_OT_MAX_TAGS_PER_SCRIPT 3u
 </pre>
+<p>Maximum number of OpenType tags that can correspond to a give <a class="link" href="harfbuzz-hb-common.html#hb-script-t" title="enum hb_script_t"><span class="type">hb_script_t</span></a>.</p>
 <p class="since">Since: <a class="link" href="api-index-2-0-0.html#api-index-2.0.0">2.0.0</a></p>
 </div>
 <hr>
@@ -2288,71 +2374,83 @@ underneath the specified script and language.</p>
 <a name="HB-OT-TAG-DEFAULT-LANGUAGE:CAPS"></a><h3>HB_OT_TAG_DEFAULT_LANGUAGE</h3>
 <pre class="programlisting">#define HB_OT_TAG_DEFAULT_LANGUAGE HB_TAG ('d', 'f', 'l', 't')
 </pre>
+<p>OpenType language tag, <code class="literal">dflt</code>. Not a valid language tag, but some fonts
+mistakenly use it.</p>
 </div>
 <hr>
 <div class="refsect2">
 <a name="HB-OT-TAG-DEFAULT-SCRIPT:CAPS"></a><h3>HB_OT_TAG_DEFAULT_SCRIPT</h3>
 <pre class="programlisting">#define HB_OT_TAG_DEFAULT_SCRIPT HB_TAG ('D', 'F', 'L', 'T')
 </pre>
+<p>OpenType script tag, <code class="literal">DFLT</code>, for features that are not script-specific.</p>
 </div>
 <hr>
 <div class="refsect2">
 <a name="HB-OT-LAYOUT-DEFAULT-LANGUAGE-INDEX:CAPS"></a><h3>HB_OT_LAYOUT_DEFAULT_LANGUAGE_INDEX</h3>
 <pre class="programlisting">#define HB_OT_LAYOUT_DEFAULT_LANGUAGE_INDEX 0xFFFFu
 </pre>
+<p>Special value for language index indicating default or unsupported language.</p>
 </div>
 <hr>
 <div class="refsect2">
 <a name="HB-OT-LAYOUT-NO-FEATURE-INDEX:CAPS"></a><h3>HB_OT_LAYOUT_NO_FEATURE_INDEX</h3>
 <pre class="programlisting">#define HB_OT_LAYOUT_NO_FEATURE_INDEX              0xFFFFu
 </pre>
+<p>Special value for feature index indicating unsupported feature.</p>
 </div>
 <hr>
 <div class="refsect2">
 <a name="HB-OT-LAYOUT-NO-SCRIPT-INDEX:CAPS"></a><h3>HB_OT_LAYOUT_NO_SCRIPT_INDEX</h3>
 <pre class="programlisting">#define HB_OT_LAYOUT_NO_SCRIPT_INDEX               0xFFFFu
 </pre>
+<p>Special value for script index indicating unsupported script.</p>
 </div>
 <hr>
 <div class="refsect2">
 <a name="HB-OT-LAYOUT-NO-VARIATIONS-INDEX:CAPS"></a><h3>HB_OT_LAYOUT_NO_VARIATIONS_INDEX</h3>
 <pre class="programlisting">#define HB_OT_LAYOUT_NO_VARIATIONS_INDEX 0xFFFFFFFFu
 </pre>
+<p>Special value for variations index indicating unsupported variation.</p>
 </div>
 <hr>
 <div class="refsect2">
 <a name="HB-OT-TAG-BASE:CAPS"></a><h3>HB_OT_TAG_BASE</h3>
 <pre class="programlisting">#define HB_OT_TAG_BASE HB_TAG('B','A','S','E')
 </pre>
+<p>OpenType <a class="ulink" href="https://docs.microsoft.com/en-us/typography/opentype/spec/base" target="_top">Baseline Table</a>.</p>
 </div>
 <hr>
 <div class="refsect2">
 <a name="HB-OT-TAG-GDEF:CAPS"></a><h3>HB_OT_TAG_GDEF</h3>
 <pre class="programlisting">#define HB_OT_TAG_GDEF HB_TAG('G','D','E','F')
 </pre>
+<p>OpenType <a class="ulink" href="https://docs.microsoft.com/en-us/typography/opentype/spec/gdef" target="_top">Glyph Definition Table</a>.</p>
 </div>
 <hr>
 <div class="refsect2">
 <a name="HB-OT-TAG-GPOS:CAPS"></a><h3>HB_OT_TAG_GPOS</h3>
 <pre class="programlisting">#define HB_OT_TAG_GPOS HB_TAG('G','P','O','S')
 </pre>
+<p>OpenType <a class="ulink" href="https://docs.microsoft.com/en-us/typography/opentype/spec/gpos" target="_top">Glyph Positioning Table</a>.</p>
 </div>
 <hr>
 <div class="refsect2">
 <a name="HB-OT-TAG-GSUB:CAPS"></a><h3>HB_OT_TAG_GSUB</h3>
 <pre class="programlisting">#define HB_OT_TAG_GSUB HB_TAG('G','S','U','B')
 </pre>
+<p>OpenType <a class="ulink" href="https://docs.microsoft.com/en-us/typography/opentype/spec/gsub" target="_top">Glyph Substitution Table</a>.</p>
 </div>
 <hr>
 <div class="refsect2">
 <a name="HB-OT-TAG-JSTF:CAPS"></a><h3>HB_OT_TAG_JSTF</h3>
 <pre class="programlisting">#define HB_OT_TAG_JSTF HB_TAG('J','S','T','F')
 </pre>
+<p>OpenType <a class="ulink" href="https://docs.microsoft.com/en-us/typography/opentype/spec/jstf" target="_top">Justification Table</a>.</p>
 </div>
 <hr>
 <div class="refsect2">
 <a name="hb-ot-layout-baseline-tag-t"></a><h3>enum hb_ot_layout_baseline_tag_t</h3>
-<p>Baseline tags from https://docs.microsoft.com/en-us/typography/opentype/spec/baselinetags</p>
+<p>Baseline tags from <a class="ulink" href="https://docs.microsoft.com/en-us/typography/opentype/spec/baselinetags" target="_top">Baseline Tags</a> registry.</p>
 <div class="refsect3">
 <a name="hb-ot-layout-baseline-tag-t.members"></a><h4>Members</h4>
 <div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -2421,11 +2519,6 @@ In vertical writing mode when mathematical characters rotated 90 degrees clockwi
 </td>
 <td class="enum_member_annotations"> </td>
 </tr>
-<tr>
-<td class="enum_member_name"><p><a name="HB-OT-LAYOUT-BASELINE-TAG-MAX-VALUE:CAPS"></a>_HB_OT_LAYOUT_BASELINE_TAG_MAX_VALUE</p></td>
-<td> </td>
-<td> </td>
-</tr>
 </tbody>
 </table></div>
 </div>
@@ -2486,6 +2579,6 @@ In vertical writing mode when mathematical characters rotated 90 degrees clockwi
 </div>
 </div>
 <div class="footer">
-<hr>Generated by GTK-Doc V1.32.1</div>
+<hr>Generated by GTK-Doc V1.32</div>
 </body>
 </html>
\ No newline at end of file