Blob Blame History Raw
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>OpenType Font Handling: Pango Reference Manual</title>
<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot">
<link rel="home" href="index.html" title="Pango Reference Manual">
<link rel="up" href="lowlevel.html" title="Low Level Functionality">
<link rel="prev" href="PangoFcDecoder.html" title="PangoFcDecoder">
<link rel="next" href="pango-Coverage-Maps.html" title="Coverage Maps">
<meta name="generator" content="GTK-Doc V1.28 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
<td width="100%" align="left" class="shortcuts">
<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
                  <a href="#pango-OpenType-Font-Handling.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
                  <a href="#pango-OpenType-Font-Handling.object-hierarchy" class="shortcut">Object Hierarchy</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="lowlevel.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
<td><a accesskey="p" href="PangoFcDecoder.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="pango-Coverage-Maps.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="refentry">
<a name="pango-OpenType-Font-Handling"></a><div class="titlepage"></div>
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
<h2><span class="refentrytitle"><a name="pango-OpenType-Font-Handling.top_of_page"></a>OpenType Font Handling</span></h2>
<p>OpenType Font Handling — Obtaining information from OpenType tables</p>
</td>
<td class="gallery_image" valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
<a name="pango-OpenType-Font-Handling.stability-level"></a><h2>Stability Level</h2>
<acronym title="Unstable interfaces are experimental or transitional. They are typically used to
give outside developers early access to new or rapidly changing technology, or
to provide an interim solution to a problem where a more general solution is
anticipated. No claims are made about either source or binary compatibility from
one minor release to the next.

The Unstable interface level is a warning that these interfaces are  subject to
change without warning and should not be used in unbundled products.

Given such caveats, customer impact need not be a factor when considering
incompatible changes to an Unstable interface in a major or minor release.
Nonetheless, when such changes are introduced, the changes should still be
mentioned in the release notes for the affected release.
"><span class="acronym">Unstable</span></acronym>, unless otherwise indicated
</div>
<div class="refsect1">
<a name="pango-OpenType-Font-Handling.functions"></a><h2>Functions</h2>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="functions_return">
<col class="functions_name">
</colgroup>
<tbody>
<tr>
<td class="define_keyword">#define</td>
<td class="function_name">
<a class="link" href="pango-OpenType-Font-Handling.html#PANGO-OT-TAG-MAKE:CAPS" title="PANGO_OT_TAG_MAKE()">PANGO_OT_TAG_MAKE</a><span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="define_keyword">#define</td>
<td class="function_name">
<a class="link" href="pango-OpenType-Font-Handling.html#PANGO-OT-TAG-MAKE-FROM-STRING:CAPS" title="PANGO_OT_TAG_MAKE_FROM_STRING()">PANGO_OT_TAG_MAKE_FROM_STRING</a><span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<a class="link" href="pango-OpenType-Font-Handling.html#PangoOTInfo"><span class="returnvalue">PangoOTInfo</span></a> *
</td>
<td class="function_name">
<a class="link" href="pango-OpenType-Font-Handling.html#pango-ot-info-get" title="pango_ot_info_get ()">pango_ot_info_get</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<span class="returnvalue">gboolean</span>
</td>
<td class="function_name">
<a class="link" href="pango-OpenType-Font-Handling.html#pango-ot-info-find-script" title="pango_ot_info_find_script ()">pango_ot_info_find_script</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<span class="returnvalue">gboolean</span>
</td>
<td class="function_name">
<a class="link" href="pango-OpenType-Font-Handling.html#pango-ot-info-find-language" title="pango_ot_info_find_language ()">pango_ot_info_find_language</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<span class="returnvalue">gboolean</span>
</td>
<td class="function_name">
<a class="link" href="pango-OpenType-Font-Handling.html#pango-ot-info-find-feature" title="pango_ot_info_find_feature ()">pango_ot_info_find_feature</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<a class="link" href="pango-OpenType-Font-Handling.html#PangoOTTag" title="PangoOTTag"><span class="returnvalue">PangoOTTag</span></a> *
</td>
<td class="function_name">
<a class="link" href="pango-OpenType-Font-Handling.html#pango-ot-info-list-scripts" title="pango_ot_info_list_scripts ()">pango_ot_info_list_scripts</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<a class="link" href="pango-OpenType-Font-Handling.html#PangoOTTag" title="PangoOTTag"><span class="returnvalue">PangoOTTag</span></a> *
</td>
<td class="function_name">
<a class="link" href="pango-OpenType-Font-Handling.html#pango-ot-info-list-languages" title="pango_ot_info_list_languages ()">pango_ot_info_list_languages</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<a class="link" href="pango-OpenType-Font-Handling.html#PangoOTTag" title="PangoOTTag"><span class="returnvalue">PangoOTTag</span></a> *
</td>
<td class="function_name">
<a class="link" href="pango-OpenType-Font-Handling.html#pango-ot-info-list-features" title="pango_ot_info_list_features ()">pango_ot_info_list_features</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<a class="link" href="pango-OpenType-Font-Handling.html#PangoOTBuffer" title="PangoOTBuffer"><span class="returnvalue">PangoOTBuffer</span></a> *
</td>
<td class="function_name">
<a class="link" href="pango-OpenType-Font-Handling.html#pango-ot-buffer-new" title="pango_ot_buffer_new ()">pango_ot_buffer_new</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="pango-OpenType-Font-Handling.html#pango-ot-buffer-destroy" title="pango_ot_buffer_destroy ()">pango_ot_buffer_destroy</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="pango-OpenType-Font-Handling.html#pango-ot-buffer-clear" title="pango_ot_buffer_clear ()">pango_ot_buffer_clear</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="pango-OpenType-Font-Handling.html#pango-ot-buffer-add-glyph" title="pango_ot_buffer_add_glyph ()">pango_ot_buffer_add_glyph</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="pango-OpenType-Font-Handling.html#pango-ot-buffer-set-rtl" title="pango_ot_buffer_set_rtl ()">pango_ot_buffer_set_rtl</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="pango-OpenType-Font-Handling.html#pango-ot-buffer-set-zero-width-marks" title="pango_ot_buffer_set_zero_width_marks ()">pango_ot_buffer_set_zero_width_marks</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="pango-OpenType-Font-Handling.html#pango-ot-buffer-get-glyphs" title="pango_ot_buffer_get_glyphs ()">pango_ot_buffer_get_glyphs</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="pango-OpenType-Font-Handling.html#pango-ot-buffer-output" title="pango_ot_buffer_output ()">pango_ot_buffer_output</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">const <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTRuleset"><span class="returnvalue">PangoOTRuleset</span></a> *
</td>
<td class="function_name">
<a class="link" href="pango-OpenType-Font-Handling.html#pango-ot-ruleset-get-for-description" title="pango_ot_ruleset_get_for_description ()">pango_ot_ruleset_get_for_description</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<a class="link" href="pango-OpenType-Font-Handling.html#PangoOTRuleset"><span class="returnvalue">PangoOTRuleset</span></a> *
</td>
<td class="function_name">
<a class="link" href="pango-OpenType-Font-Handling.html#pango-ot-ruleset-new" title="pango_ot_ruleset_new ()">pango_ot_ruleset_new</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<a class="link" href="pango-OpenType-Font-Handling.html#PangoOTRuleset"><span class="returnvalue">PangoOTRuleset</span></a> *
</td>
<td class="function_name">
<a class="link" href="pango-OpenType-Font-Handling.html#pango-ot-ruleset-new-for" title="pango_ot_ruleset_new_for ()">pango_ot_ruleset_new_for</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<a class="link" href="pango-OpenType-Font-Handling.html#PangoOTRuleset"><span class="returnvalue">PangoOTRuleset</span></a> *
</td>
<td class="function_name">
<a class="link" href="pango-OpenType-Font-Handling.html#pango-ot-ruleset-new-from-description" title="pango_ot_ruleset_new_from_description ()">pango_ot_ruleset_new_from_description</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="pango-OpenType-Font-Handling.html#pango-ot-ruleset-add-feature" title="pango_ot_ruleset_add_feature ()">pango_ot_ruleset_add_feature</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<span class="returnvalue">gboolean</span>
</td>
<td class="function_name">
<a class="link" href="pango-OpenType-Font-Handling.html#pango-ot-ruleset-maybe-add-feature" title="pango_ot_ruleset_maybe_add_feature ()">pango_ot_ruleset_maybe_add_feature</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<span class="returnvalue">guint</span>
</td>
<td class="function_name">
<a class="link" href="pango-OpenType-Font-Handling.html#pango-ot-ruleset-maybe-add-features" title="pango_ot_ruleset_maybe_add_features ()">pango_ot_ruleset_maybe_add_features</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<span class="returnvalue">guint</span>
</td>
<td class="function_name">
<a class="link" href="pango-OpenType-Font-Handling.html#pango-ot-ruleset-get-feature-count" title="pango_ot_ruleset_get_feature_count ()">pango_ot_ruleset_get_feature_count</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="pango-OpenType-Font-Handling.html#pango-ot-ruleset-substitute" title="pango_ot_ruleset_substitute ()">pango_ot_ruleset_substitute</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="pango-OpenType-Font-Handling.html#pango-ot-ruleset-position" title="pango_ot_ruleset_position ()">pango_ot_ruleset_position</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<a class="link" href="pango-OpenType-Font-Handling.html#PangoOTRulesetDescription" title="struct PangoOTRulesetDescription"><span class="returnvalue">PangoOTRulesetDescription</span></a> *
</td>
<td class="function_name">
<a class="link" href="pango-OpenType-Font-Handling.html#pango-ot-ruleset-description-copy" title="pango_ot_ruleset_description_copy ()">pango_ot_ruleset_description_copy</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<span class="returnvalue">gboolean</span>
</td>
<td class="function_name">
<a class="link" href="pango-OpenType-Font-Handling.html#pango-ot-ruleset-description-equal" title="pango_ot_ruleset_description_equal ()">pango_ot_ruleset_description_equal</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="pango-OpenType-Font-Handling.html#pango-ot-ruleset-description-free" title="pango_ot_ruleset_description_free ()">pango_ot_ruleset_description_free</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<span class="returnvalue">guint</span>
</td>
<td class="function_name">
<a class="link" href="pango-OpenType-Font-Handling.html#pango-ot-ruleset-description-hash" title="pango_ot_ruleset_description_hash ()">pango_ot_ruleset_description_hash</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<a class="link" href="pango-OpenType-Font-Handling.html#PangoOTTag" title="PangoOTTag"><span class="returnvalue">PangoOTTag</span></a>
</td>
<td class="function_name">
<a class="link" href="pango-OpenType-Font-Handling.html#pango-ot-tag-from-language" title="pango_ot_tag_from_language ()">pango_ot_tag_from_language</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<a class="link" href="pango-OpenType-Font-Handling.html#PangoOTTag" title="PangoOTTag"><span class="returnvalue">PangoOTTag</span></a>
</td>
<td class="function_name">
<a class="link" href="pango-OpenType-Font-Handling.html#pango-ot-tag-from-script" title="pango_ot_tag_from_script ()">pango_ot_tag_from_script</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<a class="link" href="pango-Scripts-and-Languages.html#PangoLanguage"><span class="returnvalue">PangoLanguage</span></a> *
</td>
<td class="function_name">
<a class="link" href="pango-OpenType-Font-Handling.html#pango-ot-tag-to-language" title="pango_ot_tag_to_language ()">pango_ot_tag_to_language</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<a class="link" href="pango-Scripts-and-Languages.html#PangoScript" title="enum PangoScript"><span class="returnvalue">PangoScript</span></a>
</td>
<td class="function_name">
<a class="link" href="pango-OpenType-Font-Handling.html#pango-ot-tag-to-script" title="pango_ot_tag_to_script ()">pango_ot_tag_to_script</a> <span class="c_punctuation">()</span>
</td>
</tr>
</tbody>
</table></div>
</div>
<a name="PangoOTInfo"></a><a name="PangoOTRuleset"></a><div class="refsect1">
<a name="pango-OpenType-Font-Handling.other"></a><h2>Types and Values</h2>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="name">
<col class="description">
</colgroup>
<tbody>
<tr>
<td class="typedef_keyword">typedef</td>
<td class="function_name"><a class="link" href="pango-OpenType-Font-Handling.html#PangoOTTag" title="PangoOTTag">PangoOTTag</a></td>
</tr>
<tr>
<td class="datatype_keyword"> </td>
<td class="function_name"><a class="link" href="pango-OpenType-Font-Handling.html#PangoOTInfo-struct" title="PangoOTInfo">PangoOTInfo</a></td>
</tr>
<tr>
<td class="datatype_keyword"> </td>
<td class="function_name"><a class="link" href="pango-OpenType-Font-Handling.html#PangoOTBuffer" title="PangoOTBuffer">PangoOTBuffer</a></td>
</tr>
<tr>
<td class="datatype_keyword">struct</td>
<td class="function_name"><a class="link" href="pango-OpenType-Font-Handling.html#PangoOTGlyph" title="struct PangoOTGlyph">PangoOTGlyph</a></td>
</tr>
<tr>
<td class="datatype_keyword"> </td>
<td class="function_name"><a class="link" href="pango-OpenType-Font-Handling.html#PangoOTRuleset-struct" title="PangoOTRuleset">PangoOTRuleset</a></td>
</tr>
<tr>
<td class="datatype_keyword">struct</td>
<td class="function_name"><a class="link" href="pango-OpenType-Font-Handling.html#PangoOTRulesetDescription" title="struct PangoOTRulesetDescription">PangoOTRulesetDescription</a></td>
</tr>
<tr>
<td class="datatype_keyword">enum</td>
<td class="function_name"><a class="link" href="pango-OpenType-Font-Handling.html#PangoOTTableType" title="enum PangoOTTableType">PangoOTTableType</a></td>
</tr>
<tr>
<td class="datatype_keyword">struct</td>
<td class="function_name"><a class="link" href="pango-OpenType-Font-Handling.html#PangoOTFeatureMap" title="struct PangoOTFeatureMap">PangoOTFeatureMap</a></td>
</tr>
<tr>
<td class="define_keyword">#define</td>
<td class="function_name"><a class="link" href="pango-OpenType-Font-Handling.html#PANGO-OT-ALL-GLYPHS:CAPS" title="PANGO_OT_ALL_GLYPHS">PANGO_OT_ALL_GLYPHS</a></td>
</tr>
<tr>
<td class="define_keyword">#define</td>
<td class="function_name"><a class="link" href="pango-OpenType-Font-Handling.html#PANGO-OT-NO-FEATURE:CAPS" title="PANGO_OT_NO_FEATURE">PANGO_OT_NO_FEATURE</a></td>
</tr>
<tr>
<td class="define_keyword">#define</td>
<td class="function_name"><a class="link" href="pango-OpenType-Font-Handling.html#PANGO-OT-NO-SCRIPT:CAPS" title="PANGO_OT_NO_SCRIPT">PANGO_OT_NO_SCRIPT</a></td>
</tr>
<tr>
<td class="define_keyword">#define</td>
<td class="function_name"><a class="link" href="pango-OpenType-Font-Handling.html#PANGO-OT-DEFAULT-LANGUAGE:CAPS" title="PANGO_OT_DEFAULT_LANGUAGE">PANGO_OT_DEFAULT_LANGUAGE</a></td>
</tr>
<tr>
<td class="define_keyword">#define</td>
<td class="function_name"><a class="link" href="pango-OpenType-Font-Handling.html#PANGO-OT-TAG-DEFAULT-LANGUAGE:CAPS" title="PANGO_OT_TAG_DEFAULT_LANGUAGE">PANGO_OT_TAG_DEFAULT_LANGUAGE</a></td>
</tr>
<tr>
<td class="define_keyword">#define</td>
<td class="function_name"><a class="link" href="pango-OpenType-Font-Handling.html#PANGO-OT-TAG-DEFAULT-SCRIPT:CAPS" title="PANGO_OT_TAG_DEFAULT_SCRIPT">PANGO_OT_TAG_DEFAULT_SCRIPT</a></td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect1">
<a name="pango-OpenType-Font-Handling.object-hierarchy"></a><h2>Object Hierarchy</h2>
<pre class="screen">    GObject
    <span class="lineart">├──</span> PangoOTInfo
    <span class="lineart">╰──</span> PangoOTRuleset
