<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">
<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>
<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">
<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>
<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>
</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>,
</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>
</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>
<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">
<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>
</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>
<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>
</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>
<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>
</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>
<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>
</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">
<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>
</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">
</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>
</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>
<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>
</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">
</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>
</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>
<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">
</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>
</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>
</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>
</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>
</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>
<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>
</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">
</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>
<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>
</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">
</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>
</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>
</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>
</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>
</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
</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>
</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>
</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>
<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>
</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">
<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">
</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>
</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>
</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>
</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>
</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">
</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>
<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>
</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">
</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>
<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>
</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">
</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>
<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">
</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>
<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>
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>
</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>
</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>
<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>
<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>
<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">
</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>
</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