</pre>
</div>
<div class="refsect1">
<a name="pango-OpenType-Font-Handling.description"></a><h2>Description</h2>
<p>Functions and macros in this section are used to implement the OpenType Layout
features and algorithms.  These are mostly useful when writing Fontconfig-based
shaping engines</p>
</div>
<div class="refsect1">
<a name="pango-OpenType-Font-Handling.functions_details"></a><h2>Functions</h2>
<div class="refsect2">
<a name="PANGO-OT-TAG-MAKE:CAPS"></a><h3>PANGO_OT_TAG_MAKE()</h3>
<pre class="programlisting">#define PANGO_OT_TAG_MAKE(c1,c2,c3,c4)		((PangoOTTag) FT_MAKE_TAG (c1, c2, c3, c4))
</pre>
<p>Creates a <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTTag" title="PangoOTTag"><span class="type">PangoOTTag</span></a> from four characters.  This is similar and
compatible with the <code class="function"><code class="function">FT_MAKE_TAG()</code></code> macro from FreeType.</p>
<div class="refsect3">
<a name="PANGO-OT-TAG-MAKE.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>c1</p></td>
<td class="parameter_description"><p>First character.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>c2</p></td>
<td class="parameter_description"><p>Second character.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>c3</p></td>
<td class="parameter_description"><p>Third character.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>c4</p></td>
<td class="parameter_description"><p>Fourth character.</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
</div>
<hr>
<div class="refsect2">
<a name="PANGO-OT-TAG-MAKE-FROM-STRING:CAPS"></a><h3>PANGO_OT_TAG_MAKE_FROM_STRING()</h3>
<pre class="programlisting">#define             PANGO_OT_TAG_MAKE_FROM_STRING(s)</pre>
<p>Creates a <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTTag" title="PangoOTTag"><span class="type">PangoOTTag</span></a> from a string. The string should be at least
four characters long (pad with space characters if needed), and need
not be nul-terminated.  This is a convenience wrapper around
<a class="link" href="pango-OpenType-Font-Handling.html#PANGO-OT-TAG-MAKE:CAPS" title="PANGO_OT_TAG_MAKE()"><code class="function">PANGO_OT_TAG_MAKE()</code></a>, but cannot be used in certain situations, for
example, as a switch expression, as it dereferences pointers.</p>
<div class="refsect3">
<a name="PANGO-OT-TAG-MAKE-FROM-STRING.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>s</p></td>
<td class="parameter_description"><p>The string representation of the tag.</p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
</div>
</div>
<hr>
<div class="refsect2">
<a name="pango-ot-info-get"></a><h3>pango_ot_info_get ()</h3>
<pre class="programlisting"><a class="link" href="pango-OpenType-Font-Handling.html#PangoOTInfo"><span class="returnvalue">PangoOTInfo</span></a> *
pango_ot_info_get (<em class="parameter"><code><span class="type">FT_Face</span> face</code></em>);</pre>
<div class="warning"><p><code class="literal">pango_ot_info_get</code> is deprecated and should not be used in newly-written code.</p></div>
<p>Returns the <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTInfo"><span class="type">PangoOTInfo</span></a> structure for the given FreeType font face.</p>
<div class="refsect3">
<a name="pango-ot-info-get.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 <span class="type">FT_Face</span>.</p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
</div>
<div class="refsect3">
<a name="pango-ot-info-get.returns"></a><h4>Returns</h4>
<p> the <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTInfo"><span class="type">PangoOTInfo</span></a> for <em class="parameter"><code>face</code></em>
. This object will have
the same lifetime as <em class="parameter"><code>face</code></em>
.</p>
</div>
<p class="since">Since: <a class="link" href="api-index-1-2.html#api-index-1.2">1.2</a></p>
</div>
<hr>
<div class="refsect2">
<a name="pango-ot-info-find-script"></a><h3>pango_ot_info_find_script ()</h3>
<pre class="programlisting"><span class="returnvalue">gboolean</span>
pango_ot_info_find_script (<em class="parameter"><code><a class="link" href="pango-OpenType-Font-Handling.html#PangoOTInfo"><span class="type">PangoOTInfo</span></a> *info</code></em>,
                           <em class="parameter"><code><a class="link" href="pango-OpenType-Font-Handling.html#PangoOTTableType" title="enum PangoOTTableType"><span class="type">PangoOTTableType</span></a> table_type</code></em>,
                           <em class="parameter"><code><a class="link" href="pango-OpenType-Font-Handling.html#PangoOTTag" title="PangoOTTag"><span class="type">PangoOTTag</span></a> script_tag</code></em>,
                           <em class="parameter"><code><span class="type">guint</span> *script_index</code></em>);</pre>
<div class="warning"><p><code class="literal">pango_ot_info_find_script</code> is deprecated and should not be used in newly-written code.</p></div>
<p>Finds the index of a script.  If not found, tries to find the 'DFLT'
and then 'dflt' scripts and return the index of that in <em class="parameter"><code>script_index</code></em>
.
If none of those is found either, <a class="link" href="pango-OpenType-Font-Handling.html#PANGO-OT-NO-SCRIPT:CAPS" title="PANGO_OT_NO_SCRIPT"><code class="literal">PANGO_OT_NO_SCRIPT</code></a> is placed in
<em class="parameter"><code>script_index</code></em>
.</p>
<p>All other functions taking an input script_index parameter know
how to handle <a class="link" href="pango-OpenType-Font-Handling.html#PANGO-OT-NO-SCRIPT:CAPS" title="PANGO_OT_NO_SCRIPT"><code class="literal">PANGO_OT_NO_SCRIPT</code></a>, so one can ignore the return
value of this function completely and proceed, to enjoy the automatic
fallback to the 'DFLT'/'dflt' script.</p>
<div class="refsect3">
<a name="pango-ot-info-find-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>info</p></td>
<td class="parameter_description"><p>a <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTInfo"><span class="type">PangoOTInfo</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>table_type</p></td>
<td class="parameter_description"><p>the table type to obtain information about.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>script_tag</p></td>
<td class="parameter_description"><p>the tag of the script to find.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>script_index</p></td>
<td class="parameter_description"><p>location to store the index of the
script, or <code class="literal">NULL</code>. </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>
<div class="refsect3">
<a name="pango-ot-info-find-script.returns"></a><h4>Returns</h4>
<p> <code class="literal">TRUE</code> if the script was found.</p>
</div>
</div>
<hr>
<div class="refsect2">
<a name="pango-ot-info-find-language"></a><h3>pango_ot_info_find_language ()</h3>
<pre class="programlisting"><span class="returnvalue">gboolean</span>
pango_ot_info_find_language (<em class="parameter"><code><a class="link" href="pango-OpenType-Font-Handling.html#PangoOTInfo"><span class="type">PangoOTInfo</span></a> *info</code></em>,
                             <em class="parameter"><code><a class="link" href="pango-OpenType-Font-Handling.html#PangoOTTableType" title="enum PangoOTTableType"><span class="type">PangoOTTableType</span></a> table_type</code></em>,
                             <em class="parameter"><code><span class="type">guint</span> script_index</code></em>,
                             <em class="parameter"><code><a class="link" href="pango-OpenType-Font-Handling.html#PangoOTTag" title="PangoOTTag"><span class="type">PangoOTTag</span></a> language_tag</code></em>,
                             <em class="parameter"><code><span class="type">guint</span> *language_index</code></em>,
                             <em class="parameter"><code><span class="type">guint</span> *required_feature_index</code></em>);</pre>
<div class="warning"><p><code class="literal">pango_ot_info_find_language</code> is deprecated and should not be used in newly-written code.</p></div>
<p>Finds the index of a language and its required feature index.
If the language is not found, sets <em class="parameter"><code>language_index</code></em>
 to
PANGO_OT_DEFAULT_LANGUAGE and the required feature of the default language
system is returned in required_feature_index.  For best compatibility with
some fonts, also searches the language system tag 'dflt' before falling
back to the default language system, but that is transparent to the user.
The user can simply ignore the return value of this function to
automatically fall back to the default language system.</p>
<div class="refsect3">
<a name="pango-ot-info-find-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>info</p></td>
<td class="parameter_description"><p>a <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTInfo"><span class="type">PangoOTInfo</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>table_type</p></td>
<td class="parameter_description"><p>the table type to obtain information about.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>script_index</p></td>
<td class="parameter_description"><p>the index of the script whose languages are searched.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>language_tag</p></td>
<td class="parameter_description"><p>the tag of the language to find.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>language_index</p></td>
<td class="parameter_description"><p>location to store the index of
the language, or <code class="literal">NULL</code>. </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>required_feature_index</p></td>
<td class="parameter_description"><p>location to store the
required feature index of the language, or <code class="literal">NULL</code>. </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>
<div class="refsect3">
<a name="pango-ot-info-find-language.returns"></a><h4>Returns</h4>
<p> <code class="literal">TRUE</code> if the language was found.</p>
</div>
</div>
<hr>
<div class="refsect2">
<a name="pango-ot-info-find-feature"></a><h3>pango_ot_info_find_feature ()</h3>
<pre class="programlisting"><span class="returnvalue">gboolean</span>
pango_ot_info_find_feature (<em class="parameter"><code><a class="link" href="pango-OpenType-Font-Handling.html#PangoOTInfo"><span class="type">PangoOTInfo</span></a> *info</code></em>,
                            <em class="parameter"><code><a class="link" href="pango-OpenType-Font-Handling.html#PangoOTTableType" title="enum PangoOTTableType"><span class="type">PangoOTTableType</span></a> table_type</code></em>,
                            <em class="parameter"><code><a class="link" href="pango-OpenType-Font-Handling.html#PangoOTTag" title="PangoOTTag"><span class="type">PangoOTTag</span></a> feature_tag</code></em>,
                            <em class="parameter"><code><span class="type">guint</span> script_index</code></em>,
                            <em class="parameter"><code><span class="type">guint</span> language_index</code></em>,
                            <em class="parameter"><code><span class="type">guint</span> *feature_index</code></em>);</pre>
<div class="warning"><p><code class="literal">pango_ot_info_find_feature</code> is deprecated and should not be used in newly-written code.</p></div>
<p>Finds the index of a feature.  If the feature is not found, sets
<em class="parameter"><code>feature_index</code></em>
 to PANGO_OT_NO_FEATURE, which is safe to pass to
<a class="link" href="pango-OpenType-Font-Handling.html#pango-ot-ruleset-add-feature" title="pango_ot_ruleset_add_feature ()"><code class="function">pango_ot_ruleset_add_feature()</code></a> and similar functions.</p>
<p>In the future, this may set <em class="parameter"><code>feature_index</code></em>
 to an special value that if used
in <a class="link" href="pango-OpenType-Font-Handling.html#pango-ot-ruleset-add-feature" title="pango_ot_ruleset_add_feature ()"><code class="function">pango_ot_ruleset_add_feature()</code></a> will ask Pango to synthesize the
requested feature based on Unicode properties and data.  However, this
function will still return <code class="literal">FALSE</code> in those cases.  So, users may want to
ignore the return value of this function in certain cases.</p>
<div class="refsect3">
<a name="pango-ot-info-find-feature.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>info</p></td>
<td class="parameter_description"><p>a <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTInfo"><span class="type">PangoOTInfo</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>table_type</p></td>
<td class="parameter_description"><p>the table type to obtain information about.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>feature_tag</p></td>
<td class="parameter_description"><p>the tag of the feature to find.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>script_index</p></td>
<td class="parameter_description"><p>the index of the script.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>language_index</p></td>
<td class="parameter_description"><p>the index of the language whose features are searched,
or <a class="link" href="pango-OpenType-Font-Handling.html#PANGO-OT-DEFAULT-LANGUAGE:CAPS" title="PANGO_OT_DEFAULT_LANGUAGE"><code class="literal">PANGO_OT_DEFAULT_LANGUAGE</code></a> to use the default language of the script.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>feature_index</p></td>
<td class="parameter_description"><p>location to store the index of
the feature, or <code class="literal">NULL</code>. </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>
<div class="refsect3">
<a name="pango-ot-info-find-feature.returns"></a><h4>Returns</h4>
<p> <code class="literal">TRUE</code> if the feature was found.</p>
</div>
</div>
<hr>
<div class="refsect2">
<a name="pango-ot-info-list-scripts"></a><h3>pango_ot_info_list_scripts ()</h3>
<pre class="programlisting"><a class="link" href="pango-OpenType-Font-Handling.html#PangoOTTag" title="PangoOTTag"><span class="returnvalue">PangoOTTag</span></a> *
pango_ot_info_list_scripts (<em class="parameter"><code><a class="link" href="pango-OpenType-Font-Handling.html#PangoOTInfo"><span class="type">PangoOTInfo</span></a> *info</code></em>,
                            <em class="parameter"><code><a class="link" href="pango-OpenType-Font-Handling.html#PangoOTTableType" title="enum PangoOTTableType"><span class="type">PangoOTTableType</span></a> table_type</code></em>);</pre>
<div class="warning"><p><code class="literal">pango_ot_info_list_scripts</code> is deprecated and should not be used in newly-written code.</p></div>
<p>Obtains the list of available scripts.</p>
<div class="refsect3">
<a name="pango-ot-info-list-scripts.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>info</p></td>
<td class="parameter_description"><p>a <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTInfo"><span class="type">PangoOTInfo</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>table_type</p></td>
<td class="parameter_description"><p>the table type to obtain information about.</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect3">
<a name="pango-ot-info-list-scripts.returns"></a><h4>Returns</h4>
<p> a newly-allocated zero-terminated array containing the tags of the
available scripts.  Should be freed using <code class="function">g_free()</code>.</p>
</div>
</div>
<hr>
<div class="refsect2">
<a name="pango-ot-info-list-languages"></a><h3>pango_ot_info_list_languages ()</h3>
<pre class="programlisting"><a class="link" href="pango-OpenType-Font-Handling.html#PangoOTTag" title="PangoOTTag"><span class="returnvalue">PangoOTTag</span></a> *
pango_ot_info_list_languages (<em class="parameter"><code><a class="link" href="pango-OpenType-Font-Handling.html#PangoOTInfo"><span class="type">PangoOTInfo</span></a> *info</code></em>,
                              <em class="parameter"><code><a class="link" href="pango-OpenType-Font-Handling.html#PangoOTTableType" title="enum PangoOTTableType"><span class="type">PangoOTTableType</span></a> table_type</code></em>,
                              <em class="parameter"><code><span class="type">guint</span> script_index</code></em>,
                              <em class="parameter"><code><a class="link" href="pango-OpenType-Font-Handling.html#PangoOTTag" title="PangoOTTag"><span class="type">PangoOTTag</span></a> language_tag</code></em>);</pre>
<div class="warning"><p><code class="literal">pango_ot_info_list_languages</code> is deprecated and should not be used in newly-written code.</p></div>
<p>Obtains the list of available languages for a given script.</p>
<div class="refsect3">
<a name="pango-ot-info-list-languages.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>info</p></td>
<td class="parameter_description"><p>a <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTInfo"><span class="type">PangoOTInfo</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>table_type</p></td>
<td class="parameter_description"><p>the table type to obtain information about.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>script_index</p></td>
<td class="parameter_description"><p>the index of the script to list languages for.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>language_tag</p></td>
<td class="parameter_description"><p>unused parameter.</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect3">
<a name="pango-ot-info-list-languages.returns"></a><h4>Returns</h4>
<p> a newly-allocated zero-terminated array containing the tags of the
available languages.  Should be freed using <code class="function">g_free()</code>.</p>
</div>
</div>
<hr>
<div class="refsect2">
<a name="pango-ot-info-list-features"></a><h3>pango_ot_info_list_features ()</h3>
<pre class="programlisting"><a class="link" href="pango-OpenType-Font-Handling.html#PangoOTTag" title="PangoOTTag"><span class="returnvalue">PangoOTTag</span></a> *
pango_ot_info_list_features (<em class="parameter"><code><a class="link" href="pango-OpenType-Font-Handling.html#PangoOTInfo"><span class="type">PangoOTInfo</span></a> *info</code></em>,
                             <em class="parameter"><code><a class="link" href="pango-OpenType-Font-Handling.html#PangoOTTableType" title="enum PangoOTTableType"><span class="type">PangoOTTableType</span></a> table_type</code></em>,
                             <em class="parameter"><code><a class="link" href="pango-OpenType-Font-Handling.html#PangoOTTag" title="PangoOTTag"><span class="type">PangoOTTag</span></a> tag</code></em>,
                             <em class="parameter"><code><span class="type">guint</span> script_index</code></em>,
                             <em class="parameter"><code><span class="type">guint</span> language_index</code></em>);</pre>
<div class="warning"><p><code class="literal">pango_ot_info_list_features</code> is deprecated and should not be used in newly-written code.</p></div>
<p>Obtains the list of features for the given language of the given script.</p>
<div class="refsect3">
<a name="pango-ot-info-list-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>info</p></td>
<td class="parameter_description"><p>a <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTInfo"><span class="type">PangoOTInfo</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>table_type</p></td>
<td class="parameter_description"><p>the table type to obtain information about.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>tag</p></td>
<td class="parameter_description"><p>unused parameter.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>script_index</p></td>
<td class="parameter_description"><p>the index of the script to obtain information about.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>language_index</p></td>
<td class="parameter_description"><p>the index of the language to list features for, or
<a class="link" href="pango-OpenType-Font-Handling.html#PANGO-OT-DEFAULT-LANGUAGE:CAPS" title="PANGO_OT_DEFAULT_LANGUAGE"><code class="literal">PANGO_OT_DEFAULT_LANGUAGE</code></a>, to list features for the default
language of the script.</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect3">
<a name="pango-ot-info-list-features.returns"></a><h4>Returns</h4>
<p> a newly-allocated zero-terminated array containing the tags of the
available features.  Should be freed using <code class="function">g_free()</code>.</p>
</div>
</div>
<hr>
<div class="refsect2">
<a name="pango-ot-buffer-new"></a><h3>pango_ot_buffer_new ()</h3>
<pre class="programlisting"><a class="link" href="pango-OpenType-Font-Handling.html#PangoOTBuffer" title="PangoOTBuffer"><span class="returnvalue">PangoOTBuffer</span></a> *
pango_ot_buffer_new (<em class="parameter"><code><a class="link" href="PangoFcFont.html" title="PangoFcFont"><span class="type">PangoFcFont</span></a> *font</code></em>);</pre>
<div class="warning"><p><code class="literal">pango_ot_buffer_new</code> is deprecated and should not be used in newly-written code.</p></div>
<p>Creates a new <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTBuffer" title="PangoOTBuffer"><span class="type">PangoOTBuffer</span></a> for the given OpenType font.</p>
<div class="refsect3">
<a name="pango-ot-buffer-new.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>font</p></td>
<td class="parameter_description"><p>a <a class="link" href="PangoFcFont.html" title="PangoFcFont"><span class="type">PangoFcFont</span></a></p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
</div>
<div class="refsect3">
<a name="pango-ot-buffer-new.returns"></a><h4>Returns</h4>
<p> the newly allocated <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTBuffer" title="PangoOTBuffer"><span class="type">PangoOTBuffer</span></a>, which should
be freed with <a class="link" href="pango-OpenType-Font-Handling.html#pango-ot-buffer-destroy" title="pango_ot_buffer_destroy ()"><code class="function">pango_ot_buffer_destroy()</code></a>.</p>
</div>
<p class="since">Since: <a class="link" href="api-index-1-4.html#api-index-1.4">1.4</a></p>
</div>
<hr>
<div class="refsect2">
<a name="pango-ot-buffer-destroy"></a><h3>pango_ot_buffer_destroy ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
pango_ot_buffer_destroy (<em class="parameter"><code><a class="link" href="pango-OpenType-Font-Handling.html#PangoOTBuffer" title="PangoOTBuffer"><span class="type">PangoOTBuffer</span></a> *buffer</code></em>);</pre>
<div class="warning"><p><code class="literal">pango_ot_buffer_destroy</code> is deprecated and should not be used in newly-written code.</p></div>
<p>Destroys a <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTBuffer" title="PangoOTBuffer"><span class="type">PangoOTBuffer</span></a> and free all associated memory.</p>
<div class="refsect3">
<a name="pango-ot-buffer-destroy.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>buffer</p></td>
<td class="parameter_description"><p>a <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTBuffer" title="PangoOTBuffer"><span class="type">PangoOTBuffer</span></a></p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
</div>
<p class="since">Since: <a class="link" href="api-index-1-4.html#api-index-1.4">1.4</a></p>
</div>
<hr>
<div class="refsect2">
<a name="pango-ot-buffer-clear"></a><h3>pango_ot_buffer_clear ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
pango_ot_buffer_clear (<em class="parameter"><code><a class="link" href="pango-OpenType-Font-Handling.html#PangoOTBuffer" title="PangoOTBuffer"><span class="type">PangoOTBuffer</span></a> *buffer</code></em>);</pre>
<div class="warning"><p><code class="literal">pango_ot_buffer_clear</code> is deprecated and should not be used in newly-written code.</p></div>
<p>Empties a <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTBuffer" title="PangoOTBuffer"><span class="type">PangoOTBuffer</span></a>, make it ready to add glyphs to.</p>
<div class="refsect3">
<a name="pango-ot-buffer-clear.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>buffer</p></td>
<td class="parameter_description"><p>a <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTBuffer" title="PangoOTBuffer"><span class="type">PangoOTBuffer</span></a></p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
</div>
<p class="since">Since: <a class="link" href="api-index-1-4.html#api-index-1.4">1.4</a></p>
</div>
<hr>
<div class="refsect2">
<a name="pango-ot-buffer-add-glyph"></a><h3>pango_ot_buffer_add_glyph ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
pango_ot_buffer_add_glyph (<em class="parameter"><code><a class="link" href="pango-OpenType-Font-Handling.html#PangoOTBuffer" title="PangoOTBuffer"><span class="type">PangoOTBuffer</span></a> *buffer</code></em>,
                           <em class="parameter"><code><span class="type">guint</span> glyph</code></em>,
                           <em class="parameter"><code><span class="type">guint</span> properties</code></em>,
                           <em class="parameter"><code><span class="type">guint</span> cluster</code></em>);</pre>
<div class="warning"><p><code class="literal">pango_ot_buffer_add_glyph</code> is deprecated and should not be used in newly-written code.</p></div>
<p>Appends a glyph to a <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTBuffer" title="PangoOTBuffer"><span class="type">PangoOTBuffer</span></a>, with <em class="parameter"><code>properties</code></em>
 identifying which
features should be applied on this glyph.  See <a class="link" href="pango-OpenType-Font-Handling.html#pango-ot-ruleset-add-feature" title="pango_ot_ruleset_add_feature ()"><code class="function">pango_ot_ruleset_add_feature()</code></a>.</p>
<div class="refsect3">
<a name="pango-ot-buffer-add-glyph.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>buffer</p></td>
<td class="parameter_description"><p>a <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTBuffer" title="PangoOTBuffer"><span class="type">PangoOTBuffer</span></a></p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>glyph</p></td>
<td class="parameter_description"><p>the glyph index to add, like a <a class="link" href="pango-Glyph-Storage.html#PangoGlyph" title="PangoGlyph"><span class="type">PangoGlyph</span></a></p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>properties</p></td>
<td class="parameter_description"><p>the glyph properties</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>cluster</p></td>
<td class="parameter_description"><p>the cluster that this glyph belongs to</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<p class="since">Since: <a class="link" href="api-index-1-4.html#api-index-1.4">1.4</a></p>
</div>
<hr>
<div class="refsect2">
<a name="pango-ot-buffer-set-rtl"></a><h3>pango_ot_buffer_set_rtl ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
pango_ot_buffer_set_rtl (<em class="parameter"><code><a class="link" href="pango-OpenType-Font-Handling.html#PangoOTBuffer" title="PangoOTBuffer"><span class="type">PangoOTBuffer</span></a> *buffer</code></em>,
                         <em class="parameter"><code><span class="type">gboolean</span> rtl</code></em>);</pre>
<div class="warning"><p><code class="literal">pango_ot_buffer_set_rtl</code> is deprecated and should not be used in newly-written code.</p></div>
<p>Sets whether glyphs will be rendered right-to-left.  This setting
is needed for proper horizontal positioning of right-to-left scripts.</p>
<div class="refsect3">
<a name="pango-ot-buffer-set-rtl.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>buffer</p></td>
<td class="parameter_description"><p>a <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTBuffer" title="PangoOTBuffer"><span class="type">PangoOTBuffer</span></a></p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>rtl</p></td>
<td class="parameter_description"><p><code class="literal">TRUE</code> for right-to-left text</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<p class="since">Since: <a class="link" href="api-index-1-4.html#api-index-1.4">1.4</a></p>
</div>
<hr>
<div class="refsect2">
<a name="pango-ot-buffer-set-zero-width-marks"></a><h3>pango_ot_buffer_set_zero_width_marks ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
pango_ot_buffer_set_zero_width_marks (<em class="parameter"><code><a class="link" href="pango-OpenType-Font-Handling.html#PangoOTBuffer" title="PangoOTBuffer"><span class="type">PangoOTBuffer</span></a> *buffer</code></em>,
                                      <em class="parameter"><code><span class="type">gboolean</span> zero_width_marks</code></em>);</pre>
<div class="warning"><p><code class="literal">pango_ot_buffer_set_zero_width_marks</code> is deprecated and should not be used in newly-written code.</p></div>
<p>Sets whether characters with a mark class should be forced to zero width.
This setting is needed for proper positioning of Arabic accents,
but will produce incorrect results with standard OpenType Indic
fonts.</p>
<div class="refsect3">
<a name="pango-ot-buffer-set-zero-width-marks.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>buffer</p></td>
<td class="parameter_description"><p>a <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTBuffer" title="PangoOTBuffer"><span class="type">PangoOTBuffer</span></a></p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>zero_width_marks</p></td>
<td class="parameter_description"><p><code class="literal">TRUE</code> if characters with a mark class should
be forced to zero width.</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<p class="since">Since: <a class="link" href="api-index-1-6.html#api-index-1.6">1.6</a></p>
</div>
<hr>
<div class="refsect2">
<a name="pango-ot-buffer-get-glyphs"></a><h3>pango_ot_buffer_get_glyphs ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
pango_ot_buffer_get_glyphs (<em class="parameter"><code>const <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTBuffer" title="PangoOTBuffer"><span class="type">PangoOTBuffer</span></a> *buffer</code></em>,
                            <em class="parameter"><code><a class="link" href="pango-OpenType-Font-Handling.html#PangoOTGlyph" title="struct PangoOTGlyph"><span class="type">PangoOTGlyph</span></a> **glyphs</code></em>,
                            <em class="parameter"><code><span class="type">int</span> *n_glyphs</code></em>);</pre>
<div class="warning"><p><code class="literal">pango_ot_buffer_get_glyphs</code> is deprecated and should not be used in newly-written code.</p></div>
<p>Gets the glyph array contained in a <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTBuffer" title="PangoOTBuffer"><span class="type">PangoOTBuffer</span></a>.  The glyphs are
owned by the buffer and should not be freed, and are only valid as long
as buffer is not modified.</p>
<div class="refsect3">
<a name="pango-ot-buffer-get-glyphs.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>buffer</p></td>
<td class="parameter_description"><p>a <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTBuffer" title="PangoOTBuffer"><span class="type">PangoOTBuffer</span></a></p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>glyphs</p></td>
<td class="parameter_description"><p>location to
store the array of glyphs, or <code class="literal">NULL</code>. </p></td>
<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=n_glyphs][<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>n_glyphs</p></td>
<td class="parameter_description"><p>location to store the number of
glyphs, or <code class="literal">NULL</code>. </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>
<p class="since">Since: <a class="link" href="api-index-1-4.html#api-index-1.4">1.4</a></p>
</div>
<hr>
<div class="refsect2">
<a name="pango-ot-buffer-output"></a><h3>pango_ot_buffer_output ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
pango_ot_buffer_output (<em class="parameter"><code>const <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTBuffer" title="PangoOTBuffer"><span class="type">PangoOTBuffer</span></a> *buffer</code></em>,
                        <em class="parameter"><code><a class="link" href="pango-Glyph-Storage.html#PangoGlyphString"><span class="type">PangoGlyphString</span></a> *glyphs</code></em>);</pre>
<div class="warning"><p><code class="literal">pango_ot_buffer_output</code> is deprecated and should not be used in newly-written code.</p></div>
<p>Exports the glyphs in a <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTBuffer" title="PangoOTBuffer"><span class="type">PangoOTBuffer</span></a> into a <a class="link" href="pango-Glyph-Storage.html#PangoGlyphString"><span class="type">PangoGlyphString</span></a>.  This is
typically used after the OpenType layout processing is over, to convert the
resulting glyphs into a generic Pango glyph string.</p>
<div class="refsect3">
<a name="pango-ot-buffer-output.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>buffer</p></td>
<td class="parameter_description"><p>a <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTBuffer" title="PangoOTBuffer"><span class="type">PangoOTBuffer</span></a></p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>glyphs</p></td>
<td class="parameter_description"><p>a <a class="link" href="pango-Glyph-Storage.html#PangoGlyphString"><span class="type">PangoGlyphString</span></a></p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<p class="since">Since: <a class="link" href="api-index-1-4.html#api-index-1.4">1.4</a></p>
</div>
<hr>
<div class="refsect2">
<a name="pango-ot-ruleset-get-for-description"></a><h3>pango_ot_ruleset_get_for_description ()</h3>
<pre class="programlisting">const <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTRuleset"><span class="returnvalue">PangoOTRuleset</span></a> *
pango_ot_ruleset_get_for_description (<em class="parameter"><code><a class="link" href="pango-OpenType-Font-Handling.html#PangoOTInfo"><span class="type">PangoOTInfo</span></a> *info</code></em>,
                                      <em class="parameter"><code>const <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTRulesetDescription" title="struct PangoOTRulesetDescription"><span class="type">PangoOTRulesetDescription</span></a> *desc</code></em>);</pre>
<div class="warning"><p><code class="literal">pango_ot_ruleset_get_for_description</code> is deprecated and should not be used in newly-written code.</p></div>
<p>Returns a ruleset for the given OpenType info and ruleset
description.  Rulesets are created on demand using
<a class="link" href="pango-OpenType-Font-Handling.html#pango-ot-ruleset-new-from-description" title="pango_ot_ruleset_new_from_description ()"><code class="function">pango_ot_ruleset_new_from_description()</code></a>.
The returned ruleset should not be modified or destroyed.</p>
<p>The static feature map members of <em class="parameter"><code>desc</code></em>
 should be alive as
long as <em class="parameter"><code>info</code></em>
 is.</p>
<div class="refsect3">
<a name="pango-ot-ruleset-get-for-description.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>info</p></td>
<td class="parameter_description"><p>a <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTInfo"><span class="type">PangoOTInfo</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>desc</p></td>
<td class="parameter_description"><p>a <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTRulesetDescription" title="struct PangoOTRulesetDescription"><span class="type">PangoOTRulesetDescription</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect3">
<a name="pango-ot-ruleset-get-for-description.returns"></a><h4>Returns</h4>
<p> the <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTRuleset"><span class="type">PangoOTRuleset</span></a> for <em class="parameter"><code>desc</code></em>
. This object will have
the same lifetime as <em class="parameter"><code>info</code></em>
.</p>
</div>
<p class="since">Since: <a class="link" href="api-index-1-18.html#api-index-1.18">1.18</a></p>
</div>
<hr>
<div class="refsect2">
<a name="pango-ot-ruleset-new"></a><h3>pango_ot_ruleset_new ()</h3>
<pre class="programlisting"><a class="link" href="pango-OpenType-Font-Handling.html#PangoOTRuleset"><span class="returnvalue">PangoOTRuleset</span></a> *
pango_ot_ruleset_new (<em class="parameter"><code><a class="link" href="pango-OpenType-Font-Handling.html#PangoOTInfo"><span class="type">PangoOTInfo</span></a> *info</code></em>);</pre>
<div class="warning"><p><code class="literal">pango_ot_ruleset_new</code> is deprecated and should not be used in newly-written code.</p></div>
<p>Creates a new <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTRuleset"><span class="type">PangoOTRuleset</span></a> for the given OpenType info.</p>
<div class="refsect3">
<a name="pango-ot-ruleset-new.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>info</p></td>
<td class="parameter_description"><p>a <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTInfo"><span class="type">PangoOTInfo</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
</div>
<div class="refsect3">
<a name="pango-ot-ruleset-new.returns"></a><h4>Returns</h4>
<p> the newly allocated <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTRuleset"><span class="type">PangoOTRuleset</span></a>, which
should be freed with <code class="function">g_object_unref()</code>.</p>
</div>
</div>
<hr>
<div class="refsect2">
<a name="pango-ot-ruleset-new-for"></a><h3>pango_ot_ruleset_new_for ()</h3>
<pre class="programlisting"><a class="link" href="pango-OpenType-Font-Handling.html#PangoOTRuleset"><span class="returnvalue">PangoOTRuleset</span></a> *
pango_ot_ruleset_new_for (<em class="parameter"><code><a class="link" href="pango-OpenType-Font-Handling.html#PangoOTInfo"><span class="type">PangoOTInfo</span></a> *info</code></em>,
                          <em class="parameter"><code><a class="link" href="pango-Scripts-and-Languages.html#PangoScript" title="enum PangoScript"><span class="type">PangoScript</span></a> script</code></em>,
                          <em class="parameter"><code><a class="link" href="pango-Scripts-and-Languages.html#PangoLanguage"><span class="type">PangoLanguage</span></a> *language</code></em>);</pre>
<div class="warning"><p><code class="literal">pango_ot_ruleset_new_for</code> is deprecated and should not be used in newly-written code.</p></div>
<p>Creates a new <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTRuleset"><span class="type">PangoOTRuleset</span></a> for the given OpenType info, script, and
language.</p>
<p>This function is part of a convenience scheme that highly simplifies
using a <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTRuleset"><span class="type">PangoOTRuleset</span></a> to represent features for a specific pair of script
and language.  So one can use this function passing in the script and
language of interest, and later try to add features to the ruleset by just
specifying the feature name or tag, without having to deal with finding
script, language, or feature indices manually.</p>
<p>In excess to what <a class="link" href="pango-OpenType-Font-Handling.html#pango-ot-ruleset-new" title="pango_ot_ruleset_new ()"><code class="function">pango_ot_ruleset_new()</code></a> does, this function will:</p>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
  Find the <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTTag" title="PangoOTTag"><span class="type">PangoOTTag</span></a> script and language tags associated with
  <em class="parameter"><code>script</code></em> and <em class="parameter"><code>language</code></em> using <a class="link" href="pango-OpenType-Font-Handling.html#pango-ot-tag-from-script" title="pango_ot_tag_from_script ()"><code class="function">pango_ot_tag_from_script()</code></a> and
  <a class="link" href="pango-OpenType-Font-Handling.html#pango-ot-tag-from-language" title="pango_ot_tag_from_language ()"><code class="function">pango_ot_tag_from_language()</code></a>,
  </li>
<li class="listitem">
  For each of table types <a class="link" href="pango-OpenType-Font-Handling.html#PANGO-OT-TABLE-GSUB:CAPS"><code class="literal">PANGO_OT_TABLE_GSUB</code></a> and <a class="link" href="pango-OpenType-Font-Handling.html#PANGO-OT-TABLE-GPOS:CAPS"><code class="literal">PANGO_OT_TABLE_GPOS</code></a>,
  find the script index of the script tag found and the language
  system index of the language tag found in that script system, using
  <a class="link" href="pango-OpenType-Font-Handling.html#pango-ot-info-find-script" title="pango_ot_info_find_script ()"><code class="function">pango_ot_info_find_script()</code></a> and <a class="link" href="pango-OpenType-Font-Handling.html#pango-ot-info-find-language" title="pango_ot_info_find_language ()"><code class="function">pango_ot_info_find_language()</code></a>,
  </li>
<li class="listitem">
  For found language-systems, if they have required feature
  index, add that feature to the ruleset using
  <a class="link" href="pango-OpenType-Font-Handling.html#pango-ot-ruleset-add-feature" title="pango_ot_ruleset_add_feature ()"><code class="function">pango_ot_ruleset_add_feature()</code></a>,
  </li>
<li class="listitem">
  Remember found script and language indices for both table types,
  and use them in future <a class="link" href="pango-OpenType-Font-Handling.html#pango-ot-ruleset-maybe-add-feature" title="pango_ot_ruleset_maybe_add_feature ()"><code class="function">pango_ot_ruleset_maybe_add_feature()</code></a> and
  <a class="link" href="pango-OpenType-Font-Handling.html#pango-ot-ruleset-maybe-add-features" title="pango_ot_ruleset_maybe_add_features ()"><code class="function">pango_ot_ruleset_maybe_add_features()</code></a>.
  </li>
</ul></div>
<p>Because of the way return values of <a class="link" href="pango-OpenType-Font-Handling.html#pango-ot-info-find-script" title="pango_ot_info_find_script ()"><code class="function">pango_ot_info_find_script()</code></a> and
<a class="link" href="pango-OpenType-Font-Handling.html#pango-ot-info-find-language" title="pango_ot_info_find_language ()"><code class="function">pango_ot_info_find_language()</code></a> are ignored, this function automatically
finds and uses the 'DFLT' script and the default language-system.</p>
<div class="refsect3">
<a name="pango-ot-ruleset-new-for.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>info</p></td>
<td class="parameter_description"><p>a <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTInfo"><span class="type">PangoOTInfo</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>script</p></td>
<td class="parameter_description"><p>a <a class="link" href="pango-Scripts-and-Languages.html#PangoScript" title="enum PangoScript"><span class="type">PangoScript</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>language</p></td>
<td class="parameter_description"><p>a <a class="link" href="pango-Scripts-and-Languages.html#PangoLanguage"><span class="type">PangoLanguage</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect3">
<a name="pango-ot-ruleset-new-for.returns"></a><h4>Returns</h4>
<p> the newly allocated <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTRuleset"><span class="type">PangoOTRuleset</span></a>, which
should be freed with <code class="function">g_object_unref()</code>.</p>
</div>
<p class="since">Since: <a class="link" href="api-index-1-18.html#api-index-1.18">1.18</a></p>
</div>
<hr>
<div class="refsect2">
<a name="pango-ot-ruleset-new-from-description"></a><h3>pango_ot_ruleset_new_from_description ()</h3>
<pre class="programlisting"><a class="link" href="pango-OpenType-Font-Handling.html#PangoOTRuleset"><span class="returnvalue">PangoOTRuleset</span></a> *
pango_ot_ruleset_new_from_description (<em class="parameter"><code><a class="link" href="pango-OpenType-Font-Handling.html#PangoOTInfo"><span class="type">PangoOTInfo</span></a> *info</code></em>,
                                       <em class="parameter"><code>const <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTRulesetDescription" title="struct PangoOTRulesetDescription"><span class="type">PangoOTRulesetDescription</span></a> *desc</code></em>);</pre>
<div class="warning"><p><code class="literal">pango_ot_ruleset_new_from_description</code> is deprecated and should not be used in newly-written code.</p></div>
<p>Creates a new <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTRuleset"><span class="type">PangoOTRuleset</span></a> for the given OpenType infor and
matching the given ruleset description.</p>
<p>This is a convenience function that calls <a class="link" href="pango-OpenType-Font-Handling.html#pango-ot-ruleset-new-for" title="pango_ot_ruleset_new_for ()"><code class="function">pango_ot_ruleset_new_for()</code></a> and
adds the static GSUB/GPOS features to the resulting ruleset, followed by
adding other features to both GSUB and GPOS.</p>
<p>The static feature map members of <em class="parameter"><code>desc</code></em>
 should be alive as
long as <em class="parameter"><code>info</code></em>
 is.</p>
<div class="refsect3">
<a name="pango-ot-ruleset-new-from-description.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>info</p></td>
<td class="parameter_description"><p>a <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTInfo"><span class="type">PangoOTInfo</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>desc</p></td>
<td class="parameter_description"><p>a <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTRulesetDescription" title="struct PangoOTRulesetDescription"><span class="type">PangoOTRulesetDescription</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect3">
<a name="pango-ot-ruleset-new-from-description.returns"></a><h4>Returns</h4>
<p> the newly allocated <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTRuleset"><span class="type">PangoOTRuleset</span></a>, which
should be freed with <code class="function">g_object_unref()</code>.</p>
</div>
<p class="since">Since: <a class="link" href="api-index-1-18.html#api-index-1.18">1.18</a></p>
</div>
<hr>
<div class="refsect2">
<a name="pango-ot-ruleset-add-feature"></a><h3>pango_ot_ruleset_add_feature ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
pango_ot_ruleset_add_feature (<em class="parameter"><code><a class="link" href="pango-OpenType-Font-Handling.html#PangoOTRuleset"><span class="type">PangoOTRuleset</span></a> *ruleset</code></em>,
                              <em class="parameter"><code><a class="link" href="pango-OpenType-Font-Handling.html#PangoOTTableType" title="enum PangoOTTableType"><span class="type">PangoOTTableType</span></a> table_type</code></em>,
                              <em class="parameter"><code><span class="type">guint</span> feature_index</code></em>,
                              <em class="parameter"><code><span class="type">gulong</span> property_bit</code></em>);</pre>
<div class="warning"><p><code class="literal">pango_ot_ruleset_add_feature</code> is deprecated and should not be used in newly-written code.</p></div>
<p>Adds a feature to the ruleset.</p>
<div class="refsect3">
<a name="pango-ot-ruleset-add-feature.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>ruleset</p></td>
<td class="parameter_description"><p>a <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTRuleset"><span class="type">PangoOTRuleset</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>table_type</p></td>
<td class="parameter_description"><p>the table type to add a feature to.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>feature_index</p></td>
<td class="parameter_description"><p>the index of the feature to add.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>property_bit</p></td>
<td class="parameter_description"><p>the property bit to use for this feature. Used to identify
the glyphs that this feature should be applied to, or
<a class="link" href="pango-OpenType-Font-Handling.html#PANGO-OT-ALL-GLYPHS:CAPS" title="PANGO_OT_ALL_GLYPHS"><code class="literal">PANGO_OT_ALL_GLYPHS</code></a> if it should be applied to all glyphs.</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
</div>
<hr>
<div class="refsect2">
<a name="pango-ot-ruleset-maybe-add-feature"></a><h3>pango_ot_ruleset_maybe_add_feature ()</h3>
<pre class="programlisting"><span class="returnvalue">gboolean</span>
pango_ot_ruleset_maybe_add_feature (<em class="parameter"><code><a class="link" href="pango-OpenType-Font-Handling.html#PangoOTRuleset"><span class="type">PangoOTRuleset</span></a> *ruleset</code></em>,
                                    <em class="parameter"><code><a class="link" href="pango-OpenType-Font-Handling.html#PangoOTTableType" title="enum PangoOTTableType"><span class="type">PangoOTTableType</span></a> table_type</code></em>,
                                    <em class="parameter"><code><a class="link" href="pango-OpenType-Font-Handling.html#PangoOTTag" title="PangoOTTag"><span class="type">PangoOTTag</span></a> feature_tag</code></em>,
                                    <em class="parameter"><code><span class="type">gulong</span> property_bit</code></em>);</pre>
<div class="warning"><p><code class="literal">pango_ot_ruleset_maybe_add_feature</code> is deprecated and should not be used in newly-written code.</p></div>
<p>This is a convenience function that first tries to find the feature
using <a class="link" href="pango-OpenType-Font-Handling.html#pango-ot-info-find-feature" title="pango_ot_info_find_feature ()"><code class="function">pango_ot_info_find_feature()</code></a> and the ruleset script and language
passed to <a class="link" href="pango-OpenType-Font-Handling.html#pango-ot-ruleset-new-for" title="pango_ot_ruleset_new_for ()"><code class="function">pango_ot_ruleset_new_for()</code></a>,
and if the feature is found, adds it to the ruleset.</p>
<p>If <em class="parameter"><code>ruleset</code></em>
 was not created using <a class="link" href="pango-OpenType-Font-Handling.html#pango-ot-ruleset-new-for" title="pango_ot_ruleset_new_for ()"><code class="function">pango_ot_ruleset_new_for()</code></a>, this function
does nothing.</p>
<div class="refsect3">
<a name="pango-ot-ruleset-maybe-add-feature.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>ruleset</p></td>
<td class="parameter_description"><p>a <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTRuleset"><span class="type">PangoOTRuleset</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>table_type</p></td>
<td class="parameter_description"><p>the table type to add a feature to.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>feature_tag</p></td>
<td class="parameter_description"><p>the tag of the feature to add.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>property_bit</p></td>
<td class="parameter_description"><p>the property bit to use for this feature. Used to identify
the glyphs that this feature should be applied to, or
<a class="link" href="pango-OpenType-Font-Handling.html#PANGO-OT-ALL-GLYPHS:CAPS" title="PANGO_OT_ALL_GLYPHS"><code class="literal">PANGO_OT_ALL_GLYPHS</code></a> if it should be applied to all glyphs.</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect3">
<a name="pango-ot-ruleset-maybe-add-feature.returns"></a><h4>Returns</h4>
<p> <code class="literal">TRUE</code> if the feature was found and added to ruleset,
<code class="literal">FALSE</code> otherwise.</p>
</div>
<p class="since">Since: <a class="link" href="api-index-1-18.html#api-index-1.18">1.18</a></p>
</div>
<hr>
<div class="refsect2">
<a name="pango-ot-ruleset-maybe-add-features"></a><h3>pango_ot_ruleset_maybe_add_features ()</h3>
<pre class="programlisting"><span class="returnvalue">guint</span>
pango_ot_ruleset_maybe_add_features (<em class="parameter"><code><a class="link" href="pango-OpenType-Font-Handling.html#PangoOTRuleset"><span class="type">PangoOTRuleset</span></a> *ruleset</code></em>,
                                     <em class="parameter"><code><a class="link" href="pango-OpenType-Font-Handling.html#PangoOTTableType" title="enum PangoOTTableType"><span class="type">PangoOTTableType</span></a> table_type</code></em>,
                                     <em class="parameter"><code>const <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTFeatureMap" title="struct PangoOTFeatureMap"><span class="type">PangoOTFeatureMap</span></a> *features</code></em>,
                                     <em class="parameter"><code><span class="type">guint</span> n_features</code></em>);</pre>
<div class="warning"><p><code class="literal">pango_ot_ruleset_maybe_add_features</code> is deprecated and should not be used in newly-written code.</p></div>
<p>This is a convenience function that 
for each feature in the feature map array <em class="parameter"><code>features</code></em>

converts the feature name to a <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTTag" title="PangoOTTag"><span class="type">PangoOTTag</span></a> feature tag using <a class="link" href="pango-OpenType-Font-Handling.html#PANGO-OT-TAG-MAKE:CAPS" title="PANGO_OT_TAG_MAKE()"><code class="function">PANGO_OT_TAG_MAKE()</code></a>
and calls <a class="link" href="pango-OpenType-Font-Handling.html#pango-ot-ruleset-maybe-add-feature" title="pango_ot_ruleset_maybe_add_feature ()"><code class="function">pango_ot_ruleset_maybe_add_feature()</code></a> on it.</p>
<div class="refsect3">
<a name="pango-ot-ruleset-maybe-add-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>ruleset</p></td>
<td class="parameter_description"><p>a <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTRuleset"><span class="type">PangoOTRuleset</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>table_type</p></td>
<td class="parameter_description"><p>the table type to add features to.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>features</p></td>
<td class="parameter_description"><p>array of feature name and property bits to add.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>n_features</p></td>
<td class="parameter_description"><p>number of feature records in <em class="parameter"><code>features</code></em>
array.</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect3">
<a name="pango-ot-ruleset-maybe-add-features.returns"></a><h4>Returns</h4>
<p> The number of features in <em class="parameter"><code>features</code></em>
that were found
and added to <em class="parameter"><code>ruleset</code></em>
.</p>
</div>
<p class="since">Since: <a class="link" href="api-index-1-18.html#api-index-1.18">1.18</a></p>
</div>
<hr>
<div class="refsect2">
<a name="pango-ot-ruleset-get-feature-count"></a><h3>pango_ot_ruleset_get_feature_count ()</h3>
<pre class="programlisting"><span class="returnvalue">guint</span>
pango_ot_ruleset_get_feature_count (<em class="parameter"><code>const <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTRuleset"><span class="type">PangoOTRuleset</span></a> *ruleset</code></em>,
                                    <em class="parameter"><code><span class="type">guint</span> *n_gsub_features</code></em>,
                                    <em class="parameter"><code><span class="type">guint</span> *n_gpos_features</code></em>);</pre>
<div class="warning"><p><code class="literal">pango_ot_ruleset_get_feature_count</code> is deprecated and should not be used in newly-written code.</p></div>
<p>Gets the number of GSUB and GPOS features in the ruleset.</p>
<div class="refsect3">
<a name="pango-ot-ruleset-get-feature-count.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>ruleset</p></td>
<td class="parameter_description"><p>a <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTRuleset"><span class="type">PangoOTRuleset</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>n_gsub_features</p></td>
<td class="parameter_description"><p>location to store number of
GSUB features, or <code class="literal">NULL</code>. </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>n_gpos_features</p></td>
<td class="parameter_description"><p>location to store number of
GPOS features, or <code class="literal">NULL</code>. </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>
<div class="refsect3">
<a name="pango-ot-ruleset-get-feature-count.returns"></a><h4>Returns</h4>
<p> Total number of features in the <em class="parameter"><code>ruleset</code></em>
.</p>
</div>
<p class="since">Since: <a class="link" href="api-index-1-18.html#api-index-1.18">1.18</a></p>
</div>
<hr>
<div class="refsect2">
<a name="pango-ot-ruleset-substitute"></a><h3>pango_ot_ruleset_substitute ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
pango_ot_ruleset_substitute (<em class="parameter"><code>const <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTRuleset"><span class="type">PangoOTRuleset</span></a> *ruleset</code></em>,
                             <em class="parameter"><code><a class="link" href="pango-OpenType-Font-Handling.html#PangoOTBuffer" title="PangoOTBuffer"><span class="type">PangoOTBuffer</span></a> *buffer</code></em>);</pre>
<div class="warning"><p><code class="literal">pango_ot_ruleset_substitute</code> is deprecated and should not be used in newly-written code.</p></div>
<p>Performs the OpenType GSUB substitution on <em class="parameter"><code>buffer</code></em>
 using the features
in <em class="parameter"><code>ruleset</code></em>
</p>
<div class="refsect3">
<a name="pango-ot-ruleset-substitute.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>ruleset</p></td>
<td class="parameter_description"><p>a <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTRuleset"><span class="type">PangoOTRuleset</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>buffer</p></td>
<td class="parameter_description"><p>a <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTBuffer" title="PangoOTBuffer"><span class="type">PangoOTBuffer</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<p class="since">Since: <a class="link" href="api-index-1-4.html#api-index-1.4">1.4</a></p>
</div>
<hr>
<div class="refsect2">
<a name="pango-ot-ruleset-position"></a><h3>pango_ot_ruleset_position ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
pango_ot_ruleset_position (<em class="parameter"><code>const <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTRuleset"><span class="type">PangoOTRuleset</span></a> *ruleset</code></em>,
                           <em class="parameter"><code><a class="link" href="pango-OpenType-Font-Handling.html#PangoOTBuffer" title="PangoOTBuffer"><span class="type">PangoOTBuffer</span></a> *buffer</code></em>);</pre>
<div class="warning"><p><code class="literal">pango_ot_ruleset_position</code> is deprecated and should not be used in newly-written code.</p></div>
<p>Performs the OpenType GPOS positioning on <em class="parameter"><code>buffer</code></em>
 using the features
in <em class="parameter"><code>ruleset</code></em>
</p>
<div class="refsect3">
<a name="pango-ot-ruleset-position.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>ruleset</p></td>
<td class="parameter_description"><p>a <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTRuleset"><span class="type">PangoOTRuleset</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>buffer</p></td>
<td class="parameter_description"><p>a <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTBuffer" title="PangoOTBuffer"><span class="type">PangoOTBuffer</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<p class="since">Since: <a class="link" href="api-index-1-4.html#api-index-1.4">1.4</a></p>
</div>
<hr>
<div class="refsect2">
<a name="pango-ot-ruleset-description-copy"></a><h3>pango_ot_ruleset_description_copy ()</h3>
<pre class="programlisting"><a class="link" href="pango-OpenType-Font-Handling.html#PangoOTRulesetDescription" title="struct PangoOTRulesetDescription"><span class="returnvalue">PangoOTRulesetDescription</span></a> *
pango_ot_ruleset_description_copy (<em class="parameter"><code>const <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTRulesetDescription" title="struct PangoOTRulesetDescription"><span class="type">PangoOTRulesetDescription</span></a> *desc</code></em>);</pre>
<div class="warning"><p><code class="literal">pango_ot_ruleset_description_copy</code> is deprecated and should not be used in newly-written code.</p></div>
<p>Creates a copy of <em class="parameter"><code>desc</code></em>
, which should be freed with
<a class="link" href="pango-OpenType-Font-Handling.html#pango-ot-ruleset-description-free" title="pango_ot_ruleset_description_free ()"><code class="function">pango_ot_ruleset_description_free()</code></a>. Primarily used internally
by <a class="link" href="pango-OpenType-Font-Handling.html#pango-ot-ruleset-get-for-description" title="pango_ot_ruleset_get_for_description ()"><code class="function">pango_ot_ruleset_get_for_description()</code></a> to cache rulesets for
ruleset descriptions.</p>
<div class="refsect3">
<a name="pango-ot-ruleset-description-copy.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>desc</p></td>
<td class="parameter_description"><p>ruleset description to copy</p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
</div>
<div class="refsect3">
<a name="pango-ot-ruleset-description-copy.returns"></a><h4>Returns</h4>
<p> the newly allocated <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTRulesetDescription" title="struct PangoOTRulesetDescription"><span class="type">PangoOTRulesetDescription</span></a>, which
should be freed with <a class="link" href="pango-OpenType-Font-Handling.html#pango-ot-ruleset-description-free" title="pango_ot_ruleset_description_free ()"><code class="function">pango_ot_ruleset_description_free()</code></a>.</p>
</div>
<p class="since">Since: <a class="link" href="api-index-1-18.html#api-index-1.18">1.18</a></p>
</div>
<hr>
<div class="refsect2">
<a name="pango-ot-ruleset-description-equal"></a><h3>pango_ot_ruleset_description_equal ()</h3>
<pre class="programlisting"><span class="returnvalue">gboolean</span>
pango_ot_ruleset_description_equal (<em class="parameter"><code>const <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTRulesetDescription" title="struct PangoOTRulesetDescription"><span class="type">PangoOTRulesetDescription</span></a> *desc1</code></em>,
                                    <em class="parameter"><code>const <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTRulesetDescription" title="struct PangoOTRulesetDescription"><span class="type">PangoOTRulesetDescription</span></a> *desc2</code></em>);</pre>
<div class="warning"><p><code class="literal">pango_ot_ruleset_description_equal</code> is deprecated and should not be used in newly-written code.</p></div>
<p>Compares two ruleset descriptions for equality.
Two ruleset descriptions are considered equal if the rulesets
they describe are provably identical.  This means that their
script, language, and all feature sets should be equal.  For static feature
sets, the array addresses are compared directly, while for other
features, the list of features is compared one by one.
(Two ruleset descriptions may result in identical rulesets
being created, but still compare <code class="literal">FALSE</code>.)</p>
<div class="refsect3">
<a name="pango-ot-ruleset-description-equal.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>desc1</p></td>
<td class="parameter_description"><p>a ruleset description</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>desc2</p></td>
<td class="parameter_description"><p>a ruleset description</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect3">
<a name="pango-ot-ruleset-description-equal.returns"></a><h4>Returns</h4>
<p> <code class="literal">TRUE</code> if two ruleset descriptions are identical,
<code class="literal">FALSE</code> otherwise.</p>
</div>
<p class="since">Since: <a class="link" href="api-index-1-18.html#api-index-1.18">1.18</a></p>
</div>
<hr>
<div class="refsect2">
<a name="pango-ot-ruleset-description-free"></a><h3>pango_ot_ruleset_description_free ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
pango_ot_ruleset_description_free (<em class="parameter"><code><a class="link" href="pango-OpenType-Font-Handling.html#PangoOTRulesetDescription" title="struct PangoOTRulesetDescription"><span class="type">PangoOTRulesetDescription</span></a> *desc</code></em>);</pre>
<div class="warning"><p><code class="literal">pango_ot_ruleset_description_free</code> is deprecated and should not be used in newly-written code.</p></div>
<p>Frees a ruleset description allocated by 
<a class="link" href="pango-OpenType-Font-Handling.html#pango-ot-ruleset-description-copy" title="pango_ot_ruleset_description_copy ()"><code class="function">pango_ot_ruleset_description_copy()</code></a>.</p>
<div class="refsect3">
<a name="pango-ot-ruleset-description-free.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>desc</p></td>
<td class="parameter_description"><p>an allocated <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTRulesetDescription" title="struct PangoOTRulesetDescription"><span class="type">PangoOTRulesetDescription</span></a></p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
</div>
<p class="since">Since: <a class="link" href="api-index-1-18.html#api-index-1.18">1.18</a></p>
</div>
<hr>
<div class="refsect2">
<a name="pango-ot-ruleset-description-hash"></a><h3>pango_ot_ruleset_description_hash ()</h3>
<pre class="programlisting"><span class="returnvalue">guint</span>
pango_ot_ruleset_description_hash (<em class="parameter"><code>const <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTRulesetDescription" title="struct PangoOTRulesetDescription"><span class="type">PangoOTRulesetDescription</span></a> *desc</code></em>);</pre>
<div class="warning"><p><code class="literal">pango_ot_ruleset_description_hash</code> is deprecated and should not be used in newly-written code.</p></div>
<p>Computes a hash of a <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTRulesetDescription" title="struct PangoOTRulesetDescription"><span class="type">PangoOTRulesetDescription</span></a> structure suitable
to be used, for example, as an argument to <code class="function">g_hash_table_new()</code>.</p>
<div class="refsect3">
<a name="pango-ot-ruleset-description-hash.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>desc</p></td>
<td class="parameter_description"><p>a ruleset description</p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
</div>
<div class="refsect3">
<a name="pango-ot-ruleset-description-hash.returns"></a><h4>Returns</h4>
<p> the hash value.</p>
</div>
<p class="since">Since: <a class="link" href="api-index-1-18.html#api-index-1.18">1.18</a></p>
</div>
<hr>
<div class="refsect2">
<a name="pango-ot-tag-from-language"></a><h3>pango_ot_tag_from_language ()</h3>
<pre class="programlisting"><a class="link" href="pango-OpenType-Font-Handling.html#PangoOTTag" title="PangoOTTag"><span class="returnvalue">PangoOTTag</span></a>
pango_ot_tag_from_language (<em class="parameter"><code><a class="link" href="pango-Scripts-and-Languages.html#PangoLanguage"><span class="type">PangoLanguage</span></a> *language</code></em>);</pre>
<div class="warning"><p><code class="literal">pango_ot_tag_from_language</code> is deprecated and should not be used in newly-written code.</p></div>
<p>Finds the OpenType language-system tag best describing <em class="parameter"><code>language</code></em>
.</p>
<div class="refsect3">
<a name="pango-ot-tag-from-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>language</p></td>
<td class="parameter_description"><p>A <a class="link" href="pango-Scripts-and-Languages.html#PangoLanguage"><span class="type">PangoLanguage</span></a>, or <code class="literal">NULL</code>. </p></td>
<td class="parameter_annotations"><span class="annotation">[<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></td>
</tr></tbody>
</table></div>
</div>
<div class="refsect3">
<a name="pango-ot-tag-from-language.returns"></a><h4>Returns</h4>
<p> <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTTag" title="PangoOTTag"><span class="type">PangoOTTag</span></a> best matching <em class="parameter"><code>language</code></em>
or
<a class="link" href="pango-OpenType-Font-Handling.html#PANGO-OT-TAG-DEFAULT-LANGUAGE:CAPS" title="PANGO_OT_TAG_DEFAULT_LANGUAGE"><code class="literal">PANGO_OT_TAG_DEFAULT_LANGUAGE</code></a> if none found or if <em class="parameter"><code>language</code></em>
is <code class="literal">NULL</code>.</p>
</div>
<p class="since">Since: <a class="link" href="api-index-1-18.html#api-index-1.18">1.18</a></p>
</div>
<hr>
<div class="refsect2">
<a name="pango-ot-tag-from-script"></a><h3>pango_ot_tag_from_script ()</h3>
<pre class="programlisting"><a class="link" href="pango-OpenType-Font-Handling.html#PangoOTTag" title="PangoOTTag"><span class="returnvalue">PangoOTTag</span></a>
pango_ot_tag_from_script (<em class="parameter"><code><a class="link" href="pango-Scripts-and-Languages.html#PangoScript" title="enum PangoScript"><span class="type">PangoScript</span></a> script</code></em>);</pre>
<div class="warning"><p><code class="literal">pango_ot_tag_from_script</code> is deprecated and should not be used in newly-written code.</p></div>
<p>Finds the OpenType script tag corresponding to <em class="parameter"><code>script</code></em>
.</p>
<p>The <a class="link" href="pango-Scripts-and-Languages.html#PANGO-SCRIPT-COMMON:CAPS"><code class="literal">PANGO_SCRIPT_COMMON</code></a>, <a class="link" href="pango-Scripts-and-Languages.html#PANGO-SCRIPT-INHERITED:CAPS"><code class="literal">PANGO_SCRIPT_INHERITED</code></a>, and
<a class="link" href="pango-Scripts-and-Languages.html#PANGO-SCRIPT-UNKNOWN:CAPS"><code class="literal">PANGO_SCRIPT_UNKNOWN</code></a> scripts are mapped to the OpenType
'DFLT' script tag that is also defined as
<a class="link" href="pango-OpenType-Font-Handling.html#PANGO-OT-TAG-DEFAULT-SCRIPT:CAPS" title="PANGO_OT_TAG_DEFAULT_SCRIPT"><code class="literal">PANGO_OT_TAG_DEFAULT_SCRIPT</code></a>.</p>
<p>Note that multiple <a class="link" href="pango-Scripts-and-Languages.html#PangoScript" title="enum PangoScript"><span class="type">PangoScript</span></a> values may map to the same
OpenType script tag.  In particular, <a class="link" href="pango-Scripts-and-Languages.html#PANGO-SCRIPT-HIRAGANA:CAPS"><code class="literal">PANGO_SCRIPT_HIRAGANA</code></a>
and <a class="link" href="pango-Scripts-and-Languages.html#PANGO-SCRIPT-KATAKANA:CAPS"><code class="literal">PANGO_SCRIPT_KATAKANA</code></a> both map to the OT tag 'kana'.</p>
<div class="refsect3">
<a name="pango-ot-tag-from-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>script</p></td>
<td class="parameter_description"><p>A <a class="link" href="pango-Scripts-and-Languages.html#PangoScript" title="enum PangoScript"><span class="type">PangoScript</span></a></p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
</div>
<div class="refsect3">
<a name="pango-ot-tag-from-script.returns"></a><h4>Returns</h4>
<p> <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTTag" title="PangoOTTag"><span class="type">PangoOTTag</span></a> corresponding to <em class="parameter"><code>script</code></em>
or
<a class="link" href="pango-OpenType-Font-Handling.html#PANGO-OT-TAG-DEFAULT-SCRIPT:CAPS" title="PANGO_OT_TAG_DEFAULT_SCRIPT"><code class="literal">PANGO_OT_TAG_DEFAULT_SCRIPT</code></a> if none found.</p>
</div>
<p class="since">Since: <a class="link" href="api-index-1-18.html#api-index-1.18">1.18</a></p>
</div>
<hr>
<div class="refsect2">
<a name="pango-ot-tag-to-language"></a><h3>pango_ot_tag_to_language ()</h3>
<pre class="programlisting"><a class="link" href="pango-Scripts-and-Languages.html#PangoLanguage"><span class="returnvalue">PangoLanguage</span></a> *
pango_ot_tag_to_language (<em class="parameter"><code><a class="link" href="pango-OpenType-Font-Handling.html#PangoOTTag" title="PangoOTTag"><span class="type">PangoOTTag</span></a> language_tag</code></em>);</pre>
<div class="warning"><p><code class="literal">pango_ot_tag_to_language</code> is deprecated and should not be used in newly-written code.</p></div>
<p>Finds a <a class="link" href="pango-Scripts-and-Languages.html#PangoLanguage"><span class="type">PangoLanguage</span></a> corresponding to <em class="parameter"><code>language_tag</code></em>
.</p>
<div class="refsect3">
<a name="pango-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>language_tag</p></td>
<td class="parameter_description"><p>A <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTTag" title="PangoOTTag"><span class="type">PangoOTTag</span></a> OpenType language-system tag</p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
</div>
<div class="refsect3">
<a name="pango-ot-tag-to-language.returns"></a><h4>Returns</h4>
<p> <a class="link" href="pango-Scripts-and-Languages.html#PangoLanguage"><span class="type">PangoLanguage</span></a> best matching <em class="parameter"><code>language_tag</code></em>
or
<a class="link" href="pango-Scripts-and-Languages.html#PangoLanguage"><span class="type">PangoLanguage</span></a> corresponding to the string "xx" if none found.</p>
</div>
<p class="since">Since: <a class="link" href="api-index-1-18.html#api-index-1.18">1.18</a></p>
</div>
<hr>
<div class="refsect2">
<a name="pango-ot-tag-to-script"></a><h3>pango_ot_tag_to_script ()</h3>
<pre class="programlisting"><a class="link" href="pango-Scripts-and-Languages.html#PangoScript" title="enum PangoScript"><span class="returnvalue">PangoScript</span></a>
pango_ot_tag_to_script (<em class="parameter"><code><a class="link" href="pango-OpenType-Font-Handling.html#PangoOTTag" title="PangoOTTag"><span class="type">PangoOTTag</span></a> script_tag</code></em>);</pre>
<div class="warning"><p><code class="literal">pango_ot_tag_to_script</code> is deprecated and should not be used in newly-written code.</p></div>
<p>Finds the <a class="link" href="pango-Scripts-and-Languages.html#PangoScript" title="enum PangoScript"><span class="type">PangoScript</span></a> corresponding to <em class="parameter"><code>script_tag</code></em>
.</p>
<p>The 'DFLT' script tag is mapped to <a class="link" href="pango-Scripts-and-Languages.html#PANGO-SCRIPT-COMMON:CAPS"><code class="literal">PANGO_SCRIPT_COMMON</code></a>.</p>
<p>Note that an OpenType script tag may correspond to multiple
<a class="link" href="pango-Scripts-and-Languages.html#PangoScript" title="enum PangoScript"><span class="type">PangoScript</span></a> values.  In such cases, the <a class="link" href="pango-Scripts-and-Languages.html#PangoScript" title="enum PangoScript"><span class="type">PangoScript</span></a> value
with the smallest value is returned.
In particular, <a class="link" href="pango-Scripts-and-Languages.html#PANGO-SCRIPT-HIRAGANA:CAPS"><code class="literal">PANGO_SCRIPT_HIRAGANA</code></a>
and <a class="link" href="pango-Scripts-and-Languages.html#PANGO-SCRIPT-KATAKANA:CAPS"><code class="literal">PANGO_SCRIPT_KATAKANA</code></a> both map to the OT tag 'kana'.
This function will return <a class="link" href="pango-Scripts-and-Languages.html#PANGO-SCRIPT-HIRAGANA:CAPS"><code class="literal">PANGO_SCRIPT_HIRAGANA</code></a> for
'kana'.</p>
<div class="refsect3">
<a name="pango-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>script_tag</p></td>
<td class="parameter_description"><p>A <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTTag" title="PangoOTTag"><span class="type">PangoOTTag</span></a> OpenType script tag</p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
</div>
<div class="refsect3">
<a name="pango-ot-tag-to-script.returns"></a><h4>Returns</h4>
<p> <a class="link" href="pango-Scripts-and-Languages.html#PangoScript" title="enum PangoScript"><span class="type">PangoScript</span></a> corresponding to <em class="parameter"><code>script_tag</code></em>
or
<a class="link" href="pango-Scripts-and-Languages.html#PANGO-SCRIPT-UNKNOWN:CAPS"><code class="literal">PANGO_SCRIPT_UNKNOWN</code></a> if none found.</p>
</div>
<p class="since">Since: <a class="link" href="api-index-1-18.html#api-index-1.18">1.18</a></p>
</div>
</div>
<div class="refsect1">
<a name="pango-OpenType-Font-Handling.other_details"></a><h2>Types and Values</h2>
<div class="refsect2">
<a name="PangoOTTag"></a><h3>PangoOTTag</h3>
<pre class="programlisting">typedef guint32 PangoOTTag;
</pre>
<p>The <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTTag" title="PangoOTTag"><span class="type">PangoOTTag</span></a> typedef is used to represent TrueType and OpenType
four letter tags inside Pango. Use <a class="link" href="pango-OpenType-Font-Handling.html#PANGO-OT-TAG-MAKE:CAPS" title="PANGO_OT_TAG_MAKE()"><code class="function">PANGO_OT_TAG_MAKE()</code></a>
or <a class="link" href="pango-OpenType-Font-Handling.html#PANGO-OT-TAG-MAKE-FROM-STRING:CAPS" title="PANGO_OT_TAG_MAKE_FROM_STRING()"><code class="function">PANGO_OT_TAG_MAKE_FROM_STRING()</code></a> macros to create <span class="type">PangoOTTag</span>s manually.</p>
</div>
<hr>
<div class="refsect2">
<a name="PangoOTInfo-struct"></a><h3>PangoOTInfo</h3>
<pre class="programlisting">typedef struct _PangoOTInfo PangoOTInfo;</pre>
<p>The <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTInfo"><span class="type">PangoOTInfo</span></a> struct contains the various
tables associated with an OpenType font. It contains only private fields and
should only be accessed via the <code class="function">pango_ot_info_*</code> functions
which are documented below. To obtain a <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTInfo"><span class="type">PangoOTInfo</span></a>,
use <a class="link" href="pango-OpenType-Font-Handling.html#pango-ot-info-get" title="pango_ot_info_get ()"><code class="function">pango_ot_info_get()</code></a>.</p>
</div>
<hr>
<div class="refsect2">
<a name="PangoOTBuffer"></a><h3>PangoOTBuffer</h3>
<pre class="programlisting">typedef struct _PangoOTBuffer PangoOTBuffer;</pre>
<p>The <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTBuffer" title="PangoOTBuffer"><span class="type">PangoOTBuffer</span></a> structure is used to store strings of glyphs associated
with a <a class="link" href="PangoFcFont.html" title="PangoFcFont"><span class="type">PangoFcFont</span></a>, suitable for OpenType layout processing.  It contains
only private fields and should only be accessed via the
<code class="function">pango_ot_buffer_*</code> functions which are documented below.
To obtain a <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTBuffer" title="PangoOTBuffer"><span class="type">PangoOTBuffer</span></a>, use <a class="link" href="pango-OpenType-Font-Handling.html#pango-ot-buffer-new" title="pango_ot_buffer_new ()"><code class="function">pango_ot_buffer_new()</code></a>.</p>
</div>
<hr>
<div class="refsect2">
<a name="PangoOTGlyph"></a><h3>struct PangoOTGlyph</h3>
<pre class="programlisting">struct PangoOTGlyph {
  guint32  glyph;
  guint    properties;
  guint    cluster;
  gushort  component;
  gushort  ligID;

  guint    internal;
};
</pre>
<p>The <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTGlyph" title="struct PangoOTGlyph"><span class="type">PangoOTGlyph</span></a> structure represents a single glyph together with
information used for OpenType layout processing of the glyph.
It contains the following fields.</p>
<div class="refsect3">
<a name="PangoOTGlyph.members"></a><h4>Members</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="300px" class="struct_members_name">
<col class="struct_members_description">
<col width="200px" class="struct_members_annotations">
</colgroup>
<tbody>
<tr>
<td class="struct_member_name"><p><span class="type">guint32</span> <em class="structfield"><code><a name="PangoOTGlyph.glyph"></a>glyph</code></em>;</p></td>
<td class="struct_member_description"><p>the glyph itself.</p></td>
<td class="struct_member_annotations"> </td>
</tr>
<tr>
<td class="struct_member_name"><p><span class="type">guint</span> <em class="structfield"><code><a name="PangoOTGlyph.properties"></a>properties</code></em>;</p></td>
<td class="struct_member_description"><p>the properties value, identifying which features should be
applied on this glyph.  See <a class="link" href="pango-OpenType-Font-Handling.html#pango-ot-ruleset-add-feature" title="pango_ot_ruleset_add_feature ()"><code class="function">pango_ot_ruleset_add_feature()</code></a>.</p></td>
<td class="struct_member_annotations"> </td>
</tr>
<tr>
<td class="struct_member_name"><p><span class="type">guint</span> <em class="structfield"><code><a name="PangoOTGlyph.cluster"></a>cluster</code></em>;</p></td>
<td class="struct_member_description"><p>the cluster that this glyph belongs to.</p></td>
<td class="struct_member_annotations"> </td>
</tr>
<tr>
<td class="struct_member_name"><p><span class="type">gushort</span> <em class="structfield"><code><a name="PangoOTGlyph.component"></a>component</code></em>;</p></td>
<td class="struct_member_description"><p>a component value, set by the OpenType layout engine.</p></td>
<td class="struct_member_annotations"> </td>
</tr>
<tr>
<td class="struct_member_name"><p><span class="type">gushort</span> <em class="structfield"><code><a name="PangoOTGlyph.ligID"></a>ligID</code></em>;</p></td>
<td class="struct_member_description"><p>a ligature index value, set by the OpenType layout engine.</p></td>
<td class="struct_member_annotations"> </td>
</tr>
<tr>
<td class="struct_member_name"><p><span class="type">guint</span> <em class="structfield"><code><a name="PangoOTGlyph.internal"></a>internal</code></em>;</p></td>
<td class="struct_member_description"><p>for Pango internal use</p></td>
<td class="struct_member_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
</div>
<hr>
<div class="refsect2">
<a name="PangoOTRuleset-struct"></a><h3>PangoOTRuleset</h3>
<pre class="programlisting">typedef struct _PangoOTRuleset PangoOTRuleset;</pre>
<p>The <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTRuleset"><span class="type">PangoOTRuleset</span></a> structure holds a
set of features selected from the tables in an OpenType font.
(A feature is an operation such as adjusting glyph positioning
that should be applied to a text feature such as a certain
type of accent.) A <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTRuleset"><span class="type">PangoOTRuleset</span></a>
is created with <a class="link" href="pango-OpenType-Font-Handling.html#pango-ot-ruleset-new" title="pango_ot_ruleset_new ()"><code class="function">pango_ot_ruleset_new()</code></a>, features are added
to it with <a class="link" href="pango-OpenType-Font-Handling.html#pango-ot-ruleset-add-feature" title="pango_ot_ruleset_add_feature ()"><code class="function">pango_ot_ruleset_add_feature()</code></a>, then it is
applied to a <a class="link" href="pango-Glyph-Storage.html#PangoGlyphString"><span class="type">PangoGlyphString</span></a> with <code class="function">pango_ot_ruleset_shape()</code>.</p>
</div>
<hr>
<div class="refsect2">
<a name="PangoOTRulesetDescription"></a><h3>struct PangoOTRulesetDescription</h3>
<pre class="programlisting">struct PangoOTRulesetDescription {
  PangoScript               script;
  PangoLanguage            *language;
  const PangoOTFeatureMap  *static_gsub_features;
  guint                   n_static_gsub_features;
  const PangoOTFeatureMap  *static_gpos_features;
  guint                   n_static_gpos_features;
  const PangoOTFeatureMap  *other_features;
  guint                   n_other_features;
};
</pre>
<p>The <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTRuleset"><span class="type">PangoOTRuleset</span></a> structure holds all the information needed
to build a complete <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTRuleset"><span class="type">PangoOTRuleset</span></a> from an OpenType font.
The main use of this struct is to act as the key for a per-font
hash of rulesets.  The user populates a ruleset description and
gets the ruleset using <a class="link" href="pango-OpenType-Font-Handling.html#pango-ot-ruleset-get-for-description" title="pango_ot_ruleset_get_for_description ()"><code class="function">pango_ot_ruleset_get_for_description()</code></a>
or create a new one using <a class="link" href="pango-OpenType-Font-Handling.html#pango-ot-ruleset-new-from-description" title="pango_ot_ruleset_new_from_description ()"><code class="function">pango_ot_ruleset_new_from_description()</code></a>.</p>
<div class="refsect3">
<a name="PangoOTRulesetDescription.members"></a><h4>Members</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="300px" class="struct_members_name">
<col class="struct_members_description">
<col width="200px" class="struct_members_annotations">
</colgroup>
<tbody>
<tr>
<td class="struct_member_name"><p><a class="link" href="pango-Scripts-and-Languages.html#PangoScript" title="enum PangoScript"><span class="type">PangoScript</span></a> <em class="structfield"><code><a name="PangoOTRulesetDescription.script"></a>script</code></em>;</p></td>
<td class="struct_member_description"><p>a <a class="link" href="pango-Scripts-and-Languages.html#PangoScript" title="enum PangoScript"><span class="type">PangoScript</span></a>.</p></td>
<td class="struct_member_annotations"> </td>
</tr>
<tr>
<td class="struct_member_name"><p><a class="link" href="pango-Scripts-and-Languages.html#PangoLanguage"><span class="type">PangoLanguage</span></a> *<em class="structfield"><code><a name="PangoOTRulesetDescription.language"></a>language</code></em>;</p></td>
<td class="struct_member_description"><p>a <a class="link" href="pango-Scripts-and-Languages.html#PangoLanguage"><span class="type">PangoLanguage</span></a>.</p></td>
<td class="struct_member_annotations"> </td>
</tr>
<tr>
<td class="struct_member_name"><p>const <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTFeatureMap" title="struct PangoOTFeatureMap"><span class="type">PangoOTFeatureMap</span></a> *<em class="structfield"><code><a name="PangoOTRulesetDescription.static-gsub-features"></a>static_gsub_features</code></em>;</p></td>
<td class="struct_member_description"><p>static map of GSUB features,
or <code class="literal">NULL</code>. </p></td>
<td class="struct_member_annotations"><span class="annotation">[<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></td>
</tr>
<tr>
<td class="struct_member_name"><p><span class="type">guint</span> <em class="structfield"><code><a name="PangoOTRulesetDescription.n-static-gsub-features"></a>n_static_gsub_features</code></em>;</p></td>
<td class="struct_member_description"><p>length of <em class="parameter"><code>static_gsub_features</code></em>
, or 0.</p></td>
<td class="struct_member_annotations"> </td>
</tr>
<tr>
<td class="struct_member_name"><p>const <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTFeatureMap" title="struct PangoOTFeatureMap"><span class="type">PangoOTFeatureMap</span></a> *<em class="structfield"><code><a name="PangoOTRulesetDescription.static-gpos-features"></a>static_gpos_features</code></em>;</p></td>
<td class="struct_member_description"><p>static map of GPOS features,
or <code class="literal">NULL</code>. </p></td>
<td class="struct_member_annotations"><span class="annotation">[<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></td>
</tr>
<tr>
<td class="struct_member_name"><p><span class="type">guint</span> <em class="structfield"><code><a name="PangoOTRulesetDescription.n-static-gpos-features"></a>n_static_gpos_features</code></em>;</p></td>
<td class="struct_member_description"><p>length of <em class="parameter"><code>static_gpos_features</code></em>
, or 0.</p></td>
<td class="struct_member_annotations"> </td>
</tr>
<tr>
<td class="struct_member_name"><p>const <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTFeatureMap" title="struct PangoOTFeatureMap"><span class="type">PangoOTFeatureMap</span></a> *<em class="structfield"><code><a name="PangoOTRulesetDescription.other-features"></a>other_features</code></em>;</p></td>
<td class="struct_member_description"><p>map of extra features to add to both
GSUB and GPOS, or <code class="literal">NULL</code>.  Unlike the static maps, this pointer
need not live beyond the life of function calls taking this
struct. </p></td>
<td class="struct_member_annotations"><span class="annotation">[<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></td>
</tr>
<tr>
<td class="struct_member_name"><p><span class="type">guint</span> <em class="structfield"><code><a name="PangoOTRulesetDescription.n-other-features"></a>n_other_features</code></em>;</p></td>
<td class="struct_member_description"><p>length of <em class="parameter"><code>other_features</code></em>
, or 0.</p></td>
<td class="struct_member_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<p class="since">Since: <a class="link" href="api-index-1-18.html#api-index-1.18">1.18</a></p>
</div>
<hr>
<div class="refsect2">
<a name="PangoOTTableType"></a><h3>enum PangoOTTableType</h3>
<p>The <span class="type">PangoOTTableType</span> enumeration values are used to
identify the various OpenType tables in the
<code class="function">pango_ot_info_*</code> functions.</p>
<div class="refsect3">
<a name="PangoOTTableType.members"></a><h4>Members</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="300px" class="enum_members_name">
<col class="enum_members_description">
<col width="200px" class="enum_members_annotations">
</colgroup>
<tbody>
<tr>
<td class="enum_member_name"><p><a name="PANGO-OT-TABLE-GSUB:CAPS"></a>PANGO_OT_TABLE_GSUB</p></td>
<td class="enum_member_description">
<p>The GSUB table.</p>
</td>
<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="PANGO-OT-TABLE-GPOS:CAPS"></a>PANGO_OT_TABLE_GPOS</p></td>
<td class="enum_member_description">
<p>The GPOS table.</p>
</td>
<td class="enum_member_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
</div>
<hr>
<div class="refsect2">
<a name="PangoOTFeatureMap"></a><h3>struct PangoOTFeatureMap</h3>
<pre class="programlisting">struct PangoOTFeatureMap {
  char     feature_name[5];
  gulong   property_bit;
};
</pre>
<p>The <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTFeatureMap" title="struct PangoOTFeatureMap"><span class="type">PangoOTFeatureMap</span></a> typedef is used to represent an OpenType
feature with the property bit associated with it.  The feature tag is
represented as a char array instead of a <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTTag" title="PangoOTTag"><span class="type">PangoOTTag</span></a> for convenience.</p>
<div class="refsect3">
<a name="PangoOTFeatureMap.members"></a><h4>Members</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="300px" class="struct_members_name">
<col class="struct_members_description">
<col width="200px" class="struct_members_annotations">
</colgroup>
<tbody>
<tr>
<td class="struct_member_name"><p><span class="type">char</span> <em class="structfield"><code><a name="PangoOTFeatureMap.feature-name"></a>feature_name</code></em>[5];</p></td>
<td class="struct_member_description"><p>feature tag in represented as four-letter ASCII string.</p></td>
<td class="struct_member_annotations"> </td>
</tr>
<tr>
<td class="struct_member_name"><p><span class="type">gulong</span> <em class="structfield"><code><a name="PangoOTFeatureMap.property-bit"></a>property_bit</code></em>;</p></td>
<td class="struct_member_description"><p>the property bit to use for this feature.  See
<a class="link" href="pango-OpenType-Font-Handling.html#pango-ot-ruleset-add-feature" title="pango_ot_ruleset_add_feature ()"><code class="function">pango_ot_ruleset_add_feature()</code></a> for details.</p></td>
<td class="struct_member_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<p class="since">Since: <a class="link" href="api-index-1-18.html#api-index-1.18">1.18</a></p>
</div>
<hr>
<div class="refsect2">
<a name="PANGO-OT-ALL-GLYPHS:CAPS"></a><h3>PANGO_OT_ALL_GLYPHS</h3>
<pre class="programlisting">#define PANGO_OT_ALL_GLYPHS			((guint) 0xFFFF)
</pre>
<p>This is used as the property bit in <a class="link" href="pango-OpenType-Font-Handling.html#pango-ot-ruleset-add-feature" title="pango_ot_ruleset_add_feature ()"><code class="function">pango_ot_ruleset_add_feature()</code></a> when a
feature should be applied to all glyphs.</p>
<p class="since">Since: <a class="link" href="api-index-1-16.html#api-index-1.16">1.16</a></p>
</div>
<hr>
<div class="refsect2">
<a name="PANGO-OT-NO-FEATURE:CAPS"></a><h3>PANGO_OT_NO_FEATURE</h3>
<pre class="programlisting">#define PANGO_OT_NO_FEATURE			((guint) 0xFFFF)
</pre>
<p>This is used as a feature index that represent no feature, that is, should be
skipped.  It may be returned as feature index by <a class="link" href="pango-OpenType-Font-Handling.html#pango-ot-info-find-feature" title="pango_ot_info_find_feature ()"><code class="function">pango_ot_info_find_feature()</code></a>
if the feature is not found, and <a class="link" href="pango-OpenType-Font-Handling.html#pango-ot-ruleset-add-feature" title="pango_ot_ruleset_add_feature ()"><code class="function">pango_ot_ruleset_add_feature()</code></a> function
automatically skips this value, so no special handling is required by the user.</p>
<p class="since">Since: <a class="link" href="api-index-1-18.html#api-index-1.18">1.18</a></p>
</div>
<hr>
<div class="refsect2">
<a name="PANGO-OT-NO-SCRIPT:CAPS"></a><h3>PANGO_OT_NO_SCRIPT</h3>
<pre class="programlisting">#define PANGO_OT_NO_SCRIPT			((guint) 0xFFFF)
</pre>
<p>This is used as a script index that represent no script, that is, when the
requested script was not found, and a default ('DFLT') script was not found
either.  It may be returned as script index by <a class="link" href="pango-OpenType-Font-Handling.html#pango-ot-info-find-script" title="pango_ot_info_find_script ()"><code class="function">pango_ot_info_find_script()</code></a>
if the script or a default script are not found, all other functions
taking a script index essentially return if the input script index is
this value, so no special handling is required by the user.</p>
<p class="since">Since: <a class="link" href="api-index-1-18.html#api-index-1.18">1.18</a></p>
</div>
<hr>
<div class="refsect2">
<a name="PANGO-OT-DEFAULT-LANGUAGE:CAPS"></a><h3>PANGO_OT_DEFAULT_LANGUAGE</h3>
<pre class="programlisting">#define PANGO_OT_DEFAULT_LANGUAGE		((guint) 0xFFFF)
</pre>
<p>This is used as the language index in <a class="link" href="pango-OpenType-Font-Handling.html#pango-ot-info-find-feature" title="pango_ot_info_find_feature ()"><code class="function">pango_ot_info_find_feature()</code></a> when
the default language system of the script is desired.</p>
<p>It is also returned by <a class="link" href="pango-OpenType-Font-Handling.html#pango-ot-info-find-language" title="pango_ot_info_find_language ()"><code class="function">pango_ot_info_find_language()</code></a> if the requested language
is not found, or the requested language tag was PANGO_OT_TAG_DEFAULT_LANGUAGE.
The end result is that one can always call <a class="link" href="pango-OpenType-Font-Handling.html#pango-ot-tag-from-language" title="pango_ot_tag_from_language ()"><code class="function">pango_ot_tag_from_language()</code></a>
followed by <a class="link" href="pango-OpenType-Font-Handling.html#pango-ot-info-find-language" title="pango_ot_info_find_language ()"><code class="function">pango_ot_info_find_language()</code></a> and pass the result to
<a class="link" href="pango-OpenType-Font-Handling.html#pango-ot-info-find-feature" title="pango_ot_info_find_feature ()"><code class="function">pango_ot_info_find_feature()</code></a> without having to worry about falling back to
default language system explicitly.</p>
<p class="since">Since: <a class="link" href="api-index-1-16.html#api-index-1.16">1.16</a></p>
</div>
<hr>
<div class="refsect2">
<a name="PANGO-OT-TAG-DEFAULT-LANGUAGE:CAPS"></a><h3>PANGO_OT_TAG_DEFAULT_LANGUAGE</h3>
<pre class="programlisting">#define PANGO_OT_TAG_DEFAULT_LANGUAGE		PANGO_OT_TAG_MAKE ('d', 'f', 'l', 't')
</pre>
<p>This is a <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTTag" title="PangoOTTag"><span class="type">PangoOTTag</span></a> representing a special language tag 'dflt'.  It is
returned as language tag by <a class="link" href="pango-OpenType-Font-Handling.html#pango-ot-tag-from-language" title="pango_ot_tag_from_language ()"><code class="function">pango_ot_tag_from_language()</code></a> if the requested
language is not found.  It is safe to pass this value to
<a class="link" href="pango-OpenType-Font-Handling.html#pango-ot-info-find-language" title="pango_ot_info_find_language ()"><code class="function">pango_ot_info_find_language()</code></a> as that function falls back to returning default
language-system if the requested language tag is not found.</p>
<p class="since">Since: <a class="link" href="api-index-1-18.html#api-index-1.18">1.18</a></p>
</div>
<hr>
<div class="refsect2">
<a name="PANGO-OT-TAG-DEFAULT-SCRIPT:CAPS"></a><h3>PANGO_OT_TAG_DEFAULT_SCRIPT</h3>
<pre class="programlisting">#define PANGO_OT_TAG_DEFAULT_SCRIPT		PANGO_OT_TAG_MAKE ('D', 'F', 'L', 'T')
</pre>
<p>This is a <a class="link" href="pango-OpenType-Font-Handling.html#PangoOTTag" title="PangoOTTag"><span class="type">PangoOTTag</span></a> representing the special script tag 'DFLT'.  It is
returned as script tag by <a class="link" href="pango-OpenType-Font-Handling.html#pango-ot-tag-from-script" title="pango_ot_tag_from_script ()"><code class="function">pango_ot_tag_from_script()</code></a> if the requested script
is not found.</p>
<p class="since">Since: <a class="link" href="api-index-1-18.html#api-index-1.18">1.18</a></p>
</div>
</div>
</div>
<div class="footer">
<hr>Generated by GTK-Doc V1.28</div>
</body>
</html>