diff CSP2/CSP2_env/env-d9b9114564458d9d-741b3de822f2aaca6c6caa4325c4afce/share/gir-1.0/HarfBuzz-0.0.gir @ 68:5028fdace37b

planemo upload commit 2e9511a184a1ca667c7be0c6321a36dc4e3d116d
author jpayne
date Tue, 18 Mar 2025 16:23:26 -0400
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/CSP2/CSP2_env/env-d9b9114564458d9d-741b3de822f2aaca6c6caa4325c4afce/share/gir-1.0/HarfBuzz-0.0.gir	Tue Mar 18 16:23:26 2025 -0400
@@ -0,0 +1,16525 @@
+<?xml version="1.0"?>
+<!-- This file was automatically generated from C sources - DO NOT EDIT!
+To affect the contents of this file, edit the original C definitions,
+and/or use gtk-doc annotations.  -->
+<repository version="1.2"
+            xmlns="http://www.gtk.org/introspection/core/1.0"
+            xmlns:c="http://www.gtk.org/introspection/c/1.0"
+            xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
+  <include name="GObject" version="2.0"/>
+  <package name="harfbuzz-gobject"/>
+  <c:include name="hb-gobject.h"/>
+  <namespace name="HarfBuzz"
+             version="0.0"
+             shared-library="libharfbuzz-gobject.so.0"
+             c:identifier-prefixes="hb_"
+             c:symbol-prefixes="hb,hb_gobject">
+    <alias name="bool_t" c:type="hb_bool_t">
+      <source-position filename="../src/hb-common.h" line="92"/>
+      <type name="gint" c:type="int"/>
+    </alias>
+    <alias name="codepoint_t" c:type="hb_codepoint_t">
+      <source-position filename="../src/hb-common.h" line="94"/>
+      <type name="guint32" c:type="uint32_t"/>
+    </alias>
+    <alias name="color_t" c:type="hb_color_t">
+      <doc xml:space="preserve"
+           filename="../src/hb-common.h"
+           line="484">Data type for holding color values.</doc>
+      <source-position filename="../src/hb-common.h" line="491"/>
+      <type name="guint32" c:type="uint32_t"/>
+    </alias>
+    <alias name="font_get_font_h_extents_func_t"
+           c:type="hb_font_get_font_h_extents_func_t">
+      <source-position filename="../src/hb-font.h" line="116"/>
+      <type name="font_get_font_extents_func_t"
+            c:type="hb_font_get_font_extents_func_t"/>
+    </alias>
+    <alias name="font_get_font_v_extents_func_t"
+           c:type="hb_font_get_font_v_extents_func_t">
+      <source-position filename="../src/hb-font.h" line="117"/>
+      <type name="font_get_font_extents_func_t"
+            c:type="hb_font_get_font_extents_func_t"/>
+    </alias>
+    <alias name="font_get_glyph_h_advance_func_t"
+           c:type="hb_font_get_glyph_h_advance_func_t">
+      <source-position filename="../src/hb-font.h" line="141"/>
+      <type name="font_get_glyph_advance_func_t"
+            c:type="hb_font_get_glyph_advance_func_t"/>
+    </alias>
+    <alias name="font_get_glyph_h_advances_func_t"
+           c:type="hb_font_get_glyph_h_advances_func_t">
+      <source-position filename="../src/hb-font.h" line="151"/>
+      <type name="font_get_glyph_advances_func_t"
+            c:type="hb_font_get_glyph_advances_func_t"/>
+    </alias>
+    <alias name="font_get_glyph_h_kerning_func_t"
+           c:type="hb_font_get_glyph_h_kerning_func_t">
+      <source-position filename="../src/hb-font.h" line="164"/>
+      <type name="font_get_glyph_kerning_func_t"
+            c:type="hb_font_get_glyph_kerning_func_t"/>
+    </alias>
+    <alias name="font_get_glyph_h_origin_func_t"
+           c:type="hb_font_get_glyph_h_origin_func_t">
+      <source-position filename="../src/hb-font.h" line="158"/>
+      <type name="font_get_glyph_origin_func_t"
+            c:type="hb_font_get_glyph_origin_func_t"/>
+    </alias>
+    <alias name="font_get_glyph_v_advance_func_t"
+           c:type="hb_font_get_glyph_v_advance_func_t">
+      <source-position filename="../src/hb-font.h" line="142"/>
+      <type name="font_get_glyph_advance_func_t"
+            c:type="hb_font_get_glyph_advance_func_t"/>
+    </alias>
+    <alias name="font_get_glyph_v_advances_func_t"
+           c:type="hb_font_get_glyph_v_advances_func_t">
+      <source-position filename="../src/hb-font.h" line="152"/>
+      <type name="font_get_glyph_advances_func_t"
+            c:type="hb_font_get_glyph_advances_func_t"/>
+    </alias>
+    <alias name="font_get_glyph_v_kerning_func_t"
+           c:type="hb_font_get_glyph_v_kerning_func_t">
+      <source-position filename="../src/hb-deprecated.h" line="168"/>
+      <type name="font_get_glyph_kerning_func_t"
+            c:type="hb_font_get_glyph_kerning_func_t"/>
+    </alias>
+    <alias name="font_get_glyph_v_origin_func_t"
+           c:type="hb_font_get_glyph_v_origin_func_t">
+      <source-position filename="../src/hb-font.h" line="159"/>
+      <type name="font_get_glyph_origin_func_t"
+            c:type="hb_font_get_glyph_origin_func_t"/>
+    </alias>
+    <alias name="mask_t" c:type="hb_mask_t">
+      <source-position filename="../src/hb-common.h" line="96"/>
+      <type name="guint32" c:type="uint32_t"/>
+    </alias>
+    <alias name="ot_name_id_t" c:type="hb_ot_name_id_t">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-name.h"
+           line="37">An integral type representing an OpenType 'name' table name identifier.
+There are predefined name IDs, as well as name IDs return from other
+API.  These can be used to fetch name strings from a font face.</doc>
+      <source-position filename="../src/hb-ot-name.h" line="79"/>
+      <type name="guint" c:type="unsigned int"/>
+    </alias>
+    <alias name="position_t" c:type="hb_position_t">
+      <source-position filename="../src/hb-common.h" line="95"/>
+      <type name="gint32" c:type="int32_t"/>
+    </alias>
+    <alias name="tag_t" c:type="hb_tag_t">
+      <source-position filename="../src/hb-common.h" line="110"/>
+      <type name="guint32" c:type="uint32_t"/>
+    </alias>
+    <constant name="AAT_LAYOUT_NO_SELECTOR_INDEX"
+              value="65535"
+              c:type="HB_AAT_LAYOUT_NO_SELECTOR_INDEX">
+      <source-position filename="../src/hb-aat-layout.h" line="449"/>
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="BUFFER_REPLACEMENT_CODEPOINT_DEFAULT"
+              value="65533"
+              c:type="HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT"
+              version="0.9.31">
+      <doc xml:space="preserve"
+           filename="../src/hb-buffer.h"
+           line="335">The default code point for replacing invalid characters in a given encoding.
+Set to U+FFFD REPLACEMENT CHARACTER.</doc>
+      <source-position filename="../src/hb-buffer.h" line="339"/>
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <function-macro name="COLOR" c:identifier="HB_COLOR" introspectable="0">
+      <source-position filename="../src/hb-common.h" line="493"/>
+      <parameters>
+        <parameter name="b">
+        </parameter>
+        <parameter name="g">
+        </parameter>
+        <parameter name="r">
+        </parameter>
+        <parameter name="a">
+        </parameter>
+      </parameters>
+    </function-macro>
+    <function-macro name="DEPRECATED_FOR"
+                    c:identifier="HB_DEPRECATED_FOR"
+                    introspectable="0">
+      <source-position filename="../src/hb-common.h" line="81"/>
+      <parameters>
+        <parameter name="f">
+        </parameter>
+      </parameters>
+    </function-macro>
+    <function-macro name="DIRECTION_IS_BACKWARD"
+                    c:identifier="HB_DIRECTION_IS_BACKWARD"
+                    introspectable="0">
+      <source-position filename="../src/hb-common.h" line="156"/>
+      <parameters>
+        <parameter name="dir">
+        </parameter>
+      </parameters>
+    </function-macro>
+    <function-macro name="DIRECTION_IS_FORWARD"
+                    c:identifier="HB_DIRECTION_IS_FORWARD"
+                    introspectable="0">
+      <source-position filename="../src/hb-common.h" line="155"/>
+      <parameters>
+        <parameter name="dir">
+        </parameter>
+      </parameters>
+    </function-macro>
+    <function-macro name="DIRECTION_IS_HORIZONTAL"
+                    c:identifier="HB_DIRECTION_IS_HORIZONTAL"
+                    introspectable="0">
+      <source-position filename="../src/hb-common.h" line="153"/>
+      <parameters>
+        <parameter name="dir">
+        </parameter>
+      </parameters>
+    </function-macro>
+    <function-macro name="DIRECTION_IS_VALID"
+                    c:identifier="HB_DIRECTION_IS_VALID"
+                    introspectable="0">
+      <source-position filename="../src/hb-common.h" line="151"/>
+      <parameters>
+        <parameter name="dir">
+        </parameter>
+      </parameters>
+    </function-macro>
+    <function-macro name="DIRECTION_IS_VERTICAL"
+                    c:identifier="HB_DIRECTION_IS_VERTICAL"
+                    introspectable="0">
+      <source-position filename="../src/hb-common.h" line="154"/>
+      <parameters>
+        <parameter name="dir">
+        </parameter>
+      </parameters>
+    </function-macro>
+    <function-macro name="DIRECTION_REVERSE"
+                    c:identifier="HB_DIRECTION_REVERSE"
+                    introspectable="0">
+      <source-position filename="../src/hb-common.h" line="157"/>
+      <parameters>
+        <parameter name="dir">
+        </parameter>
+      </parameters>
+    </function-macro>
+    <constant name="FEATURE_GLOBAL_START"
+              value="0"
+              c:type="HB_FEATURE_GLOBAL_START"
+              version="2.0.0">
+      <source-position filename="../src/hb-common.h" line="428"/>
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="LANGUAGE_INVALID" value="0" c:type="HB_LANGUAGE_INVALID">
+      <source-position filename="../src/hb-common.h" line="170"/>
+      <type name="language_t" c:type="hb_language_t"/>
+    </constant>
+    <constant name="MAP_VALUE_INVALID"
+              value="4294967295"
+              c:type="HB_MAP_VALUE_INVALID">
+      <source-position filename="../src/hb-map.h" line="42"/>
+      <type name="codepoint_t" c:type="hb_codepoint_t"/>
+    </constant>
+    <constant name="OT_LAYOUT_DEFAULT_LANGUAGE_INDEX"
+              value="65535"
+              c:type="HB_OT_LAYOUT_DEFAULT_LANGUAGE_INDEX">
+      <source-position filename="../src/hb-ot-layout.h" line="149"/>
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="OT_LAYOUT_NO_FEATURE_INDEX"
+              value="65535"
+              c:type="HB_OT_LAYOUT_NO_FEATURE_INDEX">
+      <source-position filename="../src/hb-ot-layout.h" line="148"/>
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="OT_LAYOUT_NO_SCRIPT_INDEX"
+              value="65535"
+              c:type="HB_OT_LAYOUT_NO_SCRIPT_INDEX">
+      <source-position filename="../src/hb-ot-layout.h" line="147"/>
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="OT_LAYOUT_NO_VARIATIONS_INDEX"
+              value="4294967295"
+              c:type="HB_OT_LAYOUT_NO_VARIATIONS_INDEX">
+      <source-position filename="../src/hb-ot-layout.h" line="150"/>
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="OT_MAX_TAGS_PER_LANGUAGE"
+              value="3"
+              c:type="HB_OT_MAX_TAGS_PER_LANGUAGE"
+              version="2.0.0">
+      <source-position filename="../src/hb-ot-layout.h" line="66"/>
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="OT_MAX_TAGS_PER_SCRIPT"
+              value="3"
+              c:type="HB_OT_MAX_TAGS_PER_SCRIPT"
+              version="2.0.0">
+      <source-position filename="../src/hb-ot-layout.h" line="60"/>
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="OT_VAR_NO_AXIS_INDEX"
+              value="4294967295"
+              c:type="HB_OT_VAR_NO_AXIS_INDEX"
+              version="1.4.2"
+              deprecated="1"
+              deprecated-version="2.2.0">
+      <source-position filename="../src/hb-ot-deprecated.h" line="77"/>
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="SET_VALUE_INVALID"
+              value="4294967295"
+              c:type="HB_SET_VALUE_INVALID">
+      <source-position filename="../src/hb-set.h" line="42"/>
+      <type name="codepoint_t" c:type="hb_codepoint_t"/>
+    </constant>
+    <function-macro name="TAG" c:identifier="HB_TAG" introspectable="0">
+      <source-position filename="../src/hb-common.h" line="112"/>
+      <parameters>
+        <parameter name="c1">
+        </parameter>
+        <parameter name="c2">
+        </parameter>
+        <parameter name="c3">
+        </parameter>
+        <parameter name="c4">
+        </parameter>
+      </parameters>
+    </function-macro>
+    <constant name="UNICODE_MAX"
+              value="1114111"
+              c:type="HB_UNICODE_MAX"
+              version="1.9.0">
+      <source-position filename="../src/hb-unicode.h" line="48"/>
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="UNICODE_MAX_DECOMPOSITION_LEN"
+              value="19"
+              c:type="HB_UNICODE_MAX_DECOMPOSITION_LEN"
+              deprecated="1"
+              deprecated-version="2.0.0">
+      <doc xml:space="preserve"
+           filename="../src/hb-deprecated.h"
+           line="136">See Unicode 6.1 for details on the maximum decomposition length.</doc>
+      <source-position filename="../src/hb-deprecated.h" line="143"/>
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <function-macro name="UNTAG" c:identifier="HB_UNTAG" introspectable="0">
+      <source-position filename="../src/hb-common.h" line="113"/>
+      <parameters>
+        <parameter name="tag">
+        </parameter>
+      </parameters>
+    </function-macro>
+    <function-macro name="VERSION_ATLEAST"
+                    c:identifier="HB_VERSION_ATLEAST"
+                    introspectable="0">
+      <source-position filename="../src/hb-version.h" line="45"/>
+      <parameters>
+        <parameter name="major">
+        </parameter>
+        <parameter name="minor">
+        </parameter>
+        <parameter name="micro">
+        </parameter>
+      </parameters>
+    </function-macro>
+    <constant name="VERSION_MAJOR" value="2" c:type="HB_VERSION_MAJOR">
+      <source-position filename="../src/hb-version.h" line="39"/>
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="VERSION_MICRO" value="2" c:type="HB_VERSION_MICRO">
+      <source-position filename="../src/hb-version.h" line="41"/>
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="VERSION_MINOR" value="7" c:type="HB_VERSION_MINOR">
+      <source-position filename="../src/hb-version.h" line="40"/>
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="VERSION_STRING" value="2.7.2" c:type="HB_VERSION_STRING">
+      <source-position filename="../src/hb-version.h" line="43"/>
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <enumeration name="aat_layout_feature_selector_t"
+                 version="2.2.0"
+                 glib:type-name="hb_aat_layout_feature_selector_t"
+                 glib:get-type="hb_gobject_aat_layout_feature_selector_get_type"
+                 c:type="hb_aat_layout_feature_selector_t">
+      <member name="invalid"
+              value="65535"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_INVALID"
+              glib:nick="invalid">
+      </member>
+      <member name="all_type_features_on"
+              value="0"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_ALL_TYPE_FEATURES_ON"
+              glib:nick="all-type-features-on">
+      </member>
+      <member name="all_type_features_off"
+              value="1"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_ALL_TYPE_FEATURES_OFF"
+              glib:nick="all-type-features-off">
+      </member>
+      <member name="required_ligatures_on"
+              value="0"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_REQUIRED_LIGATURES_ON"
+              glib:nick="required-ligatures-on">
+      </member>
+      <member name="required_ligatures_off"
+              value="1"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_REQUIRED_LIGATURES_OFF"
+              glib:nick="required-ligatures-off">
+      </member>
+      <member name="common_ligatures_on"
+              value="2"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_COMMON_LIGATURES_ON"
+              glib:nick="common-ligatures-on">
+      </member>
+      <member name="common_ligatures_off"
+              value="3"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_COMMON_LIGATURES_OFF"
+              glib:nick="common-ligatures-off">
+      </member>
+      <member name="rare_ligatures_on"
+              value="4"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_RARE_LIGATURES_ON"
+              glib:nick="rare-ligatures-on">
+      </member>
+      <member name="rare_ligatures_off"
+              value="5"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_RARE_LIGATURES_OFF"
+              glib:nick="rare-ligatures-off">
+      </member>
+      <member name="logos_on"
+              value="6"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_LOGOS_ON"
+              glib:nick="logos-on">
+      </member>
+      <member name="logos_off"
+              value="7"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_LOGOS_OFF"
+              glib:nick="logos-off">
+      </member>
+      <member name="rebus_pictures_on"
+              value="8"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_REBUS_PICTURES_ON"
+              glib:nick="rebus-pictures-on">
+      </member>
+      <member name="rebus_pictures_off"
+              value="9"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_REBUS_PICTURES_OFF"
+              glib:nick="rebus-pictures-off">
+      </member>
+      <member name="diphthong_ligatures_on"
+              value="10"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_DIPHTHONG_LIGATURES_ON"
+              glib:nick="diphthong-ligatures-on">
+      </member>
+      <member name="diphthong_ligatures_off"
+              value="11"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_DIPHTHONG_LIGATURES_OFF"
+              glib:nick="diphthong-ligatures-off">
+      </member>
+      <member name="squared_ligatures_on"
+              value="12"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_SQUARED_LIGATURES_ON"
+              glib:nick="squared-ligatures-on">
+      </member>
+      <member name="squared_ligatures_off"
+              value="13"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_SQUARED_LIGATURES_OFF"
+              glib:nick="squared-ligatures-off">
+      </member>
+      <member name="abbrev_squared_ligatures_on"
+              value="14"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_ABBREV_SQUARED_LIGATURES_ON"
+              glib:nick="abbrev-squared-ligatures-on">
+      </member>
+      <member name="abbrev_squared_ligatures_off"
+              value="15"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_ABBREV_SQUARED_LIGATURES_OFF"
+              glib:nick="abbrev-squared-ligatures-off">
+      </member>
+      <member name="symbol_ligatures_on"
+              value="16"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_SYMBOL_LIGATURES_ON"
+              glib:nick="symbol-ligatures-on">
+      </member>
+      <member name="symbol_ligatures_off"
+              value="17"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_SYMBOL_LIGATURES_OFF"
+              glib:nick="symbol-ligatures-off">
+      </member>
+      <member name="contextual_ligatures_on"
+              value="18"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_CONTEXTUAL_LIGATURES_ON"
+              glib:nick="contextual-ligatures-on">
+      </member>
+      <member name="contextual_ligatures_off"
+              value="19"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_CONTEXTUAL_LIGATURES_OFF"
+              glib:nick="contextual-ligatures-off">
+      </member>
+      <member name="historical_ligatures_on"
+              value="20"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_HISTORICAL_LIGATURES_ON"
+              glib:nick="historical-ligatures-on">
+      </member>
+      <member name="historical_ligatures_off"
+              value="21"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_HISTORICAL_LIGATURES_OFF"
+              glib:nick="historical-ligatures-off">
+      </member>
+      <member name="unconnected"
+              value="0"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_UNCONNECTED"
+              glib:nick="unconnected">
+      </member>
+      <member name="partially_connected"
+              value="1"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_PARTIALLY_CONNECTED"
+              glib:nick="partially-connected">
+      </member>
+      <member name="cursive"
+              value="2"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_CURSIVE"
+              glib:nick="cursive">
+      </member>
+      <member name="upper_and_lower_case"
+              value="0"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_UPPER_AND_LOWER_CASE"
+              glib:nick="upper-and-lower-case">
+      </member>
+      <member name="all_caps"
+              value="1"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_ALL_CAPS"
+              glib:nick="all-caps">
+      </member>
+      <member name="all_lower_case"
+              value="2"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_ALL_LOWER_CASE"
+              glib:nick="all-lower-case">
+      </member>
+      <member name="small_caps"
+              value="3"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_SMALL_CAPS"
+              glib:nick="small-caps">
+      </member>
+      <member name="initial_caps"
+              value="4"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_INITIAL_CAPS"
+              glib:nick="initial-caps">
+      </member>
+      <member name="initial_caps_and_small_caps"
+              value="5"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_INITIAL_CAPS_AND_SMALL_CAPS"
+              glib:nick="initial-caps-and-small-caps">
+      </member>
+      <member name="substitute_vertical_forms_on"
+              value="0"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_SUBSTITUTE_VERTICAL_FORMS_ON"
+              glib:nick="substitute-vertical-forms-on">
+      </member>
+      <member name="substitute_vertical_forms_off"
+              value="1"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_SUBSTITUTE_VERTICAL_FORMS_OFF"
+              glib:nick="substitute-vertical-forms-off">
+      </member>
+      <member name="linguistic_rearrangement_on"
+              value="0"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_LINGUISTIC_REARRANGEMENT_ON"
+              glib:nick="linguistic-rearrangement-on">
+      </member>
+      <member name="linguistic_rearrangement_off"
+              value="1"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_LINGUISTIC_REARRANGEMENT_OFF"
+              glib:nick="linguistic-rearrangement-off">
+      </member>
+      <member name="monospaced_numbers"
+              value="0"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_MONOSPACED_NUMBERS"
+              glib:nick="monospaced-numbers">
+      </member>
+      <member name="proportional_numbers"
+              value="1"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_PROPORTIONAL_NUMBERS"
+              glib:nick="proportional-numbers">
+      </member>
+      <member name="third_width_numbers"
+              value="2"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_THIRD_WIDTH_NUMBERS"
+              glib:nick="third-width-numbers">
+      </member>
+      <member name="quarter_width_numbers"
+              value="3"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_QUARTER_WIDTH_NUMBERS"
+              glib:nick="quarter-width-numbers">
+      </member>
+      <member name="word_initial_swashes_on"
+              value="0"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_WORD_INITIAL_SWASHES_ON"
+              glib:nick="word-initial-swashes-on">
+      </member>
+      <member name="word_initial_swashes_off"
+              value="1"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_WORD_INITIAL_SWASHES_OFF"
+              glib:nick="word-initial-swashes-off">
+      </member>
+      <member name="word_final_swashes_on"
+              value="2"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_WORD_FINAL_SWASHES_ON"
+              glib:nick="word-final-swashes-on">
+      </member>
+      <member name="word_final_swashes_off"
+              value="3"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_WORD_FINAL_SWASHES_OFF"
+              glib:nick="word-final-swashes-off">
+      </member>
+      <member name="line_initial_swashes_on"
+              value="4"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_LINE_INITIAL_SWASHES_ON"
+              glib:nick="line-initial-swashes-on">
+      </member>
+      <member name="line_initial_swashes_off"
+              value="5"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_LINE_INITIAL_SWASHES_OFF"
+              glib:nick="line-initial-swashes-off">
+      </member>
+      <member name="line_final_swashes_on"
+              value="6"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_LINE_FINAL_SWASHES_ON"
+              glib:nick="line-final-swashes-on">
+      </member>
+      <member name="line_final_swashes_off"
+              value="7"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_LINE_FINAL_SWASHES_OFF"
+              glib:nick="line-final-swashes-off">
+      </member>
+      <member name="non_final_swashes_on"
+              value="8"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_NON_FINAL_SWASHES_ON"
+              glib:nick="non-final-swashes-on">
+      </member>
+      <member name="non_final_swashes_off"
+              value="9"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_NON_FINAL_SWASHES_OFF"
+              glib:nick="non-final-swashes-off">
+      </member>
+      <member name="show_diacritics"
+              value="0"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_SHOW_DIACRITICS"
+              glib:nick="show-diacritics">
+      </member>
+      <member name="hide_diacritics"
+              value="1"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_HIDE_DIACRITICS"
+              glib:nick="hide-diacritics">
+      </member>
+      <member name="decompose_diacritics"
+              value="2"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_DECOMPOSE_DIACRITICS"
+              glib:nick="decompose-diacritics">
+      </member>
+      <member name="normal_position"
+              value="0"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_NORMAL_POSITION"
+              glib:nick="normal-position">
+      </member>
+      <member name="superiors"
+              value="1"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_SUPERIORS"
+              glib:nick="superiors">
+      </member>
+      <member name="inferiors"
+              value="2"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_INFERIORS"
+              glib:nick="inferiors">
+      </member>
+      <member name="ordinals"
+              value="3"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_ORDINALS"
+              glib:nick="ordinals">
+      </member>
+      <member name="scientific_inferiors"
+              value="4"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_SCIENTIFIC_INFERIORS"
+              glib:nick="scientific-inferiors">
+      </member>
+      <member name="no_fractions"
+              value="0"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_FRACTIONS"
+              glib:nick="no-fractions">
+      </member>
+      <member name="vertical_fractions"
+              value="1"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_VERTICAL_FRACTIONS"
+              glib:nick="vertical-fractions">
+      </member>
+      <member name="diagonal_fractions"
+              value="2"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_DIAGONAL_FRACTIONS"
+              glib:nick="diagonal-fractions">
+      </member>
+      <member name="prevent_overlap_on"
+              value="0"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_PREVENT_OVERLAP_ON"
+              glib:nick="prevent-overlap-on">
+      </member>
+      <member name="prevent_overlap_off"
+              value="1"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_PREVENT_OVERLAP_OFF"
+              glib:nick="prevent-overlap-off">
+      </member>
+      <member name="hyphens_to_em_dash_on"
+              value="0"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_HYPHENS_TO_EM_DASH_ON"
+              glib:nick="hyphens-to-em-dash-on">
+      </member>
+      <member name="hyphens_to_em_dash_off"
+              value="1"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_HYPHENS_TO_EM_DASH_OFF"
+              glib:nick="hyphens-to-em-dash-off">
+      </member>
+      <member name="hyphen_to_en_dash_on"
+              value="2"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_HYPHEN_TO_EN_DASH_ON"
+              glib:nick="hyphen-to-en-dash-on">
+      </member>
+      <member name="hyphen_to_en_dash_off"
+              value="3"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_HYPHEN_TO_EN_DASH_OFF"
+              glib:nick="hyphen-to-en-dash-off">
+      </member>
+      <member name="slashed_zero_on"
+              value="4"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_SLASHED_ZERO_ON"
+              glib:nick="slashed-zero-on">
+      </member>
+      <member name="slashed_zero_off"
+              value="5"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_SLASHED_ZERO_OFF"
+              glib:nick="slashed-zero-off">
+      </member>
+      <member name="form_interrobang_on"
+              value="6"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_FORM_INTERROBANG_ON"
+              glib:nick="form-interrobang-on">
+      </member>
+      <member name="form_interrobang_off"
+              value="7"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_FORM_INTERROBANG_OFF"
+              glib:nick="form-interrobang-off">
+      </member>
+      <member name="smart_quotes_on"
+              value="8"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_SMART_QUOTES_ON"
+              glib:nick="smart-quotes-on">
+      </member>
+      <member name="smart_quotes_off"
+              value="9"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_SMART_QUOTES_OFF"
+              glib:nick="smart-quotes-off">
+      </member>
+      <member name="periods_to_ellipsis_on"
+              value="10"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_PERIODS_TO_ELLIPSIS_ON"
+              glib:nick="periods-to-ellipsis-on">
+      </member>
+      <member name="periods_to_ellipsis_off"
+              value="11"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_PERIODS_TO_ELLIPSIS_OFF"
+              glib:nick="periods-to-ellipsis-off">
+      </member>
+      <member name="hyphen_to_minus_on"
+              value="0"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_HYPHEN_TO_MINUS_ON"
+              glib:nick="hyphen-to-minus-on">
+      </member>
+      <member name="hyphen_to_minus_off"
+              value="1"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_HYPHEN_TO_MINUS_OFF"
+              glib:nick="hyphen-to-minus-off">
+      </member>
+      <member name="asterisk_to_multiply_on"
+              value="2"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_ASTERISK_TO_MULTIPLY_ON"
+              glib:nick="asterisk-to-multiply-on">
+      </member>
+      <member name="asterisk_to_multiply_off"
+              value="3"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_ASTERISK_TO_MULTIPLY_OFF"
+              glib:nick="asterisk-to-multiply-off">
+      </member>
+      <member name="slash_to_divide_on"
+              value="4"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_SLASH_TO_DIVIDE_ON"
+              glib:nick="slash-to-divide-on">
+      </member>
+      <member name="slash_to_divide_off"
+              value="5"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_SLASH_TO_DIVIDE_OFF"
+              glib:nick="slash-to-divide-off">
+      </member>
+      <member name="inequality_ligatures_on"
+              value="6"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_INEQUALITY_LIGATURES_ON"
+              glib:nick="inequality-ligatures-on">
+      </member>
+      <member name="inequality_ligatures_off"
+              value="7"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_INEQUALITY_LIGATURES_OFF"
+              glib:nick="inequality-ligatures-off">
+      </member>
+      <member name="exponents_on"
+              value="8"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_EXPONENTS_ON"
+              glib:nick="exponents-on">
+      </member>
+      <member name="exponents_off"
+              value="9"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_EXPONENTS_OFF"
+              glib:nick="exponents-off">
+      </member>
+      <member name="mathematical_greek_on"
+              value="10"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_MATHEMATICAL_GREEK_ON"
+              glib:nick="mathematical-greek-on">
+      </member>
+      <member name="mathematical_greek_off"
+              value="11"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_MATHEMATICAL_GREEK_OFF"
+              glib:nick="mathematical-greek-off">
+      </member>
+      <member name="no_ornaments"
+              value="0"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_ORNAMENTS"
+              glib:nick="no-ornaments">
+      </member>
+      <member name="dingbats"
+              value="1"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_DINGBATS"
+              glib:nick="dingbats">
+      </member>
+      <member name="pi_characters"
+              value="2"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_PI_CHARACTERS"
+              glib:nick="pi-characters">
+      </member>
+      <member name="fleurons"
+              value="3"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_FLEURONS"
+              glib:nick="fleurons">
+      </member>
+      <member name="decorative_borders"
+              value="4"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_DECORATIVE_BORDERS"
+              glib:nick="decorative-borders">
+      </member>
+      <member name="international_symbols"
+              value="5"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_INTERNATIONAL_SYMBOLS"
+              glib:nick="international-symbols">
+      </member>
+      <member name="math_symbols"
+              value="6"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_MATH_SYMBOLS"
+              glib:nick="math-symbols">
+      </member>
+      <member name="no_alternates"
+              value="0"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_ALTERNATES"
+              glib:nick="no-alternates">
+      </member>
+      <member name="design_level1"
+              value="0"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_DESIGN_LEVEL1"
+              glib:nick="design-level1">
+      </member>
+      <member name="design_level2"
+              value="1"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_DESIGN_LEVEL2"
+              glib:nick="design-level2">
+      </member>
+      <member name="design_level3"
+              value="2"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_DESIGN_LEVEL3"
+              glib:nick="design-level3">
+      </member>
+      <member name="design_level4"
+              value="3"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_DESIGN_LEVEL4"
+              glib:nick="design-level4">
+      </member>
+      <member name="design_level5"
+              value="4"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_DESIGN_LEVEL5"
+              glib:nick="design-level5">
+      </member>
+      <member name="no_style_options"
+              value="0"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_STYLE_OPTIONS"
+              glib:nick="no-style-options">
+      </member>
+      <member name="display_text"
+              value="1"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_DISPLAY_TEXT"
+              glib:nick="display-text">
+      </member>
+      <member name="engraved_text"
+              value="2"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_ENGRAVED_TEXT"
+              glib:nick="engraved-text">
+      </member>
+      <member name="illuminated_caps"
+              value="3"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_ILLUMINATED_CAPS"
+              glib:nick="illuminated-caps">
+      </member>
+      <member name="titling_caps"
+              value="4"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_TITLING_CAPS"
+              glib:nick="titling-caps">
+      </member>
+      <member name="tall_caps"
+              value="5"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_TALL_CAPS"
+              glib:nick="tall-caps">
+      </member>
+      <member name="traditional_characters"
+              value="0"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_TRADITIONAL_CHARACTERS"
+              glib:nick="traditional-characters">
+      </member>
+      <member name="simplified_characters"
+              value="1"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_SIMPLIFIED_CHARACTERS"
+              glib:nick="simplified-characters">
+      </member>
+      <member name="jis1978_characters"
+              value="2"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_JIS1978_CHARACTERS"
+              glib:nick="jis1978-characters">
+      </member>
+      <member name="jis1983_characters"
+              value="3"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_JIS1983_CHARACTERS"
+              glib:nick="jis1983-characters">
+      </member>
+      <member name="jis1990_characters"
+              value="4"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_JIS1990_CHARACTERS"
+              glib:nick="jis1990-characters">
+      </member>
+      <member name="traditional_alt_one"
+              value="5"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_TRADITIONAL_ALT_ONE"
+              glib:nick="traditional-alt-one">
+      </member>
+      <member name="traditional_alt_two"
+              value="6"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_TRADITIONAL_ALT_TWO"
+              glib:nick="traditional-alt-two">
+      </member>
+      <member name="traditional_alt_three"
+              value="7"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_TRADITIONAL_ALT_THREE"
+              glib:nick="traditional-alt-three">
+      </member>
+      <member name="traditional_alt_four"
+              value="8"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_TRADITIONAL_ALT_FOUR"
+              glib:nick="traditional-alt-four">
+      </member>
+      <member name="traditional_alt_five"
+              value="9"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_TRADITIONAL_ALT_FIVE"
+              glib:nick="traditional-alt-five">
+      </member>
+      <member name="expert_characters"
+              value="10"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_EXPERT_CHARACTERS"
+              glib:nick="expert-characters">
+      </member>
+      <member name="jis2004_characters"
+              value="11"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_JIS2004_CHARACTERS"
+              glib:nick="jis2004-characters">
+      </member>
+      <member name="hojo_characters"
+              value="12"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_HOJO_CHARACTERS"
+              glib:nick="hojo-characters">
+      </member>
+      <member name="nlccharacters"
+              value="13"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_NLCCHARACTERS"
+              glib:nick="nlccharacters">
+      </member>
+      <member name="traditional_names_characters"
+              value="14"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_TRADITIONAL_NAMES_CHARACTERS"
+              glib:nick="traditional-names-characters">
+      </member>
+      <member name="lower_case_numbers"
+              value="0"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_LOWER_CASE_NUMBERS"
+              glib:nick="lower-case-numbers">
+      </member>
+      <member name="upper_case_numbers"
+              value="1"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_UPPER_CASE_NUMBERS"
+              glib:nick="upper-case-numbers">
+      </member>
+      <member name="proportional_text"
+              value="0"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_PROPORTIONAL_TEXT"
+              glib:nick="proportional-text">
+      </member>
+      <member name="monospaced_text"
+              value="1"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_MONOSPACED_TEXT"
+              glib:nick="monospaced-text">
+      </member>
+      <member name="half_width_text"
+              value="2"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_HALF_WIDTH_TEXT"
+              glib:nick="half-width-text">
+      </member>
+      <member name="third_width_text"
+              value="3"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_THIRD_WIDTH_TEXT"
+              glib:nick="third-width-text">
+      </member>
+      <member name="quarter_width_text"
+              value="4"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_QUARTER_WIDTH_TEXT"
+              glib:nick="quarter-width-text">
+      </member>
+      <member name="alt_proportional_text"
+              value="5"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_ALT_PROPORTIONAL_TEXT"
+              glib:nick="alt-proportional-text">
+      </member>
+      <member name="alt_half_width_text"
+              value="6"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_ALT_HALF_WIDTH_TEXT"
+              glib:nick="alt-half-width-text">
+      </member>
+      <member name="no_transliteration"
+              value="0"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_TRANSLITERATION"
+              glib:nick="no-transliteration">
+      </member>
+      <member name="hanja_to_hangul"
+              value="1"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_HANJA_TO_HANGUL"
+              glib:nick="hanja-to-hangul">
+      </member>
+      <member name="hiragana_to_katakana"
+              value="2"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_HIRAGANA_TO_KATAKANA"
+              glib:nick="hiragana-to-katakana">
+      </member>
+      <member name="katakana_to_hiragana"
+              value="3"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_KATAKANA_TO_HIRAGANA"
+              glib:nick="katakana-to-hiragana">
+      </member>
+      <member name="kana_to_romanization"
+              value="4"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_KANA_TO_ROMANIZATION"
+              glib:nick="kana-to-romanization">
+      </member>
+      <member name="romanization_to_hiragana"
+              value="5"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_ROMANIZATION_TO_HIRAGANA"
+              glib:nick="romanization-to-hiragana">
+      </member>
+      <member name="romanization_to_katakana"
+              value="6"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_ROMANIZATION_TO_KATAKANA"
+              glib:nick="romanization-to-katakana">
+      </member>
+      <member name="hanja_to_hangul_alt_one"
+              value="7"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_HANJA_TO_HANGUL_ALT_ONE"
+              glib:nick="hanja-to-hangul-alt-one">
+      </member>
+      <member name="hanja_to_hangul_alt_two"
+              value="8"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_HANJA_TO_HANGUL_ALT_TWO"
+              glib:nick="hanja-to-hangul-alt-two">
+      </member>
+      <member name="hanja_to_hangul_alt_three"
+              value="9"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_HANJA_TO_HANGUL_ALT_THREE"
+              glib:nick="hanja-to-hangul-alt-three">
+      </member>
+      <member name="no_annotation"
+              value="0"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_ANNOTATION"
+              glib:nick="no-annotation">
+      </member>
+      <member name="box_annotation"
+              value="1"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_BOX_ANNOTATION"
+              glib:nick="box-annotation">
+      </member>
+      <member name="rounded_box_annotation"
+              value="2"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_ROUNDED_BOX_ANNOTATION"
+              glib:nick="rounded-box-annotation">
+      </member>
+      <member name="circle_annotation"
+              value="3"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_CIRCLE_ANNOTATION"
+              glib:nick="circle-annotation">
+      </member>
+      <member name="inverted_circle_annotation"
+              value="4"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_INVERTED_CIRCLE_ANNOTATION"
+              glib:nick="inverted-circle-annotation">
+      </member>
+      <member name="parenthesis_annotation"
+              value="5"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_PARENTHESIS_ANNOTATION"
+              glib:nick="parenthesis-annotation">
+      </member>
+      <member name="period_annotation"
+              value="6"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_PERIOD_ANNOTATION"
+              glib:nick="period-annotation">
+      </member>
+      <member name="roman_numeral_annotation"
+              value="7"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_ROMAN_NUMERAL_ANNOTATION"
+              glib:nick="roman-numeral-annotation">
+      </member>
+      <member name="diamond_annotation"
+              value="8"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_DIAMOND_ANNOTATION"
+              glib:nick="diamond-annotation">
+      </member>
+      <member name="inverted_box_annotation"
+              value="9"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_INVERTED_BOX_ANNOTATION"
+              glib:nick="inverted-box-annotation">
+      </member>
+      <member name="inverted_rounded_box_annotation"
+              value="10"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_INVERTED_ROUNDED_BOX_ANNOTATION"
+              glib:nick="inverted-rounded-box-annotation">
+      </member>
+      <member name="full_width_kana"
+              value="0"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_FULL_WIDTH_KANA"
+              glib:nick="full-width-kana">
+      </member>
+      <member name="proportional_kana"
+              value="1"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_PROPORTIONAL_KANA"
+              glib:nick="proportional-kana">
+      </member>
+      <member name="full_width_ideographs"
+              value="0"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_FULL_WIDTH_IDEOGRAPHS"
+              glib:nick="full-width-ideographs">
+      </member>
+      <member name="proportional_ideographs"
+              value="1"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_PROPORTIONAL_IDEOGRAPHS"
+              glib:nick="proportional-ideographs">
+      </member>
+      <member name="half_width_ideographs"
+              value="2"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_HALF_WIDTH_IDEOGRAPHS"
+              glib:nick="half-width-ideographs">
+      </member>
+      <member name="canonical_composition_on"
+              value="0"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_CANONICAL_COMPOSITION_ON"
+              glib:nick="canonical-composition-on">
+      </member>
+      <member name="canonical_composition_off"
+              value="1"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_CANONICAL_COMPOSITION_OFF"
+              glib:nick="canonical-composition-off">
+      </member>
+      <member name="compatibility_composition_on"
+              value="2"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_COMPATIBILITY_COMPOSITION_ON"
+              glib:nick="compatibility-composition-on">
+      </member>
+      <member name="compatibility_composition_off"
+              value="3"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_COMPATIBILITY_COMPOSITION_OFF"
+              glib:nick="compatibility-composition-off">
+      </member>
+      <member name="transcoding_composition_on"
+              value="4"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_TRANSCODING_COMPOSITION_ON"
+              glib:nick="transcoding-composition-on">
+      </member>
+      <member name="transcoding_composition_off"
+              value="5"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_TRANSCODING_COMPOSITION_OFF"
+              glib:nick="transcoding-composition-off">
+      </member>
+      <member name="no_ruby_kana"
+              value="0"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_RUBY_KANA"
+              glib:nick="no-ruby-kana">
+      </member>
+      <member name="ruby_kana"
+              value="1"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_RUBY_KANA"
+              glib:nick="ruby-kana">
+      </member>
+      <member name="ruby_kana_on"
+              value="2"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_RUBY_KANA_ON"
+              glib:nick="ruby-kana-on">
+      </member>
+      <member name="ruby_kana_off"
+              value="3"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_RUBY_KANA_OFF"
+              glib:nick="ruby-kana-off">
+      </member>
+      <member name="no_cjk_symbol_alternatives"
+              value="0"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_CJK_SYMBOL_ALTERNATIVES"
+              glib:nick="no-cjk-symbol-alternatives">
+      </member>
+      <member name="cjk_symbol_alt_one"
+              value="1"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_SYMBOL_ALT_ONE"
+              glib:nick="cjk-symbol-alt-one">
+      </member>
+      <member name="cjk_symbol_alt_two"
+              value="2"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_SYMBOL_ALT_TWO"
+              glib:nick="cjk-symbol-alt-two">
+      </member>
+      <member name="cjk_symbol_alt_three"
+              value="3"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_SYMBOL_ALT_THREE"
+              glib:nick="cjk-symbol-alt-three">
+      </member>
+      <member name="cjk_symbol_alt_four"
+              value="4"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_SYMBOL_ALT_FOUR"
+              glib:nick="cjk-symbol-alt-four">
+      </member>
+      <member name="cjk_symbol_alt_five"
+              value="5"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_SYMBOL_ALT_FIVE"
+              glib:nick="cjk-symbol-alt-five">
+      </member>
+      <member name="no_ideographic_alternatives"
+              value="0"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_IDEOGRAPHIC_ALTERNATIVES"
+              glib:nick="no-ideographic-alternatives">
+      </member>
+      <member name="ideographic_alt_one"
+              value="1"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_IDEOGRAPHIC_ALT_ONE"
+              glib:nick="ideographic-alt-one">
+      </member>
+      <member name="ideographic_alt_two"
+              value="2"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_IDEOGRAPHIC_ALT_TWO"
+              glib:nick="ideographic-alt-two">
+      </member>
+      <member name="ideographic_alt_three"
+              value="3"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_IDEOGRAPHIC_ALT_THREE"
+              glib:nick="ideographic-alt-three">
+      </member>
+      <member name="ideographic_alt_four"
+              value="4"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_IDEOGRAPHIC_ALT_FOUR"
+              glib:nick="ideographic-alt-four">
+      </member>
+      <member name="ideographic_alt_five"
+              value="5"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_IDEOGRAPHIC_ALT_FIVE"
+              glib:nick="ideographic-alt-five">
+      </member>
+      <member name="cjk_vertical_roman_centered"
+              value="0"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_VERTICAL_ROMAN_CENTERED"
+              glib:nick="cjk-vertical-roman-centered">
+      </member>
+      <member name="cjk_vertical_roman_hbaseline"
+              value="1"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_VERTICAL_ROMAN_HBASELINE"
+              glib:nick="cjk-vertical-roman-hbaseline">
+      </member>
+      <member name="no_cjk_italic_roman"
+              value="0"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_CJK_ITALIC_ROMAN"
+              glib:nick="no-cjk-italic-roman">
+      </member>
+      <member name="cjk_italic_roman"
+              value="1"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_ITALIC_ROMAN"
+              glib:nick="cjk-italic-roman">
+      </member>
+      <member name="cjk_italic_roman_on"
+              value="2"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_ITALIC_ROMAN_ON"
+              glib:nick="cjk-italic-roman-on">
+      </member>
+      <member name="cjk_italic_roman_off"
+              value="3"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_ITALIC_ROMAN_OFF"
+              glib:nick="cjk-italic-roman-off">
+      </member>
+      <member name="case_sensitive_layout_on"
+              value="0"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_CASE_SENSITIVE_LAYOUT_ON"
+              glib:nick="case-sensitive-layout-on">
+      </member>
+      <member name="case_sensitive_layout_off"
+              value="1"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_CASE_SENSITIVE_LAYOUT_OFF"
+              glib:nick="case-sensitive-layout-off">
+      </member>
+      <member name="case_sensitive_spacing_on"
+              value="2"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_CASE_SENSITIVE_SPACING_ON"
+              glib:nick="case-sensitive-spacing-on">
+      </member>
+      <member name="case_sensitive_spacing_off"
+              value="3"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_CASE_SENSITIVE_SPACING_OFF"
+              glib:nick="case-sensitive-spacing-off">
+      </member>
+      <member name="alternate_horiz_kana_on"
+              value="0"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_ALTERNATE_HORIZ_KANA_ON"
+              glib:nick="alternate-horiz-kana-on">
+      </member>
+      <member name="alternate_horiz_kana_off"
+              value="1"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_ALTERNATE_HORIZ_KANA_OFF"
+              glib:nick="alternate-horiz-kana-off">
+      </member>
+      <member name="alternate_vert_kana_on"
+              value="2"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_ALTERNATE_VERT_KANA_ON"
+              glib:nick="alternate-vert-kana-on">
+      </member>
+      <member name="alternate_vert_kana_off"
+              value="3"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_ALTERNATE_VERT_KANA_OFF"
+              glib:nick="alternate-vert-kana-off">
+      </member>
+      <member name="no_stylistic_alternates"
+              value="0"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_STYLISTIC_ALTERNATES"
+              glib:nick="no-stylistic-alternates">
+      </member>
+      <member name="stylistic_alt_one_on"
+              value="2"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_ONE_ON"
+              glib:nick="stylistic-alt-one-on">
+      </member>
+      <member name="stylistic_alt_one_off"
+              value="3"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_ONE_OFF"
+              glib:nick="stylistic-alt-one-off">
+      </member>
+      <member name="stylistic_alt_two_on"
+              value="4"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TWO_ON"
+              glib:nick="stylistic-alt-two-on">
+      </member>
+      <member name="stylistic_alt_two_off"
+              value="5"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TWO_OFF"
+              glib:nick="stylistic-alt-two-off">
+      </member>
+      <member name="stylistic_alt_three_on"
+              value="6"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_THREE_ON"
+              glib:nick="stylistic-alt-three-on">
+      </member>
+      <member name="stylistic_alt_three_off"
+              value="7"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_THREE_OFF"
+              glib:nick="stylistic-alt-three-off">
+      </member>
+      <member name="stylistic_alt_four_on"
+              value="8"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FOUR_ON"
+              glib:nick="stylistic-alt-four-on">
+      </member>
+      <member name="stylistic_alt_four_off"
+              value="9"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FOUR_OFF"
+              glib:nick="stylistic-alt-four-off">
+      </member>
+      <member name="stylistic_alt_five_on"
+              value="10"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FIVE_ON"
+              glib:nick="stylistic-alt-five-on">
+      </member>
+      <member name="stylistic_alt_five_off"
+              value="11"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FIVE_OFF"
+              glib:nick="stylistic-alt-five-off">
+      </member>
+      <member name="stylistic_alt_six_on"
+              value="12"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SIX_ON"
+              glib:nick="stylistic-alt-six-on">
+      </member>
+      <member name="stylistic_alt_six_off"
+              value="13"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SIX_OFF"
+              glib:nick="stylistic-alt-six-off">
+      </member>
+      <member name="stylistic_alt_seven_on"
+              value="14"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SEVEN_ON"
+              glib:nick="stylistic-alt-seven-on">
+      </member>
+      <member name="stylistic_alt_seven_off"
+              value="15"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SEVEN_OFF"
+              glib:nick="stylistic-alt-seven-off">
+      </member>
+      <member name="stylistic_alt_eight_on"
+              value="16"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_EIGHT_ON"
+              glib:nick="stylistic-alt-eight-on">
+      </member>
+      <member name="stylistic_alt_eight_off"
+              value="17"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_EIGHT_OFF"
+              glib:nick="stylistic-alt-eight-off">
+      </member>
+      <member name="stylistic_alt_nine_on"
+              value="18"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_NINE_ON"
+              glib:nick="stylistic-alt-nine-on">
+      </member>
+      <member name="stylistic_alt_nine_off"
+              value="19"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_NINE_OFF"
+              glib:nick="stylistic-alt-nine-off">
+      </member>
+      <member name="stylistic_alt_ten_on"
+              value="20"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TEN_ON"
+              glib:nick="stylistic-alt-ten-on">
+      </member>
+      <member name="stylistic_alt_ten_off"
+              value="21"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TEN_OFF"
+              glib:nick="stylistic-alt-ten-off">
+      </member>
+      <member name="stylistic_alt_eleven_on"
+              value="22"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_ELEVEN_ON"
+              glib:nick="stylistic-alt-eleven-on">
+      </member>
+      <member name="stylistic_alt_eleven_off"
+              value="23"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_ELEVEN_OFF"
+              glib:nick="stylistic-alt-eleven-off">
+      </member>
+      <member name="stylistic_alt_twelve_on"
+              value="24"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TWELVE_ON"
+              glib:nick="stylistic-alt-twelve-on">
+      </member>
+      <member name="stylistic_alt_twelve_off"
+              value="25"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TWELVE_OFF"
+              glib:nick="stylistic-alt-twelve-off">
+      </member>
+      <member name="stylistic_alt_thirteen_on"
+              value="26"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_THIRTEEN_ON"
+              glib:nick="stylistic-alt-thirteen-on">
+      </member>
+      <member name="stylistic_alt_thirteen_off"
+              value="27"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_THIRTEEN_OFF"
+              glib:nick="stylistic-alt-thirteen-off">
+      </member>
+      <member name="stylistic_alt_fourteen_on"
+              value="28"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FOURTEEN_ON"
+              glib:nick="stylistic-alt-fourteen-on">
+      </member>
+      <member name="stylistic_alt_fourteen_off"
+              value="29"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FOURTEEN_OFF"
+              glib:nick="stylistic-alt-fourteen-off">
+      </member>
+      <member name="stylistic_alt_fifteen_on"
+              value="30"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FIFTEEN_ON"
+              glib:nick="stylistic-alt-fifteen-on">
+      </member>
+      <member name="stylistic_alt_fifteen_off"
+              value="31"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FIFTEEN_OFF"
+              glib:nick="stylistic-alt-fifteen-off">
+      </member>
+      <member name="stylistic_alt_sixteen_on"
+              value="32"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SIXTEEN_ON"
+              glib:nick="stylistic-alt-sixteen-on">
+      </member>
+      <member name="stylistic_alt_sixteen_off"
+              value="33"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SIXTEEN_OFF"
+              glib:nick="stylistic-alt-sixteen-off">
+      </member>
+      <member name="stylistic_alt_seventeen_on"
+              value="34"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SEVENTEEN_ON"
+              glib:nick="stylistic-alt-seventeen-on">
+      </member>
+      <member name="stylistic_alt_seventeen_off"
+              value="35"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SEVENTEEN_OFF"
+              glib:nick="stylistic-alt-seventeen-off">
+      </member>
+      <member name="stylistic_alt_eighteen_on"
+              value="36"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_EIGHTEEN_ON"
+              glib:nick="stylistic-alt-eighteen-on">
+      </member>
+      <member name="stylistic_alt_eighteen_off"
+              value="37"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_EIGHTEEN_OFF"
+              glib:nick="stylistic-alt-eighteen-off">
+      </member>
+      <member name="stylistic_alt_nineteen_on"
+              value="38"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_NINETEEN_ON"
+              glib:nick="stylistic-alt-nineteen-on">
+      </member>
+      <member name="stylistic_alt_nineteen_off"
+              value="39"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_NINETEEN_OFF"
+              glib:nick="stylistic-alt-nineteen-off">
+      </member>
+      <member name="stylistic_alt_twenty_on"
+              value="40"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TWENTY_ON"
+              glib:nick="stylistic-alt-twenty-on">
+      </member>
+      <member name="stylistic_alt_twenty_off"
+              value="41"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TWENTY_OFF"
+              glib:nick="stylistic-alt-twenty-off">
+      </member>
+      <member name="contextual_alternates_on"
+              value="0"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_CONTEXTUAL_ALTERNATES_ON"
+              glib:nick="contextual-alternates-on">
+      </member>
+      <member name="contextual_alternates_off"
+              value="1"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_CONTEXTUAL_ALTERNATES_OFF"
+              glib:nick="contextual-alternates-off">
+      </member>
+      <member name="swash_alternates_on"
+              value="2"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_SWASH_ALTERNATES_ON"
+              glib:nick="swash-alternates-on">
+      </member>
+      <member name="swash_alternates_off"
+              value="3"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_SWASH_ALTERNATES_OFF"
+              glib:nick="swash-alternates-off">
+      </member>
+      <member name="contextual_swash_alternates_on"
+              value="4"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_CONTEXTUAL_SWASH_ALTERNATES_ON"
+              glib:nick="contextual-swash-alternates-on">
+      </member>
+      <member name="contextual_swash_alternates_off"
+              value="5"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_CONTEXTUAL_SWASH_ALTERNATES_OFF"
+              glib:nick="contextual-swash-alternates-off">
+      </member>
+      <member name="default_lower_case"
+              value="0"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_DEFAULT_LOWER_CASE"
+              glib:nick="default-lower-case">
+      </member>
+      <member name="lower_case_small_caps"
+              value="1"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_LOWER_CASE_SMALL_CAPS"
+              glib:nick="lower-case-small-caps">
+      </member>
+      <member name="lower_case_petite_caps"
+              value="2"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_LOWER_CASE_PETITE_CAPS"
+              glib:nick="lower-case-petite-caps">
+      </member>
+      <member name="default_upper_case"
+              value="0"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_DEFAULT_UPPER_CASE"
+              glib:nick="default-upper-case">
+      </member>
+      <member name="upper_case_small_caps"
+              value="1"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_UPPER_CASE_SMALL_CAPS"
+              glib:nick="upper-case-small-caps">
+      </member>
+      <member name="upper_case_petite_caps"
+              value="2"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_UPPER_CASE_PETITE_CAPS"
+              glib:nick="upper-case-petite-caps">
+      </member>
+      <member name="half_width_cjk_roman"
+              value="0"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_HALF_WIDTH_CJK_ROMAN"
+              glib:nick="half-width-cjk-roman">
+      </member>
+      <member name="proportional_cjk_roman"
+              value="1"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_PROPORTIONAL_CJK_ROMAN"
+              glib:nick="proportional-cjk-roman">
+      </member>
+      <member name="default_cjk_roman"
+              value="2"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_DEFAULT_CJK_ROMAN"
+              glib:nick="default-cjk-roman">
+      </member>
+      <member name="full_width_cjk_roman"
+              value="3"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_SELECTOR_FULL_WIDTH_CJK_ROMAN"
+              glib:nick="full-width-cjk-roman">
+      </member>
+    </enumeration>
+    <enumeration name="aat_layout_feature_type_t"
+                 version="2.2.0"
+                 glib:type-name="hb_aat_layout_feature_type_t"
+                 glib:get-type="hb_gobject_aat_layout_feature_type_get_type"
+                 c:type="hb_aat_layout_feature_type_t">
+      <member name="invalid"
+              value="65535"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_TYPE_INVALID"
+              glib:nick="invalid">
+      </member>
+      <member name="all_typographic"
+              value="0"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_TYPE_ALL_TYPOGRAPHIC"
+              glib:nick="all-typographic">
+      </member>
+      <member name="ligatures"
+              value="1"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES"
+              glib:nick="ligatures">
+      </member>
+      <member name="curisve_connection"
+              value="2"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_TYPE_CURISVE_CONNECTION"
+              glib:nick="curisve-connection">
+      </member>
+      <member name="letter_case"
+              value="3"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_TYPE_LETTER_CASE"
+              glib:nick="letter-case">
+      </member>
+      <member name="vertical_substitution"
+              value="4"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_SUBSTITUTION"
+              glib:nick="vertical-substitution">
+      </member>
+      <member name="linguistic_rearrangement"
+              value="5"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_TYPE_LINGUISTIC_REARRANGEMENT"
+              glib:nick="linguistic-rearrangement">
+      </member>
+      <member name="number_spacing"
+              value="6"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_SPACING"
+              glib:nick="number-spacing">
+      </member>
+      <member name="smart_swash_type"
+              value="8"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE"
+              glib:nick="smart-swash-type">
+      </member>
+      <member name="diacritics_type"
+              value="9"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_TYPE_DIACRITICS_TYPE"
+              glib:nick="diacritics-type">
+      </member>
+      <member name="vertical_position"
+              value="10"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_POSITION"
+              glib:nick="vertical-position">
+      </member>
+      <member name="fractions"
+              value="11"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_TYPE_FRACTIONS"
+              glib:nick="fractions">
+      </member>
+      <member name="overlapping_characters_type"
+              value="13"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_TYPE_OVERLAPPING_CHARACTERS_TYPE"
+              glib:nick="overlapping-characters-type">
+      </member>
+      <member name="typographic_extras"
+              value="14"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS"
+              glib:nick="typographic-extras">
+      </member>
+      <member name="mathematical_extras"
+              value="15"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS"
+              glib:nick="mathematical-extras">
+      </member>
+      <member name="ornament_sets_type"
+              value="16"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_TYPE_ORNAMENT_SETS_TYPE"
+              glib:nick="ornament-sets-type">
+      </member>
+      <member name="character_alternatives"
+              value="17"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_ALTERNATIVES"
+              glib:nick="character-alternatives">
+      </member>
+      <member name="design_complexity_type"
+              value="18"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_TYPE_DESIGN_COMPLEXITY_TYPE"
+              glib:nick="design-complexity-type">
+      </member>
+      <member name="style_options"
+              value="19"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_TYPE_STYLE_OPTIONS"
+              glib:nick="style-options">
+      </member>
+      <member name="character_shape"
+              value="20"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE"
+              glib:nick="character-shape">
+      </member>
+      <member name="number_case"
+              value="21"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_CASE"
+              glib:nick="number-case">
+      </member>
+      <member name="text_spacing"
+              value="22"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING"
+              glib:nick="text-spacing">
+      </member>
+      <member name="transliteration"
+              value="23"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION"
+              glib:nick="transliteration">
+      </member>
+      <member name="annotation_type"
+              value="24"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE"
+              glib:nick="annotation-type">
+      </member>
+      <member name="kana_spacing_type"
+              value="25"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_TYPE_KANA_SPACING_TYPE"
+              glib:nick="kana-spacing-type">
+      </member>
+      <member name="ideographic_spacing_type"
+              value="26"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_SPACING_TYPE"
+              glib:nick="ideographic-spacing-type">
+      </member>
+      <member name="unicode_decomposition_type"
+              value="27"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_TYPE_UNICODE_DECOMPOSITION_TYPE"
+              glib:nick="unicode-decomposition-type">
+      </member>
+      <member name="ruby_kana"
+              value="28"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_TYPE_RUBY_KANA"
+              glib:nick="ruby-kana">
+      </member>
+      <member name="cjk_symbol_alternatives_type"
+              value="29"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_TYPE_CJK_SYMBOL_ALTERNATIVES_TYPE"
+              glib:nick="cjk-symbol-alternatives-type">
+      </member>
+      <member name="ideographic_alternatives_type"
+              value="30"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_ALTERNATIVES_TYPE"
+              glib:nick="ideographic-alternatives-type">
+      </member>
+      <member name="cjk_vertical_roman_placement_type"
+              value="31"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_TYPE_CJK_VERTICAL_ROMAN_PLACEMENT_TYPE"
+              glib:nick="cjk-vertical-roman-placement-type">
+      </member>
+      <member name="italic_cjk_roman"
+              value="32"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_TYPE_ITALIC_CJK_ROMAN"
+              glib:nick="italic-cjk-roman">
+      </member>
+      <member name="case_sensitive_layout"
+              value="33"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_TYPE_CASE_SENSITIVE_LAYOUT"
+              glib:nick="case-sensitive-layout">
+      </member>
+      <member name="alternate_kana"
+              value="34"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_TYPE_ALTERNATE_KANA"
+              glib:nick="alternate-kana">
+      </member>
+      <member name="stylistic_alternatives"
+              value="35"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES"
+              glib:nick="stylistic-alternatives">
+      </member>
+      <member name="contextual_alternatives"
+              value="36"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_TYPE_CONTEXTUAL_ALTERNATIVES"
+              glib:nick="contextual-alternatives">
+      </member>
+      <member name="lower_case"
+              value="37"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_TYPE_LOWER_CASE"
+              glib:nick="lower-case">
+      </member>
+      <member name="upper_case"
+              value="38"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_TYPE_UPPER_CASE"
+              glib:nick="upper-case">
+      </member>
+      <member name="language_tag_type"
+              value="39"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_TYPE_LANGUAGE_TAG_TYPE"
+              glib:nick="language-tag-type">
+      </member>
+      <member name="cjk_roman_spacing_type"
+              value="103"
+              c:identifier="HB_AAT_LAYOUT_FEATURE_TYPE_CJK_ROMAN_SPACING_TYPE"
+              glib:nick="cjk-roman-spacing-type">
+      </member>
+    </enumeration>
+    <function name="blob_copy_writable_or_fail"
+              c:identifier="hb_blob_copy_writable_or_fail"
+              version="1.8.0">
+      <doc xml:space="preserve"
+           filename="../src/hb-blob.cc"
+           line="153">Makes a writable copy of @blob.</doc>
+      <source-position filename="../src/hb-blob.h" line="89"/>
+      <return-value transfer-ownership="full">
+        <doc xml:space="preserve"
+             filename="../src/hb-blob.cc"
+             line="159">New blob, or nullptr if allocation failed.</doc>
+        <type name="blob_t" c:type="hb_blob_t*"/>
+      </return-value>
+      <parameters>
+        <parameter name="blob" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-blob.cc"
+               line="155">A blob.</doc>
+          <type name="blob_t" c:type="hb_blob_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="blob_create"
+              c:identifier="hb_blob_create"
+              version="0.9.2"
+              introspectable="0">
+      <doc xml:space="preserve"
+           filename="../src/hb-blob.cc"
+           line="55">Creates a new "blob" object wrapping @data.  The @mode parameter is used
+to negotiate ownership and lifecycle of @data.</doc>
+      <source-position filename="../src/hb-blob.h" line="68"/>
+      <return-value transfer-ownership="full">
+        <doc xml:space="preserve"
+             filename="../src/hb-blob.cc"
+             line="66">New blob, or the empty blob if something failed or if @length is
+zero.  Destroy with hb_blob_destroy().</doc>
+        <type name="blob_t" c:type="hb_blob_t*"/>
+      </return-value>
+      <parameters>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-blob.cc"
+               line="57">Pointer to blob data.</doc>
+          <type name="utf8" c:type="const char*"/>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-blob.cc"
+               line="58">Length of @data in bytes.</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="mode" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-blob.cc"
+               line="59">Memory mode for @data.</doc>
+          <type name="memory_mode_t" c:type="hb_memory_mode_t"/>
+        </parameter>
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
+          <doc xml:space="preserve"
+               filename="../src/hb-blob.cc"
+               line="60">Data parameter to pass to @destroy.</doc>
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+        <parameter name="destroy" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-blob.cc"
+               line="61">Callback to call when @data is not needed anymore.</doc>
+          <type name="destroy_func_t" c:type="hb_destroy_func_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="blob_create_from_file"
+              c:identifier="hb_blob_create_from_file"
+              version="1.7.7">
+      <source-position filename="../src/hb-blob.h" line="75"/>
+      <return-value transfer-ownership="full">
+        <doc xml:space="preserve"
+             filename="../src/hb-blob.cc"
+             line="563">A hb_blob_t pointer with the content of the file</doc>
+        <type name="blob_t" c:type="hb_blob_t*"/>
+      </return-value>
+      <parameters>
+        <parameter name="file_name" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-blob.cc"
+               line="561">font filename.</doc>
+          <type name="utf8" c:type="const char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="blob_create_sub_blob"
+              c:identifier="hb_blob_create_sub_blob"
+              version="0.9.2">
+      <doc xml:space="preserve"
+           filename="../src/hb-blob.cc"
+           line="112">Returns a blob that represents a range of bytes in @parent.  The new
+blob is always created with %HB_MEMORY_MODE_READONLY, meaning that it
+will never modify data in the parent blob.  The parent data is not
+expected to be modified, and will result in undefined behavior if it
+is.
+
+Makes @parent immutable.</doc>
+      <source-position filename="../src/hb-blob.h" line="84"/>
+      <return-value transfer-ownership="full">
+        <doc xml:space="preserve"
+             filename="../src/hb-blob.cc"
+             line="126">New blob, or the empty blob if something failed or if
+@length is zero or @offset is beyond the end of @parent's data.  Destroy
+with hb_blob_destroy().</doc>
+        <type name="blob_t" c:type="hb_blob_t*"/>
+      </return-value>
+      <parameters>
+        <parameter name="parent" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-blob.cc"
+               line="114">Parent blob.</doc>
+          <type name="blob_t" c:type="hb_blob_t*"/>
+        </parameter>
+        <parameter name="offset" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-blob.cc"
+               line="115">Start offset of sub-blob within @parent, in bytes.</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-blob.cc"
+               line="116">Length of sub-blob.</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="blob_destroy"
+              c:identifier="hb_blob_destroy"
+              version="0.9.2"
+              introspectable="0">
+      <doc xml:space="preserve"
+           filename="../src/hb-blob.cc"
+           line="213">Decreases the reference count on @blob, and if it reaches zero, destroys
+@blob, freeing all memory, possibly calling the destroy-callback the blob
+was created for if it has not been called already.
+
+See TODO:link object types for more information.</doc>
+      <source-position filename="../src/hb-blob.h" line="98"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="blob" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-blob.cc"
+               line="215">a blob.</doc>
+          <type name="blob_t" c:type="hb_blob_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="blob_get_data"
+              c:identifier="hb_blob_get_data"
+              version="0.9.2">
+      <source-position filename="../src/hb-blob.h" line="124"/>
+      <return-value transfer-ownership="none">
+        <array length="1" zero-terminated="0" c:type="const char*">
+          <type name="utf8" c:type="char"/>
+        </array>
+      </return-value>
+      <parameters>
+        <parameter name="blob" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-blob.cc"
+               line="328">a blob.</doc>
+          <type name="blob_t" c:type="hb_blob_t*"/>
+        </parameter>
+        <parameter name="length"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <type name="guint" c:type="unsigned int*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="blob_get_data_writable"
+              c:identifier="hb_blob_get_data_writable"
+              version="0.9.2">
+      <doc xml:space="preserve"
+           filename="../src/hb-blob.cc"
+           line="346">Tries to make blob data writable (possibly copying it) and
+return pointer to data.
+
+Fails if blob has been made immutable, or if memory allocation
+fails.</doc>
+      <source-position filename="../src/hb-blob.h" line="127"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-blob.cc"
+             line="357">Writable blob data,
+or %NULL if failed.</doc>
+        <array length="1" zero-terminated="0" c:type="char*">
+          <type name="utf8" c:type="char"/>
+        </array>
+      </return-value>
+      <parameters>
+        <parameter name="blob" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-blob.cc"
+               line="348">a blob.</doc>
+          <type name="blob_t" c:type="hb_blob_t*"/>
+        </parameter>
+        <parameter name="length"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../src/hb-blob.cc"
+               line="349">output length of the writable data.</doc>
+          <type name="guint" c:type="unsigned int*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="blob_get_empty"
+              c:identifier="hb_blob_get_empty"
+              version="0.9.2">
+      <doc xml:space="preserve"
+           filename="../src/hb-blob.cc"
+           line="178">Returns the singleton empty blob.
+
+See TODO:link object types for more information.</doc>
+      <source-position filename="../src/hb-blob.h" line="92"/>
+      <return-value transfer-ownership="full">
+        <doc xml:space="preserve"
+             filename="../src/hb-blob.cc"
+             line="185">the empty blob.</doc>
+        <type name="blob_t" c:type="hb_blob_t*"/>
+      </return-value>
+    </function>
+    <function name="blob_get_length"
+              c:identifier="hb_blob_get_length"
+              version="0.9.2">
+      <source-position filename="../src/hb-blob.h" line="121"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-blob.cc"
+             line="316">the length of blob data in bytes.</doc>
+        <type name="guint" c:type="unsigned int"/>
+      </return-value>
+      <parameters>
+        <parameter name="blob" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-blob.cc"
+               line="312">a blob.</doc>
+          <type name="blob_t" c:type="hb_blob_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="blob_get_user_data"
+              c:identifier="hb_blob_get_user_data"
+              version="0.9.2"
+              introspectable="0">
+      <source-position filename="../src/hb-blob.h" line="109"/>
+      <return-value transfer-ownership="none" nullable="1">
+        <type name="gpointer" c:type="void*"/>
+      </return-value>
+      <parameters>
+        <parameter name="blob" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-blob.cc"
+               line="259">a blob.</doc>
+          <type name="blob_t" c:type="hb_blob_t*"/>
+        </parameter>
+        <parameter name="key" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-blob.cc"
+               line="260">key for data to get.</doc>
+          <type name="user_data_key_t" c:type="hb_user_data_key_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="blob_is_immutable"
+              c:identifier="hb_blob_is_immutable"
+              version="0.9.2">
+      <source-position filename="../src/hb-blob.h" line="117"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-blob.cc"
+             line="299">TODO</doc>
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="blob" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-blob.cc"
+               line="295">a blob.</doc>
+          <type name="blob_t" c:type="hb_blob_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="blob_make_immutable"
+              c:identifier="hb_blob_make_immutable"
+              version="0.9.2">
+      <source-position filename="../src/hb-blob.h" line="114"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="blob" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-blob.cc"
+               line="278">a blob.</doc>
+          <type name="blob_t" c:type="hb_blob_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="blob_reference"
+              c:identifier="hb_blob_reference"
+              version="0.9.2"
+              introspectable="0">
+      <doc xml:space="preserve"
+           filename="../src/hb-blob.cc"
+           line="195">Increases the reference count on @blob.
+
+See TODO:link object types for more information.</doc>
+      <source-position filename="../src/hb-blob.h" line="95"/>
+      <return-value transfer-ownership="full">
+        <doc xml:space="preserve"
+             filename="../src/hb-blob.cc"
+             line="203">@blob.</doc>
+        <type name="blob_t" c:type="hb_blob_t*"/>
+      </return-value>
+      <parameters>
+        <parameter name="blob" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-blob.cc"
+               line="197">a blob.</doc>
+          <type name="blob_t" c:type="hb_blob_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="blob_set_user_data"
+              c:identifier="hb_blob_set_user_data"
+              version="0.9.2"
+              introspectable="0">
+      <source-position filename="../src/hb-blob.h" line="101"/>
+      <return-value transfer-ownership="none">
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="blob" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-blob.cc"
+               line="237">a blob.</doc>
+          <type name="blob_t" c:type="hb_blob_t*"/>
+        </parameter>
+        <parameter name="key" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-blob.cc"
+               line="238">key for data to set.</doc>
+          <type name="user_data_key_t" c:type="hb_user_data_key_t*"/>
+        </parameter>
+        <parameter name="data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
+          <doc xml:space="preserve"
+               filename="../src/hb-blob.cc"
+               line="239">data to set.</doc>
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+        <parameter name="destroy" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-blob.cc"
+               line="240">callback to call when @data is not needed anymore.</doc>
+          <type name="destroy_func_t" c:type="hb_destroy_func_t"/>
+        </parameter>
+        <parameter name="replace" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-blob.cc"
+               line="241">whether to replace an existing data with the same key.</doc>
+          <type name="bool_t" c:type="hb_bool_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <record name="blob_t"
+            c:type="hb_blob_t"
+            glib:type-name="hb_blob_t"
+            glib:get-type="hb_gobject_blob_get_type"
+            c:symbol-prefix="gobject_blob">
+      <source-position filename="../src/hb-blob.h" line="65"/>
+    </record>
+    <function name="buffer_add" c:identifier="hb_buffer_add" version="0.9.7">
+      <doc xml:space="preserve"
+           filename="../src/hb-buffer.cc"
+           line="1270">Appends a character with the Unicode value of @codepoint to @buffer, and
+gives it the initial cluster value of @cluster. Clusters can be any thing
+the client wants, they are usually used to refer to the index of the
+character in the input text stream and are output in
+#hb_glyph_info_t.cluster field.
+
+This function does not check the validity of @codepoint, it is up to the
+caller to ensure it is a valid Unicode code point.</doc>
+      <source-position filename="../src/hb-buffer.h" line="388"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="1272">an #hb_buffer_t.</doc>
+          <type name="buffer_t" c:type="hb_buffer_t*"/>
+        </parameter>
+        <parameter name="codepoint" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="1273">a Unicode code point.</doc>
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+        <parameter name="cluster" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="1274">the cluster value of @codepoint.</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_add_codepoints"
+              c:identifier="hb_buffer_add_codepoints"
+              version="0.9.31">
+      <doc xml:space="preserve"
+           filename="../src/hb-buffer.cc"
+           line="1680">Appends characters from @text array to @buffer. The @item_offset is the
+position of the first character from @text that will be appended, and
+@item_length is the number of character. When shaping part of a larger text
+(e.g. a run of text from a paragraph), instead of passing just the substring
+corresponding to the run, it is preferable to pass the whole
+paragraph and specify the run start and length as @item_offset and
+@item_length, respectively, to give HarfBuzz the full context to be able,
+for example, to do cross-run Arabic shaping or properly handle combining
+marks at stat of run.
+
+This function does not check the validity of @text, it is up to the caller
+to ensure it contains a valid Unicode code points.</doc>
+      <source-position filename="../src/hb-buffer.h" line="421"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="1682">a #hb_buffer_t to append characters to.</doc>
+          <type name="buffer_t" c:type="hb_buffer_t*"/>
+        </parameter>
+        <parameter name="text" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="1683">an array of Unicode code points to append.</doc>
+          <array length="2" zero-terminated="0" c:type="const hb_codepoint_t*">
+            <type name="codepoint_t" c:type="hb_codepoint_t"/>
+          </array>
+        </parameter>
+        <parameter name="text_length" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="1684">the length of the @text, or -1 if it is %NULL terminated.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="item_offset" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="1685">the offset of the first code point to add to the @buffer.</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="item_length" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="1686">the number of code points to add to the @buffer, or -1 for the
+              end of @text (assuming it is %NULL terminated).</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_add_latin1"
+              c:identifier="hb_buffer_add_latin1"
+              version="0.9.39">
+      <doc xml:space="preserve"
+           filename="../src/hb-buffer.cc"
+           line="1653">Similar to hb_buffer_add_codepoints(), but allows only access to first 256
+Unicode code points that can fit in 8-bit strings.
+
+&lt;note&gt;Has nothing to do with non-Unicode Latin-1 encoding.&lt;/note&gt;</doc>
+      <source-position filename="../src/hb-buffer.h" line="414"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="1655">an #hb_buffer_t.</doc>
+          <type name="buffer_t" c:type="hb_buffer_t*"/>
+        </parameter>
+        <parameter name="text" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="1656">an array of UTF-8
+              characters to append.</doc>
+          <array length="2" zero-terminated="0" c:type="const uint8_t*">
+            <type name="guint8"/>
+          </array>
+        </parameter>
+        <parameter name="text_length" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="1658">the length of the @text, or -1 if it is %NULL terminated.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="item_offset" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="1659">the offset of the first character to add to the @buffer.</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="item_length" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="1660">the number of characters to add to the @buffer, or -1 for the
+              end of @text (assuming it is %NULL terminated).</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_add_utf16"
+              c:identifier="hb_buffer_add_utf16"
+              version="0.9.2">
+      <doc xml:space="preserve"
+           filename="../src/hb-buffer.cc"
+           line="1601">See hb_buffer_add_codepoints().
+
+Replaces invalid UTF-16 characters with the @buffer replacement code point,
+see hb_buffer_set_replacement_codepoint().</doc>
+      <source-position filename="../src/hb-buffer.h" line="400"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="1603">an #hb_buffer_t.</doc>
+          <type name="buffer_t" c:type="hb_buffer_t*"/>
+        </parameter>
+        <parameter name="text" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="1604">an array of UTF-16 characters to append.</doc>
+          <array length="2" zero-terminated="0" c:type="const uint16_t*">
+            <type name="guint16" c:type="uint16_t"/>
+          </array>
+        </parameter>
+        <parameter name="text_length" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="1605">the length of the @text, or -1 if it is %NULL terminated.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="item_offset" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="1606">the offset of the first character to add to the @buffer.</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="item_length" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="1607">the number of characters to add to the @buffer, or -1 for the
+              end of @text (assuming it is %NULL terminated).</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_add_utf32"
+              c:identifier="hb_buffer_add_utf32"
+              version="0.9.2">
+      <doc xml:space="preserve"
+           filename="../src/hb-buffer.cc"
+           line="1627">See hb_buffer_add_codepoints().
+
+Replaces invalid UTF-32 characters with the @buffer replacement code point,
+see hb_buffer_set_replacement_codepoint().</doc>
+      <source-position filename="../src/hb-buffer.h" line="407"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="1629">an #hb_buffer_t.</doc>
+          <type name="buffer_t" c:type="hb_buffer_t*"/>
+        </parameter>
+        <parameter name="text" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="1630">an array of UTF-32 characters to append.</doc>
+          <array length="2" zero-terminated="0" c:type="const uint32_t*">
+            <type name="guint32" c:type="uint32_t"/>
+          </array>
+        </parameter>
+        <parameter name="text_length" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="1631">the length of the @text, or -1 if it is %NULL terminated.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="item_offset" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="1632">the offset of the first character to add to the @buffer.</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="item_length" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="1633">the number of characters to add to the @buffer, or -1 for the
+              end of @text (assuming it is %NULL terminated).</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_add_utf8"
+              c:identifier="hb_buffer_add_utf8"
+              version="0.9.2">
+      <doc xml:space="preserve"
+           filename="../src/hb-buffer.cc"
+           line="1574">See hb_buffer_add_codepoints().
+
+Replaces invalid UTF-8 characters with the @buffer replacement code point,
+see hb_buffer_set_replacement_codepoint().</doc>
+      <source-position filename="../src/hb-buffer.h" line="393"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="1576">an #hb_buffer_t.</doc>
+          <type name="buffer_t" c:type="hb_buffer_t*"/>
+        </parameter>
+        <parameter name="text" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="1577">an array of UTF-8
+              characters to append.</doc>
+          <array length="2" zero-terminated="0" c:type="const char*">
+            <type name="guint8"/>
+          </array>
+        </parameter>
+        <parameter name="text_length" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="1579">the length of the @text, or -1 if it is %NULL terminated.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="item_offset" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="1580">the offset of the first character to add to the @buffer.</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="item_length" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="1581">the number of characters to add to the @buffer, or -1 for the
+              end of @text (assuming it is %NULL terminated).</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_allocation_successful"
+              c:identifier="hb_buffer_allocation_successful"
+              version="0.9.2">
+      <doc xml:space="preserve"
+           filename="../src/hb-buffer.cc"
+           line="1253">Check if allocating memory for the buffer succeeded.</doc>
+      <source-position filename="../src/hb-buffer.h" line="372"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-buffer.cc"
+             line="1259">%true if @buffer memory allocation succeeded, %false otherwise.</doc>
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="1255">an #hb_buffer_t.</doc>
+          <type name="buffer_t" c:type="hb_buffer_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_append"
+              c:identifier="hb_buffer_append"
+              version="1.5.0">
+      <doc xml:space="preserve"
+           filename="../src/hb-buffer.cc"
+           line="1715">Append (part of) contents of another buffer to this buffer.</doc>
+      <source-position filename="../src/hb-buffer.h" line="428"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="1717">an #hb_buffer_t.</doc>
+          <type name="buffer_t" c:type="hb_buffer_t*"/>
+        </parameter>
+        <parameter name="source" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="1718">source #hb_buffer_t.</doc>
+          <type name="buffer_t" c:type="hb_buffer_t*"/>
+        </parameter>
+        <parameter name="start" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="1719">start index into source buffer to copy.  Use 0 to copy from start of buffer.</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="end" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="1720">end index into source buffer to copy.  Use @HB_FEATURE_GLOBAL_END to copy to end of buffer.</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_clear_contents"
+              c:identifier="hb_buffer_clear_contents"
+              version="0.9.11">
+      <doc xml:space="preserve"
+           filename="../src/hb-buffer.cc"
+           line="1220">Similar to hb_buffer_reset(), but does not clear the Unicode functions and
+the replacement code point.</doc>
+      <source-position filename="../src/hb-buffer.h" line="364"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="1222">an #hb_buffer_t.</doc>
+          <type name="buffer_t" c:type="hb_buffer_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <enumeration name="buffer_cluster_level_t"
+                 version="0.9.42"
+                 glib:type-name="hb_buffer_cluster_level_t"
+                 glib:get-type="hb_gobject_buffer_cluster_level_get_type"
+                 c:type="hb_buffer_cluster_level_t">
+      <member name="monotone_graphemes"
+              value="0"
+              c:identifier="HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES"
+              glib:nick="monotone-graphemes">
+        <doc xml:space="preserve"
+             filename="../src/hb-buffer.h"
+             line="312">Return cluster values grouped by graphemes into
+  monotone order.</doc>
+      </member>
+      <member name="monotone_characters"
+              value="1"
+              c:identifier="HB_BUFFER_CLUSTER_LEVEL_MONOTONE_CHARACTERS"
+              glib:nick="monotone-characters">
+        <doc xml:space="preserve"
+             filename="../src/hb-buffer.h"
+             line="314">Return cluster values grouped into monotone order.</doc>
+      </member>
+      <member name="characters"
+              value="2"
+              c:identifier="HB_BUFFER_CLUSTER_LEVEL_CHARACTERS"
+              glib:nick="characters">
+        <doc xml:space="preserve"
+             filename="../src/hb-buffer.h"
+             line="315">Don't group cluster values.</doc>
+      </member>
+      <member name="default"
+              value="0"
+              c:identifier="HB_BUFFER_CLUSTER_LEVEL_DEFAULT"
+              glib:nick="default">
+        <doc xml:space="preserve"
+             filename="../src/hb-buffer.h"
+             line="316">Default cluster level,
+  equal to @HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES.</doc>
+      </member>
+    </enumeration>
+    <enumeration name="buffer_content_type_t"
+                 glib:type-name="hb_buffer_content_type_t"
+                 glib:get-type="hb_gobject_buffer_content_type_get_type"
+                 c:type="hb_buffer_content_type_t">
+      <member name="invalid"
+              value="0"
+              c:identifier="HB_BUFFER_CONTENT_TYPE_INVALID"
+              glib:nick="invalid">
+        <doc xml:space="preserve"
+             filename="../src/hb-buffer.h"
+             line="204">Initial value for new buffer.</doc>
+      </member>
+      <member name="unicode"
+              value="1"
+              c:identifier="HB_BUFFER_CONTENT_TYPE_UNICODE"
+              glib:nick="unicode">
+        <doc xml:space="preserve"
+             filename="../src/hb-buffer.h"
+             line="205">The buffer contains input characters (before shaping).</doc>
+      </member>
+      <member name="glyphs"
+              value="2"
+              c:identifier="HB_BUFFER_CONTENT_TYPE_GLYPHS"
+              glib:nick="glyphs">
+        <doc xml:space="preserve"
+             filename="../src/hb-buffer.h"
+             line="206">The buffer contains output glyphs (after shaping).</doc>
+      </member>
+    </enumeration>
+    <function name="buffer_create"
+              c:identifier="hb_buffer_create"
+              version="0.9.2">
+      <doc xml:space="preserve"
+           filename="../src/hb-buffer.cc"
+           line="676">Creates a new #hb_buffer_t with all properties to defaults.</doc>
+      <source-position filename="../src/hb-buffer.h" line="179"/>
+      <return-value transfer-ownership="full">
+        <doc xml:space="preserve"
+             filename="../src/hb-buffer.cc"
+             line="681">
+A newly allocated #hb_buffer_t with a reference count of 1. The initial
+reference count should be released with hb_buffer_destroy() when you are done
+using the #hb_buffer_t. This function never returns %NULL. If memory cannot
+be allocated, a special #hb_buffer_t object will be returned on which
+hb_buffer_allocation_successful() returns %false.</doc>
+        <type name="buffer_t" c:type="hb_buffer_t*"/>
+      </return-value>
+    </function>
+    <function name="buffer_deserialize_glyphs"
+              c:identifier="hb_buffer_deserialize_glyphs"
+              version="0.9.7">
+      <source-position filename="../src/hb-buffer.h" line="522"/>
+      <return-value transfer-ownership="none">
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer-serialize.cc"
+               line="411">an #hb_buffer_t buffer.</doc>
+          <type name="buffer_t" c:type="hb_buffer_t*"/>
+        </parameter>
+        <parameter name="buf" transfer-ownership="none">
+          <array length="2" zero-terminated="0" c:type="const char*">
+            <type name="utf8" c:type="char"/>
+          </array>
+        </parameter>
+        <parameter name="buf_len" transfer-ownership="none">
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="end_ptr"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <type name="utf8" c:type="const char**"/>
+        </parameter>
+        <parameter name="font" transfer-ownership="none">
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="buffer_serialize_format_t"
+                c:type="hb_buffer_serialize_format_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_destroy"
+              c:identifier="hb_buffer_destroy"
+              version="0.9.2"
+              introspectable="0">
+      <doc xml:space="preserve"
+           filename="../src/hb-buffer.cc"
+           line="739">Deallocate the @buffer.
+Decreases the reference count on @buffer by one. If the result is zero, then
+@buffer and all associated resources are freed. See hb_buffer_reference().</doc>
+      <source-position filename="../src/hb-buffer.h" line="188"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="741">an #hb_buffer_t.</doc>
+          <type name="buffer_t" c:type="hb_buffer_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_diff" c:identifier="hb_buffer_diff" version="1.5.0">
+      <doc xml:space="preserve"
+           filename="../src/hb-buffer.cc"
+           line="1872">If dottedcircle_glyph is (hb_codepoint_t) -1 then %HB_BUFFER_DIFF_FLAG_DOTTED_CIRCLE_PRESENT
+and %HB_BUFFER_DIFF_FLAG_NOTDEF_PRESENT are never returned.  This should be used by most
+callers if just comparing two buffers is needed.</doc>
+      <source-position filename="../src/hb-buffer.h" line="563"/>
+      <return-value transfer-ownership="none">
+        <type name="buffer_diff_flags_t" c:type="hb_buffer_diff_flags_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="1874">a buffer.</doc>
+          <type name="buffer_t" c:type="hb_buffer_t*"/>
+        </parameter>
+        <parameter name="reference" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="1875">other buffer to compare to.</doc>
+          <type name="buffer_t" c:type="hb_buffer_t*"/>
+        </parameter>
+        <parameter name="dottedcircle_glyph" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="1876">glyph id of U+25CC DOTTED CIRCLE, or (hb_codepont_t) -1.</doc>
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+        <parameter name="position_fuzz" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="1877">allowed absolute difference in position values.</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <bitfield name="buffer_diff_flags_t"
+              glib:type-name="hb_buffer_diff_flags_t"
+              glib:get-type="hb_gobject_buffer_diff_flags_get_type"
+              c:type="hb_buffer_diff_flags_t">
+      <member name="equal"
+              value="0"
+              c:identifier="HB_BUFFER_DIFF_FLAG_EQUAL"
+              glib:nick="equal">
+      </member>
+      <member name="content_type_mismatch"
+              value="1"
+              c:identifier="HB_BUFFER_DIFF_FLAG_CONTENT_TYPE_MISMATCH"
+              glib:nick="content-type-mismatch">
+      </member>
+      <member name="length_mismatch"
+              value="2"
+              c:identifier="HB_BUFFER_DIFF_FLAG_LENGTH_MISMATCH"
+              glib:nick="length-mismatch">
+      </member>
+      <member name="notdef_present"
+              value="4"
+              c:identifier="HB_BUFFER_DIFF_FLAG_NOTDEF_PRESENT"
+              glib:nick="notdef-present">
+      </member>
+      <member name="dotted_circle_present"
+              value="8"
+              c:identifier="HB_BUFFER_DIFF_FLAG_DOTTED_CIRCLE_PRESENT"
+              glib:nick="dotted-circle-present">
+      </member>
+      <member name="codepoint_mismatch"
+              value="16"
+              c:identifier="HB_BUFFER_DIFF_FLAG_CODEPOINT_MISMATCH"
+              glib:nick="codepoint-mismatch">
+      </member>
+      <member name="cluster_mismatch"
+              value="32"
+              c:identifier="HB_BUFFER_DIFF_FLAG_CLUSTER_MISMATCH"
+              glib:nick="cluster-mismatch">
+      </member>
+      <member name="glyph_flags_mismatch"
+              value="64"
+              c:identifier="HB_BUFFER_DIFF_FLAG_GLYPH_FLAGS_MISMATCH"
+              glib:nick="glyph-flags-mismatch">
+      </member>
+      <member name="position_mismatch"
+              value="128"
+              c:identifier="HB_BUFFER_DIFF_FLAG_POSITION_MISMATCH"
+              glib:nick="position-mismatch">
+      </member>
+    </bitfield>
+    <bitfield name="buffer_flags_t"
+              version="0.9.20"
+              glib:type-name="hb_buffer_flags_t"
+              glib:get-type="hb_gobject_buffer_flags_get_type"
+              c:type="hb_buffer_flags_t">
+      <member name="default"
+              value="0"
+              c:identifier="HB_BUFFER_FLAG_DEFAULT"
+              glib:nick="default">
+        <doc xml:space="preserve"
+             filename="../src/hb-buffer.h"
+             line="265">the default buffer flag.</doc>
+      </member>
+      <member name="bot"
+              value="1"
+              c:identifier="HB_BUFFER_FLAG_BOT"
+              glib:nick="bot">
+        <doc xml:space="preserve"
+             filename="../src/hb-buffer.h"
+             line="266">flag indicating that special handling of the beginning
+                     of text paragraph can be applied to this buffer. Should usually
+                     be set, unless you are passing to the buffer only part
+                     of the text without the full context.</doc>
+      </member>
+      <member name="eot"
+              value="2"
+              c:identifier="HB_BUFFER_FLAG_EOT"
+              glib:nick="eot">
+        <doc xml:space="preserve"
+             filename="../src/hb-buffer.h"
+             line="270">flag indicating that special handling of the end of text
+                     paragraph can be applied to this buffer, similar to
+                     @HB_BUFFER_FLAG_BOT.</doc>
+      </member>
+      <member name="preserve_default_ignorables"
+              value="4"
+              c:identifier="HB_BUFFER_FLAG_PRESERVE_DEFAULT_IGNORABLES"
+              glib:nick="preserve-default-ignorables">
+        <doc xml:space="preserve"
+             filename="../src/hb-buffer.h"
+             line="273">flag indication that character with Default_Ignorable
+                     Unicode property should use the corresponding glyph
+                     from the font, instead of hiding them (done by
+                     replacing them with the space glyph and zeroing the
+                     advance width.)  This flag takes precedence over
+                     @HB_BUFFER_FLAG_REMOVE_DEFAULT_IGNORABLES.</doc>
+      </member>
+      <member name="remove_default_ignorables"
+              value="8"
+              c:identifier="HB_BUFFER_FLAG_REMOVE_DEFAULT_IGNORABLES"
+              glib:nick="remove-default-ignorables">
+        <doc xml:space="preserve"
+             filename="../src/hb-buffer.h"
+             line="280">flag indication that character with Default_Ignorable
+                     Unicode property should be removed from glyph string
+                     instead of hiding them (done by replacing them with the
+                     space glyph and zeroing the advance width.)
+                     @HB_BUFFER_FLAG_PRESERVE_DEFAULT_IGNORABLES takes
+                     precedence over this flag. Since: 1.8.0</doc>
+      </member>
+      <member name="do_not_insert_dotted_circle"
+              value="16"
+              c:identifier="HB_BUFFER_FLAG_DO_NOT_INSERT_DOTTED_CIRCLE"
+              glib:nick="do-not-insert-dotted-circle">
+        <doc xml:space="preserve"
+             filename="../src/hb-buffer.h"
+             line="287">flag indicating that a dotted circle should
+                     not be inserted in the rendering of incorrect
+                     character sequences (such at &lt;0905 093E&gt;). Since: 2.4</doc>
+      </member>
+    </bitfield>
+    <function name="buffer_get_cluster_level"
+              c:identifier="hb_buffer_get_cluster_level"
+              version="0.9.42">
+      <source-position filename="../src/hb-buffer.h" line="333"/>
+      <return-value transfer-ownership="none">
+        <type name="buffer_cluster_level_t"
+              c:type="hb_buffer_cluster_level_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="1110">an #hb_buffer_t.</doc>
+          <type name="buffer_t" c:type="hb_buffer_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_get_content_type"
+              c:identifier="hb_buffer_get_content_type"
+              version="0.9.5">
+      <doc xml:space="preserve"
+           filename="../src/hb-buffer.cc"
+           line="826">see hb_buffer_set_content_type().</doc>
+      <source-position filename="../src/hb-buffer.h" line="219"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-buffer.cc"
+             line="832">The type of @buffer contents.</doc>
+        <type name="buffer_content_type_t" c:type="hb_buffer_content_type_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="828">an #hb_buffer_t.</doc>
+          <type name="buffer_t" c:type="hb_buffer_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_get_direction"
+              c:identifier="hb_buffer_get_direction"
+              version="0.9.2">
+      <doc xml:space="preserve"
+           filename="../src/hb-buffer.cc"
+           line="910">See hb_buffer_set_direction()</doc>
+      <source-position filename="../src/hb-buffer.h" line="234"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-buffer.cc"
+             line="916">The direction of the @buffer.</doc>
+        <type name="direction_t" c:type="hb_direction_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="912">an #hb_buffer_t.</doc>
+          <type name="buffer_t" c:type="hb_buffer_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_get_empty"
+              c:identifier="hb_buffer_get_empty"
+              version="0.9.2">
+      <source-position filename="../src/hb-buffer.h" line="182"/>
+      <return-value transfer-ownership="full">
+        <type name="buffer_t" c:type="hb_buffer_t*"/>
+      </return-value>
+    </function>
+    <function name="buffer_get_flags"
+              c:identifier="hb_buffer_get_flags"
+              version="0.9.7">
+      <doc xml:space="preserve"
+           filename="../src/hb-buffer.cc"
+           line="1072">See hb_buffer_set_flags().</doc>
+      <source-position filename="../src/hb-buffer.h" line="308"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-buffer.cc"
+             line="1078">The @buffer flags.</doc>
+        <type name="buffer_flags_t" c:type="hb_buffer_flags_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="1074">an #hb_buffer_t.</doc>
+          <type name="buffer_t" c:type="hb_buffer_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_get_glyph_infos"
+              c:identifier="hb_buffer_get_glyph_infos"
+              version="0.9.2">
+      <doc xml:space="preserve"
+           filename="../src/hb-buffer.cc"
+           line="1356">Returns @buffer glyph information array.  Returned pointer
+is valid as long as @buffer contents are not modified.</doc>
+      <source-position filename="../src/hb-buffer.h" line="443"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-buffer.cc"
+             line="1364">
+The @buffer glyph information array.
+The value valid as long as buffer has not been modified.</doc>
+        <array length="1" zero-terminated="0" c:type="hb_glyph_info_t*">
+          <type name="glyph_info_t" c:type="hb_glyph_info_t"/>
+        </array>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="1358">an #hb_buffer_t.</doc>
+          <type name="buffer_t" c:type="hb_buffer_t*"/>
+        </parameter>
+        <parameter name="length"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="1359">output array length.</doc>
+          <type name="guint" c:type="unsigned int*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_get_glyph_positions"
+              c:identifier="hb_buffer_get_glyph_positions"
+              version="0.9.2">
+      <doc xml:space="preserve"
+           filename="../src/hb-buffer.cc"
+           line="1380">Returns @buffer glyph position array.  Returned pointer
+is valid as long as @buffer contents are not modified.</doc>
+      <source-position filename="../src/hb-buffer.h" line="447"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-buffer.cc"
+             line="1388">
+The @buffer glyph position array.
+The value valid as long as buffer has not been modified.</doc>
+        <array length="1" zero-terminated="0" c:type="hb_glyph_position_t*">
+          <type name="glyph_position_t" c:type="hb_glyph_position_t"/>
+        </array>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="1382">an #hb_buffer_t.</doc>
+          <type name="buffer_t" c:type="hb_buffer_t*"/>
+        </parameter>
+        <parameter name="length"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="1383">output length.</doc>
+          <type name="guint" c:type="unsigned int*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_get_invisible_glyph"
+              c:identifier="hb_buffer_get_invisible_glyph"
+              version="2.0.0">
+      <doc xml:space="preserve"
+           filename="../src/hb-buffer.cc"
+           line="1187">See hb_buffer_set_invisible_glyph().</doc>
+      <source-position filename="../src/hb-buffer.h" line="357"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-buffer.cc"
+             line="1193">The @buffer invisible #hb_codepoint_t.</doc>
+        <type name="codepoint_t" c:type="hb_codepoint_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="1189">an #hb_buffer_t.</doc>
+          <type name="buffer_t" c:type="hb_buffer_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_get_language"
+              c:identifier="hb_buffer_get_language"
+              version="0.9.2">
+      <doc xml:space="preserve"
+           filename="../src/hb-buffer.cc"
+           line="998">See hb_buffer_set_language().</doc>
+      <source-position filename="../src/hb-buffer.h" line="249"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-buffer.cc"
+             line="1004">
+The #hb_language_t of the buffer. Must not be freed by the caller.</doc>
+        <type name="language_t" c:type="hb_language_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="1000">an #hb_buffer_t.</doc>
+          <type name="buffer_t" c:type="hb_buffer_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_get_length"
+              c:identifier="hb_buffer_get_length"
+              version="0.9.2">
+      <doc xml:space="preserve"
+           filename="../src/hb-buffer.cc"
+           line="1338">Returns the number of items in the buffer.</doc>
+      <source-position filename="../src/hb-buffer.h" line="438"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-buffer.cc"
+             line="1344">The @buffer length.
+The value valid as long as buffer has not been modified.</doc>
+        <type name="guint" c:type="unsigned int"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="1340">an #hb_buffer_t.</doc>
+          <type name="buffer_t" c:type="hb_buffer_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_get_replacement_codepoint"
+              c:identifier="hb_buffer_get_replacement_codepoint"
+              version="0.9.31">
+      <doc xml:space="preserve"
+           filename="../src/hb-buffer.cc"
+           line="1147">See hb_buffer_set_replacement_codepoint().</doc>
+      <source-position filename="../src/hb-buffer.h" line="350"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-buffer.cc"
+             line="1153">The @buffer replacement #hb_codepoint_t.</doc>
+        <type name="codepoint_t" c:type="hb_codepoint_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="1149">an #hb_buffer_t.</doc>
+          <type name="buffer_t" c:type="hb_buffer_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_get_script"
+              c:identifier="hb_buffer_get_script"
+              version="0.9.2">
+      <doc xml:space="preserve"
+           filename="../src/hb-buffer.cc"
+           line="954">See hb_buffer_set_script().</doc>
+      <source-position filename="../src/hb-buffer.h" line="241"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-buffer.cc"
+             line="960">The #hb_script_t of the @buffer.</doc>
+        <type name="script_t" c:type="hb_script_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="956">an #hb_buffer_t.</doc>
+          <type name="buffer_t" c:type="hb_buffer_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_get_segment_properties"
+              c:identifier="hb_buffer_get_segment_properties"
+              version="0.9.7">
+      <doc xml:space="preserve"
+           filename="../src/hb-buffer.cc"
+           line="1036">Sets @props to the #hb_segment_properties_t of @buffer.</doc>
+      <source-position filename="../src/hb-buffer.h" line="256"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="1038">an #hb_buffer_t.</doc>
+          <type name="buffer_t" c:type="hb_buffer_t*"/>
+        </parameter>
+        <parameter name="props"
+                   direction="out"
+                   caller-allocates="1"
+                   transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="1039">the output #hb_segment_properties_t.</doc>
+          <type name="segment_properties_t" c:type="hb_segment_properties_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_get_unicode_funcs"
+              c:identifier="hb_buffer_get_unicode_funcs"
+              version="0.9.2">
+      <source-position filename="../src/hb-buffer.h" line="227"/>
+      <return-value transfer-ownership="full">
+        <type name="unicode_funcs_t" c:type="hb_unicode_funcs_t*"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="870">an #hb_buffer_t.</doc>
+          <type name="buffer_t" c:type="hb_buffer_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_get_user_data"
+              c:identifier="hb_buffer_get_user_data"
+              version="0.9.2"
+              introspectable="0">
+      <source-position filename="../src/hb-buffer.h" line="198"/>
+      <return-value transfer-ownership="none" nullable="1">
+        <type name="gpointer" c:type="void*"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="792">an #hb_buffer_t.</doc>
+          <type name="buffer_t" c:type="hb_buffer_t*"/>
+        </parameter>
+        <parameter name="key" transfer-ownership="none">
+          <type name="user_data_key_t" c:type="hb_user_data_key_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_guess_segment_properties"
+              c:identifier="hb_buffer_guess_segment_properties"
+              version="0.9.7">
+      <doc xml:space="preserve"
+           filename="../src/hb-buffer.cc"
+           line="1471">Sets unset buffer segment properties based on buffer Unicode
+contents.  If buffer is not empty, it must have content type
+%HB_BUFFER_CONTENT_TYPE_UNICODE.
+
+If buffer script is not set (ie. is %HB_SCRIPT_INVALID), it
+will be set to the Unicode script of the first character in
+the buffer that has a script other than %HB_SCRIPT_COMMON,
+%HB_SCRIPT_INHERITED, and %HB_SCRIPT_UNKNOWN.
+
+Next, if buffer direction is not set (ie. is %HB_DIRECTION_INVALID),
+it will be set to the natural horizontal direction of the
+buffer script as returned by hb_script_get_horizontal_direction().
+If hb_script_get_horizontal_direction() returns %HB_DIRECTION_INVALID,
+then %HB_DIRECTION_LTR is used.
+
+Finally, if buffer language is not set (ie. is %HB_LANGUAGE_INVALID),
+it will be set to the process's default language as returned by
+hb_language_get_default().  This may change in the future by
+taking buffer script into consideration when choosing a language.
+Note that hb_language_get_default() is NOT threadsafe the first time
+it is called.  See documentation for that function for details.</doc>
+      <source-position filename="../src/hb-buffer.h" line="260"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="1473">an #hb_buffer_t.</doc>
+          <type name="buffer_t" c:type="hb_buffer_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <callback name="buffer_message_func_t" c:type="hb_buffer_message_func_t">
+      <source-position filename="../src/hb-buffer.h" line="573"/>
+      <return-value transfer-ownership="none">
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="buffer_t" c:type="hb_buffer_t*"/>
+        </parameter>
+        <parameter name="font" transfer-ownership="none">
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+        <parameter name="message" transfer-ownership="none">
+          <type name="utf8" c:type="const char*"/>
+        </parameter>
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1"
+                   closure="3">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <function name="buffer_normalize_glyphs"
+              c:identifier="hb_buffer_normalize_glyphs"
+              version="0.9.2">
+      <doc xml:space="preserve"
+           filename="../src/hb-buffer.cc"
+           line="1822">Reorders a glyph buffer to have canonical in-cluster glyph order / position.
+The resulting clusters should behave identical to pre-reordering clusters.
+
+&lt;note&gt;This has nothing to do with Unicode normalization.&lt;/note&gt;</doc>
+      <source-position filename="../src/hb-buffer.h" line="452"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="1824">an #hb_buffer_t.</doc>
+          <type name="buffer_t" c:type="hb_buffer_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_pre_allocate"
+              c:identifier="hb_buffer_pre_allocate"
+              version="0.9.2">
+      <doc xml:space="preserve"
+           filename="../src/hb-buffer.cc"
+           line="1235">Pre allocates memory for @buffer to fit at least @size number of items.</doc>
+      <source-position filename="../src/hb-buffer.h" line="367"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-buffer.cc"
+             line="1242">%true if @buffer memory allocation succeeded, %false otherwise.</doc>
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="1237">an #hb_buffer_t.</doc>
+          <type name="buffer_t" c:type="hb_buffer_t*"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="1238">number of items to pre allocate.</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_reference"
+              c:identifier="hb_buffer_reference"
+              version="0.9.2"
+              introspectable="0">
+      <doc xml:space="preserve"
+           filename="../src/hb-buffer.cc"
+           line="721">Increases the reference count on @buffer by one. This prevents @buffer from
+being destroyed until a matching call to hb_buffer_destroy() is made.</doc>
+      <source-position filename="../src/hb-buffer.h" line="185"/>
+      <return-value transfer-ownership="full">
+        <doc xml:space="preserve"
+             filename="../src/hb-buffer.cc"
+             line="728">
+The referenced #hb_buffer_t.</doc>
+        <type name="buffer_t" c:type="hb_buffer_t*"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="723">an #hb_buffer_t.</doc>
+          <type name="buffer_t" c:type="hb_buffer_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_reset"
+              c:identifier="hb_buffer_reset"
+              version="0.9.2">
+      <doc xml:space="preserve"
+           filename="../src/hb-buffer.cc"
+           line="1205">Resets the buffer to its initial status, as if it was just newly created
+with hb_buffer_create().</doc>
+      <source-position filename="../src/hb-buffer.h" line="361"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="1207">an #hb_buffer_t.</doc>
+          <type name="buffer_t" c:type="hb_buffer_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_reverse"
+              c:identifier="hb_buffer_reverse"
+              version="0.9.2">
+      <doc xml:space="preserve"
+           filename="../src/hb-buffer.cc"
+           line="1424">Reverses buffer contents.</doc>
+      <source-position filename="../src/hb-buffer.h" line="375"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="1426">an #hb_buffer_t.</doc>
+          <type name="buffer_t" c:type="hb_buffer_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_reverse_clusters"
+              c:identifier="hb_buffer_reverse_clusters"
+              version="0.9.2">
+      <doc xml:space="preserve"
+           filename="../src/hb-buffer.cc"
+           line="1455">Reverses buffer clusters.  That is, the buffer contents are
+reversed, then each cluster (consecutive items having the
+same cluster number) are reversed again.</doc>
+      <source-position filename="../src/hb-buffer.h" line="382"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="1457">an #hb_buffer_t.</doc>
+          <type name="buffer_t" c:type="hb_buffer_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_reverse_range"
+              c:identifier="hb_buffer_reverse_range"
+              version="0.9.41">
+      <doc xml:space="preserve"
+           filename="../src/hb-buffer.cc"
+           line="1438">Reverses buffer contents between start to end.</doc>
+      <source-position filename="../src/hb-buffer.h" line="378"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="1440">an #hb_buffer_t.</doc>
+          <type name="buffer_t" c:type="hb_buffer_t*"/>
+        </parameter>
+        <parameter name="start" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="1441">start index.</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="end" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="1442">end index.</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <bitfield name="buffer_serialize_flags_t"
+              version="0.9.20"
+              glib:type-name="hb_buffer_serialize_flags_t"
+              glib:get-type="hb_gobject_buffer_serialize_flags_get_type"
+              c:type="hb_buffer_serialize_flags_t">
+      <doc xml:space="preserve"
+           filename="../src/hb-buffer.h"
+           line="459">Flags that control what glyph information are serialized in hb_buffer_serialize_glyphs().</doc>
+      <member name="default"
+              value="0"
+              c:identifier="HB_BUFFER_SERIALIZE_FLAG_DEFAULT"
+              glib:nick="default">
+        <doc xml:space="preserve"
+             filename="../src/hb-buffer.h"
+             line="461">serialize glyph names, clusters and positions.</doc>
+      </member>
+      <member name="no_clusters"
+              value="1"
+              c:identifier="HB_BUFFER_SERIALIZE_FLAG_NO_CLUSTERS"
+              glib:nick="no-clusters">
+        <doc xml:space="preserve"
+             filename="../src/hb-buffer.h"
+             line="462">do not serialize glyph cluster.</doc>
+      </member>
+      <member name="no_positions"
+              value="2"
+              c:identifier="HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS"
+              glib:nick="no-positions">
+        <doc xml:space="preserve"
+             filename="../src/hb-buffer.h"
+             line="463">do not serialize glyph position information.</doc>
+      </member>
+      <member name="no_glyph_names"
+              value="4"
+              c:identifier="HB_BUFFER_SERIALIZE_FLAG_NO_GLYPH_NAMES"
+              glib:nick="no-glyph-names">
+        <doc xml:space="preserve"
+             filename="../src/hb-buffer.h"
+             line="464">do no serialize glyph name.</doc>
+      </member>
+      <member name="glyph_extents"
+              value="8"
+              c:identifier="HB_BUFFER_SERIALIZE_FLAG_GLYPH_EXTENTS"
+              glib:nick="glyph-extents">
+        <doc xml:space="preserve"
+             filename="../src/hb-buffer.h"
+             line="465">serialize glyph extents.</doc>
+      </member>
+      <member name="glyph_flags"
+              value="16"
+              c:identifier="HB_BUFFER_SERIALIZE_FLAG_GLYPH_FLAGS"
+              glib:nick="glyph-flags">
+        <doc xml:space="preserve"
+             filename="../src/hb-buffer.h"
+             line="466">serialize glyph flags. Since: 1.5.0</doc>
+      </member>
+      <member name="no_advances"
+              value="32"
+              c:identifier="HB_BUFFER_SERIALIZE_FLAG_NO_ADVANCES"
+              glib:nick="no-advances">
+        <doc xml:space="preserve"
+             filename="../src/hb-buffer.h"
+             line="467">do not serialize glyph advances,
+ glyph offsets will reflect absolute glyph positions. Since: 1.8.0</doc>
+      </member>
+    </bitfield>
+    <function name="buffer_serialize_format_from_string"
+              c:identifier="hb_buffer_serialize_format_from_string"
+              version="0.9.7">
+      <doc xml:space="preserve"
+           filename="../src/hb-buffer-serialize.cc"
+           line="56">Parses a string into an #hb_buffer_serialize_format_t. Does not check if
+@str is a valid buffer serialization format, use
+hb_buffer_serialize_list_formats() to get the list of supported formats.</doc>
+      <source-position filename="../src/hb-buffer.h" line="502"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-buffer-serialize.cc"
+             line="65">The parsed #hb_buffer_serialize_format_t.</doc>
+        <type name="buffer_serialize_format_t"
+              c:type="hb_buffer_serialize_format_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="str" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer-serialize.cc"
+               line="58">a string to parse</doc>
+          <array length="1" zero-terminated="0" c:type="const char*">
+            <type name="guint8"/>
+          </array>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer-serialize.cc"
+               line="59">length of @str, or -1 if string is %NULL terminated</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <enumeration name="buffer_serialize_format_t"
+                 version="0.9.2"
+                 glib:type-name="hb_buffer_serialize_format_t"
+                 glib:get-type="hb_gobject_buffer_serialize_format_get_type"
+                 c:type="hb_buffer_serialize_format_t">
+      <doc xml:space="preserve"
+           filename="../src/hb-buffer.h"
+           line="484">The buffer serialization and de-serialization format used in
+hb_buffer_serialize_glyphs() and hb_buffer_deserialize_glyphs().</doc>
+      <member name="text"
+              value="1413830740"
+              c:identifier="HB_BUFFER_SERIALIZE_FORMAT_TEXT"
+              glib:nick="text">
+        <doc xml:space="preserve"
+             filename="../src/hb-buffer.h"
+             line="486">a human-readable, plain text format.</doc>
+      </member>
+      <member name="json"
+              value="1246973774"
+              c:identifier="HB_BUFFER_SERIALIZE_FORMAT_JSON"
+              glib:nick="json">
+        <doc xml:space="preserve"
+             filename="../src/hb-buffer.h"
+             line="487">a machine-readable JSON format.</doc>
+      </member>
+      <member name="invalid"
+              value="0"
+              c:identifier="HB_BUFFER_SERIALIZE_FORMAT_INVALID"
+              glib:nick="invalid">
+        <doc xml:space="preserve"
+             filename="../src/hb-buffer.h"
+             line="488">invalid format.</doc>
+      </member>
+    </enumeration>
+    <function name="buffer_serialize_format_to_string"
+              c:identifier="hb_buffer_serialize_format_to_string"
+              version="0.9.7">
+      <doc xml:space="preserve"
+           filename="../src/hb-buffer-serialize.cc"
+           line="77">Converts @format to the string corresponding it, or %NULL if it is not a valid
+#hb_buffer_serialize_format_t.</doc>
+      <source-position filename="../src/hb-buffer.h" line="505"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-buffer-serialize.cc"
+             line="84">
+A %NULL terminated string corresponding to @format. Should not be freed.</doc>
+        <type name="utf8" c:type="const char*"/>
+      </return-value>
+      <parameters>
+        <parameter name="format" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer-serialize.cc"
+               line="79">an #hb_buffer_serialize_format_t to convert.</doc>
+          <type name="buffer_serialize_format_t"
+                c:type="hb_buffer_serialize_format_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_serialize_glyphs"
+              c:identifier="hb_buffer_serialize_glyphs"
+              version="0.9.7">
+      <doc xml:space="preserve"
+           filename="../src/hb-buffer-serialize.cc"
+           line="285">Serializes @buffer into a textual representation of its glyph content,
+useful for showing the contents of the buffer, for example during debugging.
+There are currently two supported serialization formats:
+
+## text
+A human-readable, plain text format.
+The serialized glyphs will look something like:
+
+```
+[uni0651=0@518,0+0|uni0628=0+1897]
+```
+- The serialized glyphs are delimited with `[` and `]`.
+- Glyphs are separated with `|`
+- Each glyph starts with glyph name, or glyph index if
+  #HB_BUFFER_SERIALIZE_FLAG_NO_GLYPH_NAMES flag is set. Then,
+  - If #HB_BUFFER_SERIALIZE_FLAG_NO_CLUSTERS is not set, `=` then #hb_glyph_info_t.cluster.
+  - If #HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS is not set, the #hb_glyph_position_t in the format:
+    - If both #hb_glyph_position_t.x_offset and #hb_glyph_position_t.y_offset are not 0, `@x_offset,y_offset`. Then,
+    - `+x_advance`, then `,y_advance` if #hb_glyph_position_t.y_advance is not 0. Then,
+  - If #HB_BUFFER_SERIALIZE_FLAG_GLYPH_EXTENTS is set, the
+    #hb_glyph_extents_t in the format
+    `&amp;lt;x_bearing,y_bearing,width,height&amp;gt;`
+
+## json
+TODO.</doc>
+      <source-position filename="../src/hb-buffer.h" line="511"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-buffer-serialize.cc"
+             line="326">The number of serialized items.</doc>
+        <type name="guint" c:type="unsigned int"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer-serialize.cc"
+               line="287">an #hb_buffer_t buffer.</doc>
+          <type name="buffer_t" c:type="hb_buffer_t*"/>
+        </parameter>
+        <parameter name="start" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer-serialize.cc"
+               line="288">the first item in @buffer to serialize.</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="end" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer-serialize.cc"
+               line="289">the last item in @buffer to serialize.</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="buf"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer-serialize.cc"
+               line="290">output string to
+      write serialized buffer into.</doc>
+          <array length="4" zero-terminated="0" c:type="char*">
+            <type name="guint8"/>
+          </array>
+        </parameter>
+        <parameter name="buf_size"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer-serialize.cc"
+               line="292">the size of @buf.</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="buf_consumed"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   optional="1"
+                   allow-none="1">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer-serialize.cc"
+               line="293">if not %NULL, will be set to the number of byes written into @buf.</doc>
+          <type name="guint" c:type="unsigned int*"/>
+        </parameter>
+        <parameter name="font"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer-serialize.cc"
+               line="294">the #hb_font_t used to shape this buffer, needed to
+       read glyph names and extents. If %NULL, and empty font will be used.</doc>
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer-serialize.cc"
+               line="296">the #hb_buffer_serialize_format_t to use for formatting the output.</doc>
+          <type name="buffer_serialize_format_t"
+                c:type="hb_buffer_serialize_format_t"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer-serialize.cc"
+               line="297">the #hb_buffer_serialize_flags_t that control what glyph properties
+        to serialize.</doc>
+          <type name="buffer_serialize_flags_t"
+                c:type="hb_buffer_serialize_flags_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_serialize_list_formats"
+              c:identifier="hb_buffer_serialize_list_formats"
+              version="0.9.7">
+      <doc xml:space="preserve"
+           filename="../src/hb-buffer-serialize.cc"
+           line="40">Returns a list of supported buffer serialization formats.</doc>
+      <source-position filename="../src/hb-buffer.h" line="508"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-buffer-serialize.cc"
+             line="45">
+A string array of buffer serialization formats. Should not be freed.</doc>
+        <array c:type="const char**">
+          <type name="utf8"/>
+        </array>
+      </return-value>
+    </function>
+    <function name="buffer_set_cluster_level"
+              c:identifier="hb_buffer_set_cluster_level"
+              version="0.9.42">
+      <source-position filename="../src/hb-buffer.h" line="329"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="1091">an #hb_buffer_t.</doc>
+          <type name="buffer_t" c:type="hb_buffer_t*"/>
+        </parameter>
+        <parameter name="cluster_level" transfer-ownership="none">
+          <type name="buffer_cluster_level_t"
+                c:type="hb_buffer_cluster_level_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_set_content_type"
+              c:identifier="hb_buffer_set_content_type"
+              version="0.9.5">
+      <doc xml:space="preserve"
+           filename="../src/hb-buffer.cc"
+           line="809">Sets the type of @buffer contents, buffers are either empty, contain
+characters (before shaping) or glyphs (the result of shaping).</doc>
+      <source-position filename="../src/hb-buffer.h" line="215"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="811">an #hb_buffer_t.</doc>
+          <type name="buffer_t" c:type="hb_buffer_t*"/>
+        </parameter>
+        <parameter name="content_type" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="812">the type of buffer contents to set</doc>
+          <type name="buffer_content_type_t"
+                c:type="hb_buffer_content_type_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_set_direction"
+              c:identifier="hb_buffer_set_direction"
+              version="0.9.2">
+      <doc xml:space="preserve"
+           filename="../src/hb-buffer.cc"
+           line="884">Set the text flow direction of the buffer. No shaping can happen without
+setting @buffer direction, and it controls the visual direction for the
+output glyphs; for RTL direction the glyphs will be reversed. Many layout
+features depend on the proper setting of the direction, for example,
+reversing RTL text before shaping, then shaping with LTR direction is not
+the same as keeping the text in logical order and shaping with RTL
+direction.</doc>
+      <source-position filename="../src/hb-buffer.h" line="230"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="886">an #hb_buffer_t.</doc>
+          <type name="buffer_t" c:type="hb_buffer_t*"/>
+        </parameter>
+        <parameter name="direction" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="887">the #hb_direction_t of the @buffer</doc>
+          <type name="direction_t" c:type="hb_direction_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_set_flags"
+              c:identifier="hb_buffer_set_flags"
+              version="0.9.7">
+      <doc xml:space="preserve"
+           filename="../src/hb-buffer.cc"
+           line="1053">Sets @buffer flags to @flags. See #hb_buffer_flags_t.</doc>
+      <source-position filename="../src/hb-buffer.h" line="304"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="1055">an #hb_buffer_t.</doc>
+          <type name="buffer_t" c:type="hb_buffer_t*"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="1056">the buffer flags to set.</doc>
+          <type name="buffer_flags_t" c:type="hb_buffer_flags_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_set_invisible_glyph"
+              c:identifier="hb_buffer_set_invisible_glyph"
+              version="2.0.0">
+      <doc xml:space="preserve"
+           filename="../src/hb-buffer.cc"
+           line="1165">Sets the #hb_codepoint_t that replaces invisible characters in
+the shaping result.  If set to zero (default), the glyph for the
+U+0020 SPACE character is used.  Otherwise, this value is used
+verbatim.</doc>
+      <source-position filename="../src/hb-buffer.h" line="353"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="1167">an #hb_buffer_t.</doc>
+          <type name="buffer_t" c:type="hb_buffer_t*"/>
+        </parameter>
+        <parameter name="invisible" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="1168">the invisible #hb_codepoint_t</doc>
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_set_language"
+              c:identifier="hb_buffer_set_language"
+              version="0.9.2">
+      <doc xml:space="preserve"
+           filename="../src/hb-buffer.cc"
+           line="971">Sets the language of @buffer to @language.
+
+Languages are crucial for selecting which OpenType feature to apply to the
+buffer which can result in applying language-specific behaviour. Languages
+are orthogonal to the scripts, and though they are related, they are
+different concepts and should not be confused with each other.
+
+Use hb_language_from_string() to convert from BCP 47 language tags to
+#hb_language_t.</doc>
+      <source-position filename="../src/hb-buffer.h" line="244"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="973">an #hb_buffer_t.</doc>
+          <type name="buffer_t" c:type="hb_buffer_t*"/>
+        </parameter>
+        <parameter name="language" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="974">an hb_language_t to set.</doc>
+          <type name="language_t" c:type="hb_language_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_set_length"
+              c:identifier="hb_buffer_set_length"
+              version="0.9.2">
+      <doc xml:space="preserve"
+           filename="../src/hb-buffer.cc"
+           line="1296">Similar to hb_buffer_pre_allocate(), but clears any new items added at the
+end.</doc>
+      <source-position filename="../src/hb-buffer.h" line="434"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-buffer.cc"
+             line="1304">%true if @buffer memory allocation succeeded, %false otherwise.</doc>
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="1298">an #hb_buffer_t.</doc>
+          <type name="buffer_t" c:type="hb_buffer_t*"/>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="1299">the new length of @buffer.</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_set_message_func"
+              c:identifier="hb_buffer_set_message_func"
+              version="1.1.3">
+      <source-position filename="../src/hb-buffer.h" line="579"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="1970">an #hb_buffer_t.</doc>
+          <type name="buffer_t" c:type="hb_buffer_t*"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="2"
+                   destroy="3">
+          <type name="buffer_message_func_t"
+                c:type="hb_buffer_message_func_t"/>
+        </parameter>
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+        <parameter name="destroy" transfer-ownership="none" scope="notified">
+          <type name="destroy_func_t" c:type="hb_destroy_func_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_set_replacement_codepoint"
+              c:identifier="hb_buffer_set_replacement_codepoint"
+              version="0.9.31">
+      <doc xml:space="preserve"
+           filename="../src/hb-buffer.cc"
+           line="1125">Sets the #hb_codepoint_t that replaces invalid entries for a given encoding
+when adding text to @buffer.
+
+Default is %HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT.</doc>
+      <source-position filename="../src/hb-buffer.h" line="346"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="1127">an #hb_buffer_t.</doc>
+          <type name="buffer_t" c:type="hb_buffer_t*"/>
+        </parameter>
+        <parameter name="replacement" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="1128">the replacement #hb_codepoint_t</doc>
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_set_script"
+              c:identifier="hb_buffer_set_script"
+              version="0.9.2">
+      <doc xml:space="preserve"
+           filename="../src/hb-buffer.cc"
+           line="927">Sets the script of @buffer to @script.
+
+Script is crucial for choosing the proper shaping behaviour for scripts that
+require it (e.g. Arabic) and the which OpenType features defined in the font
+to be applied.
+
+You can pass one of the predefined #hb_script_t values, or use
+hb_script_from_string() or hb_script_from_iso15924_tag() to get the
+corresponding script from an ISO 15924 script tag.</doc>
+      <source-position filename="../src/hb-buffer.h" line="237"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="929">an #hb_buffer_t.</doc>
+          <type name="buffer_t" c:type="hb_buffer_t*"/>
+        </parameter>
+        <parameter name="script" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="930">an #hb_script_t to set.</doc>
+          <type name="script_t" c:type="hb_script_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_set_segment_properties"
+              c:identifier="hb_buffer_set_segment_properties"
+              version="0.9.7">
+      <doc xml:space="preserve"
+           filename="../src/hb-buffer.cc"
+           line="1015">Sets the segment properties of the buffer, a shortcut for calling
+hb_buffer_set_direction(), hb_buffer_set_script() and
+hb_buffer_set_language() individually.</doc>
+      <source-position filename="../src/hb-buffer.h" line="252"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="1017">an #hb_buffer_t.</doc>
+          <type name="buffer_t" c:type="hb_buffer_t*"/>
+        </parameter>
+        <parameter name="props" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="1018">an #hb_segment_properties_t to use.</doc>
+          <type name="segment_properties_t"
+                c:type="const hb_segment_properties_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_set_unicode_funcs"
+              c:identifier="hb_buffer_set_unicode_funcs"
+              version="0.9.2">
+      <source-position filename="../src/hb-buffer.h" line="223"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="846">an #hb_buffer_t.</doc>
+          <type name="buffer_t" c:type="hb_buffer_t*"/>
+        </parameter>
+        <parameter name="unicode_funcs" transfer-ownership="none">
+          <type name="unicode_funcs_t" c:type="hb_unicode_funcs_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_set_user_data"
+              c:identifier="hb_buffer_set_user_data"
+              version="0.9.2"
+              introspectable="0">
+      <source-position filename="../src/hb-buffer.h" line="191"/>
+      <return-value transfer-ownership="none">
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="768">an #hb_buffer_t.</doc>
+          <type name="buffer_t" c:type="hb_buffer_t*"/>
+        </parameter>
+        <parameter name="key" transfer-ownership="none">
+          <type name="user_data_key_t" c:type="hb_user_data_key_t*"/>
+        </parameter>
+        <parameter name="data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+        <parameter name="destroy" transfer-ownership="none">
+          <type name="destroy_func_t" c:type="hb_destroy_func_t"/>
+        </parameter>
+        <parameter name="replace" transfer-ownership="none">
+          <type name="bool_t" c:type="hb_bool_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <record name="buffer_t"
+            c:type="hb_buffer_t"
+            glib:type-name="hb_buffer_t"
+            glib:get-type="hb_gobject_buffer_get_type"
+            c:symbol-prefix="gobject_buffer">
+      <doc xml:space="preserve"
+           filename="../src/hb-buffer.h"
+           line="169">The main structure holding the input text and its properties before shaping,
+and output glyphs and their information after shaping.</doc>
+      <source-position filename="../src/hb-buffer.h" line="176"/>
+    </record>
+    <function name="color_get_alpha"
+              c:identifier="hb_color_get_alpha"
+              version="2.1.0">
+      <doc xml:space="preserve"
+           filename="../src/hb-common.cc"
+           line="1034">color: a #hb_color_t we are interested in its channels.</doc>
+      <source-position filename="../src/hb-common.h" line="496"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-common.cc"
+             line="1038">Alpha channel value of the given color</doc>
+        <type name="guint8" c:type="uint8_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="color" transfer-ownership="none">
+          <type name="color_t" c:type="hb_color_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="color_get_blue"
+              c:identifier="hb_color_get_blue"
+              version="2.1.0">
+      <doc xml:space="preserve"
+           filename="../src/hb-common.cc"
+           line="1076">color: a #hb_color_t we are interested in its channels.</doc>
+      <source-position filename="../src/hb-common.h" line="508"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-common.cc"
+             line="1080">Blue channel value of the given color</doc>
+        <type name="guint8" c:type="uint8_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="color" transfer-ownership="none">
+          <type name="color_t" c:type="hb_color_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="color_get_green"
+              c:identifier="hb_color_get_green"
+              version="2.1.0">
+      <doc xml:space="preserve"
+           filename="../src/hb-common.cc"
+           line="1062">color: a #hb_color_t we are interested in its channels.</doc>
+      <source-position filename="../src/hb-common.h" line="504"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-common.cc"
+             line="1066">Green channel value of the given color</doc>
+        <type name="guint8" c:type="uint8_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="color" transfer-ownership="none">
+          <type name="color_t" c:type="hb_color_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="color_get_red"
+              c:identifier="hb_color_get_red"
+              version="2.1.0">
+      <doc xml:space="preserve"
+           filename="../src/hb-common.cc"
+           line="1048">color: a #hb_color_t we are interested in its channels.</doc>
+      <source-position filename="../src/hb-common.h" line="500"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-common.cc"
+             line="1052">Red channel value of the given color</doc>
+        <type name="guint8" c:type="uint8_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="color" transfer-ownership="none">
+          <type name="color_t" c:type="hb_color_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <callback name="destroy_func_t" c:type="hb_destroy_func_t">
+      <source-position filename="../src/hb-common.h" line="418"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1"
+                   closure="0">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <function name="direction_from_string"
+              c:identifier="hb_direction_from_string"
+              version="0.9.2">
+      <source-position filename="../src/hb-common.h" line="146"/>
+      <return-value transfer-ownership="none">
+        <type name="direction_t" c:type="hb_direction_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="str" transfer-ownership="none">
+          <array length="1" zero-terminated="0" c:type="const char*">
+            <type name="guint8"/>
+          </array>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="gint" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <enumeration name="direction_t"
+                 glib:type-name="hb_direction_t"
+                 glib:get-type="hb_gobject_direction_get_type"
+                 c:type="hb_direction_t">
+      <member name="invalid"
+              value="0"
+              c:identifier="HB_DIRECTION_INVALID"
+              glib:nick="invalid">
+        <doc xml:space="preserve"
+             filename="../src/hb-common.h"
+             line="130">Initial, unset direction.</doc>
+      </member>
+      <member name="ltr"
+              value="4"
+              c:identifier="HB_DIRECTION_LTR"
+              glib:nick="ltr">
+        <doc xml:space="preserve"
+             filename="../src/hb-common.h"
+             line="131">Text is set horizontally from left to right.</doc>
+      </member>
+      <member name="rtl"
+              value="5"
+              c:identifier="HB_DIRECTION_RTL"
+              glib:nick="rtl">
+        <doc xml:space="preserve"
+             filename="../src/hb-common.h"
+             line="132">Text is set horizontally from right to left.</doc>
+      </member>
+      <member name="ttb"
+              value="6"
+              c:identifier="HB_DIRECTION_TTB"
+              glib:nick="ttb">
+        <doc xml:space="preserve"
+             filename="../src/hb-common.h"
+             line="133">Text is set vertically from top to bottom.</doc>
+      </member>
+      <member name="btt"
+              value="7"
+              c:identifier="HB_DIRECTION_BTT"
+              glib:nick="btt">
+        <doc xml:space="preserve"
+             filename="../src/hb-common.h"
+             line="134">Text is set vertically from bottom to top.</doc>
+      </member>
+    </enumeration>
+    <function name="direction_to_string"
+              c:identifier="hb_direction_to_string"
+              version="0.9.2">
+      <source-position filename="../src/hb-common.h" line="149"/>
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="const char*"/>
+      </return-value>
+      <parameters>
+        <parameter name="direction" transfer-ownership="none">
+          <type name="direction_t" c:type="hb_direction_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="face_builder_add_table"
+              c:identifier="hb_face_builder_add_table"
+              version="1.9.0">
+      <doc xml:space="preserve"
+           filename="../src/hb-face.cc"
+           line="709">Add table for @tag with data provided by @blob to the face.  @face must
+be created using hb_face_builder_create().</doc>
+      <source-position filename="../src/hb-face.h" line="151"/>
+      <return-value transfer-ownership="none">
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+        <parameter name="tag" transfer-ownership="none">
+          <type name="tag_t" c:type="hb_tag_t"/>
+        </parameter>
+        <parameter name="blob" transfer-ownership="none">
+          <type name="blob_t" c:type="hb_blob_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="face_builder_create"
+              c:identifier="hb_face_builder_create"
+              version="1.9.0">
+      <doc xml:space="preserve"
+           filename="../src/hb-face.cc"
+           line="687">Creates a #hb_face_t that can be used with hb_face_builder_add_table().
+After tables are added to the face, it can be compiled to a binary
+font file by calling hb_face_reference_blob().</doc>
+      <source-position filename="../src/hb-face.h" line="148"/>
+      <return-value transfer-ownership="full">
+        <doc xml:space="preserve"
+             filename="../src/hb-face.cc"
+             line="694">New face.</doc>
+        <type name="face_t" c:type="hb_face_t*"/>
+      </return-value>
+    </function>
+    <function name="face_collect_unicodes"
+              c:identifier="hb_face_collect_unicodes"
+              version="1.9.0">
+      <source-position filename="../src/hb-face.h" line="130"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-face.cc"
+               line="545">font face.</doc>
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+        <parameter name="out" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-face.cc"
+               line="546">set to add Unicode characters covered by @face to.</doc>
+          <type name="set_t" c:type="hb_set_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="face_collect_variation_selectors"
+              c:identifier="hb_face_collect_variation_selectors"
+              version="1.9.0">
+      <source-position filename="../src/hb-face.h" line="134"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-face.cc"
+               line="558">font face.</doc>
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+        <parameter name="out" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-face.cc"
+               line="559">set to add Variation Selector characters covered by @face to.</doc>
+          <type name="set_t" c:type="hb_set_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="face_collect_variation_unicodes"
+              c:identifier="hb_face_collect_variation_unicodes"
+              version="1.9.0">
+      <source-position filename="../src/hb-face.h" line="138"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-face.cc"
+               line="573">font face.</doc>
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+        <parameter name="variation_selector" transfer-ownership="none">
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+        <parameter name="out" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-face.cc"
+               line="574">set to add Unicode characters for @variation_selector covered by @face to.</doc>
+          <type name="set_t" c:type="hb_set_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="face_count" c:identifier="hb_face_count" version="1.7.7">
+      <doc xml:space="preserve"
+           filename="../src/hb-face.cc"
+           line="51">Get number of faces in a blob.</doc>
+      <source-position filename="../src/hb-face.h" line="42"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-face.cc"
+             line="57">Number of faces in @blob</doc>
+        <type name="guint" c:type="unsigned int"/>
+      </return-value>
+      <parameters>
+        <parameter name="blob" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-face.cc"
+               line="53">a blob.</doc>
+          <type name="blob_t" c:type="hb_blob_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="face_create" c:identifier="hb_face_create" version="0.9.2">
+      <source-position filename="../src/hb-face.h" line="52"/>
+      <return-value transfer-ownership="full">
+        <type name="face_t" c:type="hb_face_t*"/>
+      </return-value>
+      <parameters>
+        <parameter name="blob" transfer-ownership="none">
+          <type name="blob_t" c:type="hb_blob_t*"/>
+        </parameter>
+        <parameter name="index" transfer-ownership="none">
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="face_create_for_tables"
+              c:identifier="hb_face_create_for_tables"
+              version="0.9.2">
+      <source-position filename="../src/hb-face.h" line="59"/>
+      <return-value transfer-ownership="full">
+        <type name="face_t" c:type="hb_face_t*"/>
+      </return-value>
+      <parameters>
+        <parameter name="reference_table_func"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="1"
+                   destroy="2">
+          <type name="reference_table_func_t"
+                c:type="hb_reference_table_func_t"/>
+        </parameter>
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+        <parameter name="destroy" transfer-ownership="none" scope="notified">
+          <type name="destroy_func_t" c:type="hb_destroy_func_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="face_destroy"
+              c:identifier="hb_face_destroy"
+              version="0.9.2"
+              introspectable="0">
+      <source-position filename="../src/hb-face.h" line="70"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-face.cc"
+               line="256">a face.</doc>
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="face_get_empty"
+              c:identifier="hb_face_get_empty"
+              version="0.9.2">
+      <source-position filename="../src/hb-face.h" line="64"/>
+      <return-value transfer-ownership="full">
+        <type name="face_t" c:type="hb_face_t*"/>
+      </return-value>
+    </function>
+    <function name="face_get_glyph_count"
+              c:identifier="hb_face_get_glyph_count"
+              version="0.9.7">
+      <source-position filename="../src/hb-face.h" line="116"/>
+      <return-value transfer-ownership="none">
+        <type name="guint" c:type="unsigned int"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-face.cc"
+               line="488">a face.</doc>
+          <type name="face_t" c:type="const hb_face_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="face_get_index"
+              c:identifier="hb_face_get_index"
+              version="0.9.2">
+      <source-position filename="../src/hb-face.h" line="102"/>
+      <return-value transfer-ownership="none">
+        <type name="guint" c:type="unsigned int"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-face.cc"
+               line="418">a face.</doc>
+          <type name="face_t" c:type="const hb_face_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="face_get_table_tags"
+              c:identifier="hb_face_get_table_tags"
+              version="1.6.0">
+      <doc xml:space="preserve"
+           filename="../src/hb-face.cc"
+           line="502">Retrieves table tags for a face, if possible.</doc>
+      <source-position filename="../src/hb-face.h" line="119"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-face.cc"
+             line="511">total number of tables, or 0 if not possible to list.</doc>
+        <type name="guint" c:type="unsigned int"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-face.cc"
+               line="504">a face.</doc>
+          <type name="face_t" c:type="const hb_face_t*"/>
+        </parameter>
+        <parameter name="start_offset" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-face.cc"
+               line="505">index of first tag to return.</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="table_count" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-face.cc"
+               line="506">input length of @table_tags array, output number of items written.</doc>
+          <type name="guint" c:type="unsigned int*"/>
+        </parameter>
+        <parameter name="table_tags" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-face.cc"
+               line="507">array to write tags into.</doc>
+          <type name="tag_t" c:type="hb_tag_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="face_get_upem"
+              c:identifier="hb_face_get_upem"
+              version="0.9.2">
+      <source-position filename="../src/hb-face.h" line="109"/>
+      <return-value transfer-ownership="none">
+        <type name="guint" c:type="unsigned int"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-face.cc"
+               line="453">a face.</doc>
+          <type name="face_t" c:type="const hb_face_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="face_get_user_data"
+              c:identifier="hb_face_get_user_data"
+              version="0.9.2"
+              introspectable="0">
+      <source-position filename="../src/hb-face.h" line="80"/>
+      <return-value transfer-ownership="none" nullable="1">
+        <type name="gpointer" c:type="void*"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-face.cc"
+               line="310">a face.</doc>
+          <type name="face_t" c:type="const hb_face_t*"/>
+        </parameter>
+        <parameter name="key" transfer-ownership="none">
+          <type name="user_data_key_t" c:type="hb_user_data_key_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="face_is_immutable"
+              c:identifier="hb_face_is_immutable"
+              version="0.9.2">
+      <source-position filename="../src/hb-face.h" line="87"/>
+      <return-value transfer-ownership="none">
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-face.cc"
+               line="345">a face.</doc>
+          <type name="face_t" c:type="const hb_face_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="face_make_immutable"
+              c:identifier="hb_face_make_immutable"
+              version="0.9.2">
+      <source-position filename="../src/hb-face.h" line="84"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-face.cc"
+               line="328">a face.</doc>
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="face_reference"
+              c:identifier="hb_face_reference"
+              version="0.9.2"
+              introspectable="0">
+      <source-position filename="../src/hb-face.h" line="67"/>
+      <return-value transfer-ownership="full">
+        <type name="face_t" c:type="hb_face_t*"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-face.cc"
+               line="240">a face.</doc>
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="face_reference_blob"
+              c:identifier="hb_face_reference_blob"
+              version="0.9.2">
+      <source-position filename="../src/hb-face.h" line="95"/>
+      <return-value transfer-ownership="full">
+        <type name="blob_t" c:type="hb_blob_t*"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-face.cc"
+               line="383">a face.</doc>
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="face_reference_table"
+              c:identifier="hb_face_reference_table"
+              version="0.9.2">
+      <source-position filename="../src/hb-face.h" line="91"/>
+      <return-value transfer-ownership="full">
+        <type name="blob_t" c:type="hb_blob_t*"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-face.cc"
+               line="362">a face.</doc>
+          <type name="face_t" c:type="const hb_face_t*"/>
+        </parameter>
+        <parameter name="tag" transfer-ownership="none">
+          <type name="tag_t" c:type="hb_tag_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="face_set_glyph_count"
+              c:identifier="hb_face_set_glyph_count"
+              version="0.9.7">
+      <source-position filename="../src/hb-face.h" line="112"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-face.cc"
+               line="469">a face.</doc>
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+        <parameter name="glyph_count" transfer-ownership="none">
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="face_set_index"
+              c:identifier="hb_face_set_index"
+              version="0.9.2">
+      <source-position filename="../src/hb-face.h" line="98"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-face.cc"
+               line="399">a face.</doc>
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+        <parameter name="index" transfer-ownership="none">
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="face_set_upem"
+              c:identifier="hb_face_set_upem"
+              version="0.9.2">
+      <source-position filename="../src/hb-face.h" line="105"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-face.cc"
+               line="434">a face.</doc>
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+        <parameter name="upem" transfer-ownership="none">
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="face_set_user_data"
+              c:identifier="hb_face_set_user_data"
+              version="0.9.2"
+              introspectable="0">
+      <source-position filename="../src/hb-face.h" line="73"/>
+      <return-value transfer-ownership="none">
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-face.cc"
+               line="286">a face.</doc>
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+        <parameter name="key" transfer-ownership="none">
+          <type name="user_data_key_t" c:type="hb_user_data_key_t*"/>
+        </parameter>
+        <parameter name="data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+        <parameter name="destroy" transfer-ownership="none">
+          <type name="destroy_func_t" c:type="hb_destroy_func_t"/>
+        </parameter>
+        <parameter name="replace" transfer-ownership="none">
+          <type name="bool_t" c:type="hb_bool_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <record name="face_t"
+            c:type="hb_face_t"
+            glib:type-name="hb_face_t"
+            glib:get-type="hb_gobject_face_get_type"
+            c:symbol-prefix="gobject_face">
+      <source-position filename="../src/hb-face.h" line="49"/>
+    </record>
+    <function name="feature_from_string"
+              c:identifier="hb_feature_from_string"
+              version="0.9.5">
+      <doc xml:space="preserve"
+           filename="../src/hb-common.cc"
+           line="841">Parses a string into a #hb_feature_t.
+
+The format for specifying feature strings follows. All valid CSS
+font-feature-settings values other than 'normal' and the global values are
+also accepted, though not documented below. CSS string escapes are not
+supported.
+
+The range indices refer to the positions between Unicode characters. The
+position before the first character is always 0.
+
+The format is Python-esque.  Here is how it all works:
+
+&lt;informaltable pgwide='1' align='left' frame='none'&gt;
+&lt;tgroup cols='5'&gt;
+&lt;thead&gt;
+&lt;row&gt;&lt;entry&gt;Syntax&lt;/entry&gt;    &lt;entry&gt;Value&lt;/entry&gt; &lt;entry&gt;Start&lt;/entry&gt; &lt;entry&gt;End&lt;/entry&gt;&lt;/row&gt;
+&lt;/thead&gt;
+&lt;tbody&gt;
+&lt;row&gt;&lt;entry&gt;Setting value:&lt;/entry&gt;&lt;/row&gt;
+&lt;row&gt;&lt;entry&gt;kern&lt;/entry&gt;      &lt;entry&gt;1&lt;/entry&gt;     &lt;entry&gt;0&lt;/entry&gt;      &lt;entry&gt;∞&lt;/entry&gt;   &lt;entry&gt;Turn feature on&lt;/entry&gt;&lt;/row&gt;
+&lt;row&gt;&lt;entry&gt;+kern&lt;/entry&gt;     &lt;entry&gt;1&lt;/entry&gt;     &lt;entry&gt;0&lt;/entry&gt;      &lt;entry&gt;∞&lt;/entry&gt;   &lt;entry&gt;Turn feature on&lt;/entry&gt;&lt;/row&gt;
+&lt;row&gt;&lt;entry&gt;-kern&lt;/entry&gt;     &lt;entry&gt;0&lt;/entry&gt;     &lt;entry&gt;0&lt;/entry&gt;      &lt;entry&gt;∞&lt;/entry&gt;   &lt;entry&gt;Turn feature off&lt;/entry&gt;&lt;/row&gt;
+&lt;row&gt;&lt;entry&gt;kern=0&lt;/entry&gt;    &lt;entry&gt;0&lt;/entry&gt;     &lt;entry&gt;0&lt;/entry&gt;      &lt;entry&gt;∞&lt;/entry&gt;   &lt;entry&gt;Turn feature off&lt;/entry&gt;&lt;/row&gt;
+&lt;row&gt;&lt;entry&gt;kern=1&lt;/entry&gt;    &lt;entry&gt;1&lt;/entry&gt;     &lt;entry&gt;0&lt;/entry&gt;      &lt;entry&gt;∞&lt;/entry&gt;   &lt;entry&gt;Turn feature on&lt;/entry&gt;&lt;/row&gt;
+&lt;row&gt;&lt;entry&gt;aalt=2&lt;/entry&gt;    &lt;entry&gt;2&lt;/entry&gt;     &lt;entry&gt;0&lt;/entry&gt;      &lt;entry&gt;∞&lt;/entry&gt;   &lt;entry&gt;Choose 2nd alternate&lt;/entry&gt;&lt;/row&gt;
+&lt;row&gt;&lt;entry&gt;Setting index:&lt;/entry&gt;&lt;/row&gt;
+&lt;row&gt;&lt;entry&gt;kern[]&lt;/entry&gt;    &lt;entry&gt;1&lt;/entry&gt;     &lt;entry&gt;0&lt;/entry&gt;      &lt;entry&gt;∞&lt;/entry&gt;   &lt;entry&gt;Turn feature on&lt;/entry&gt;&lt;/row&gt;
+&lt;row&gt;&lt;entry&gt;kern[:]&lt;/entry&gt;   &lt;entry&gt;1&lt;/entry&gt;     &lt;entry&gt;0&lt;/entry&gt;      &lt;entry&gt;∞&lt;/entry&gt;   &lt;entry&gt;Turn feature on&lt;/entry&gt;&lt;/row&gt;
+&lt;row&gt;&lt;entry&gt;kern[5:]&lt;/entry&gt;  &lt;entry&gt;1&lt;/entry&gt;     &lt;entry&gt;5&lt;/entry&gt;      &lt;entry&gt;∞&lt;/entry&gt;   &lt;entry&gt;Turn feature on, partial&lt;/entry&gt;&lt;/row&gt;
+&lt;row&gt;&lt;entry&gt;kern[:5]&lt;/entry&gt;  &lt;entry&gt;1&lt;/entry&gt;     &lt;entry&gt;0&lt;/entry&gt;      &lt;entry&gt;5&lt;/entry&gt;   &lt;entry&gt;Turn feature on, partial&lt;/entry&gt;&lt;/row&gt;
+&lt;row&gt;&lt;entry&gt;kern[3:5]&lt;/entry&gt; &lt;entry&gt;1&lt;/entry&gt;     &lt;entry&gt;3&lt;/entry&gt;      &lt;entry&gt;5&lt;/entry&gt;   &lt;entry&gt;Turn feature on, range&lt;/entry&gt;&lt;/row&gt;
+&lt;row&gt;&lt;entry&gt;kern[3]&lt;/entry&gt;   &lt;entry&gt;1&lt;/entry&gt;     &lt;entry&gt;3&lt;/entry&gt;      &lt;entry&gt;3+1&lt;/entry&gt; &lt;entry&gt;Turn feature on, single char&lt;/entry&gt;&lt;/row&gt;
+&lt;row&gt;&lt;entry&gt;Mixing it all:&lt;/entry&gt;&lt;/row&gt;
+&lt;row&gt;&lt;entry&gt;aalt[3:5]=2&lt;/entry&gt; &lt;entry&gt;2&lt;/entry&gt;   &lt;entry&gt;3&lt;/entry&gt;      &lt;entry&gt;5&lt;/entry&gt;   &lt;entry&gt;Turn 2nd alternate on for range&lt;/entry&gt;&lt;/row&gt;
+&lt;/tbody&gt;
+&lt;/tgroup&gt;
+&lt;/informaltable&gt;</doc>
+      <source-position filename="../src/hb-common.h" line="459"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-common.cc"
+             line="885">%true if @str is successfully parsed, %false otherwise.</doc>
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="str" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-common.cc"
+               line="843">a string to parse</doc>
+          <array length="1" zero-terminated="0" c:type="const char*">
+            <type name="guint8"/>
+          </array>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-common.cc"
+               line="844">length of @str, or -1 if string is %NULL terminated</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="feature"
+                   direction="out"
+                   caller-allocates="1"
+                   transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-common.cc"
+               line="845">the #hb_feature_t to initialize with the parsed values</doc>
+          <type name="feature_t" c:type="hb_feature_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <record name="feature_t"
+            c:type="hb_feature_t"
+            glib:type-name="hb_feature_t"
+            glib:get-type="hb_gobject_feature_get_type"
+            c:symbol-prefix="gobject_feature">
+      <doc xml:space="preserve"
+           filename="../src/hb-common.h"
+           line="436">The #hb_feature_t is the structure that holds information about requested
+feature application. The feature will be applied with the given value to all
+glyphs which are in clusters between @start (inclusive) and @end (exclusive).
+Setting start to @HB_FEATURE_GLOBAL_START and end to @HB_FEATURE_GLOBAL_END
+specifies that the feature always applies to the entire buffer.</doc>
+      <source-position filename="../src/hb-common.h" line="456"/>
+      <field name="tag" writable="1">
+        <doc xml:space="preserve"
+             filename="../src/hb-common.h"
+             line="438">a feature tag</doc>
+        <type name="tag_t" c:type="hb_tag_t"/>
+      </field>
+      <field name="value" writable="1">
+        <doc xml:space="preserve"
+             filename="../src/hb-common.h"
+             line="439">0 disables the feature, non-zero (usually 1) enables the feature.
+For features implemented as lookup type 3 (like 'salt') the @value is a one
+based index into the alternates.</doc>
+        <type name="guint32" c:type="uint32_t"/>
+      </field>
+      <field name="start" writable="1">
+        <doc xml:space="preserve"
+             filename="../src/hb-common.h"
+             line="442">the cluster to start applying this feature setting (inclusive).</doc>
+        <type name="guint" c:type="unsigned int"/>
+      </field>
+      <field name="end" writable="1">
+        <doc xml:space="preserve"
+             filename="../src/hb-common.h"
+             line="443">the cluster to end applying this feature setting (exclusive).</doc>
+        <type name="guint" c:type="unsigned int"/>
+      </field>
+      <method name="_string"
+              c:identifier="hb_feature_to_string"
+              moved-to="feature_to_string"
+              version="0.9.5">
+        <doc xml:space="preserve"
+             filename="../src/hb-common.cc"
+             line="911">Converts a #hb_feature_t into a %NULL-terminated string in the format
+understood by hb_feature_from_string(). The client in responsible for
+allocating big enough size for @buf, 128 bytes is more than enough.</doc>
+        <source-position filename="../src/hb-common.h" line="463"/>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="feature" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../src/hb-common.cc"
+                 line="913">an #hb_feature_t to convert</doc>
+            <type name="feature_t" c:type="hb_feature_t*"/>
+          </instance-parameter>
+          <parameter name="buf"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:space="preserve"
+                 filename="../src/hb-common.cc"
+                 line="914">output string</doc>
+            <array length="1" zero-terminated="0" c:type="char*">
+              <type name="utf8" c:type="char"/>
+            </array>
+          </parameter>
+          <parameter name="size"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:space="preserve"
+                 filename="../src/hb-common.cc"
+                 line="915">the allocated size of @buf</doc>
+            <type name="guint" c:type="unsigned int"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <function name="feature_to_string"
+              c:identifier="hb_feature_to_string"
+              version="0.9.5">
+      <doc xml:space="preserve"
+           filename="../src/hb-common.cc"
+           line="911">Converts a #hb_feature_t into a %NULL-terminated string in the format
+understood by hb_feature_from_string(). The client in responsible for
+allocating big enough size for @buf, 128 bytes is more than enough.</doc>
+      <source-position filename="../src/hb-common.h" line="463"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="feature" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-common.cc"
+               line="913">an #hb_feature_t to convert</doc>
+          <type name="feature_t" c:type="hb_feature_t*"/>
+        </parameter>
+        <parameter name="buf"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../src/hb-common.cc"
+               line="914">output string</doc>
+          <array length="2" zero-terminated="0" c:type="char*">
+            <type name="utf8" c:type="char"/>
+          </array>
+        </parameter>
+        <parameter name="size"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../src/hb-common.cc"
+               line="915">the allocated size of @buf</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="font_add_glyph_origin_for_direction"
+              c:identifier="hb_font_add_glyph_origin_for_direction"
+              version="0.9.2">
+      <source-position filename="../src/hb-font.h" line="558"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-font.cc"
+               line="1166">a font.</doc>
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+        <parameter name="glyph" transfer-ownership="none">
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+        <parameter name="direction" transfer-ownership="none">
+          <type name="direction_t" c:type="hb_direction_t"/>
+        </parameter>
+        <parameter name="x"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <type name="position_t" c:type="hb_position_t*"/>
+        </parameter>
+        <parameter name="y"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <type name="position_t" c:type="hb_position_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="font_create" c:identifier="hb_font_create" version="0.9.2">
+      <source-position filename="../src/hb-font.h" line="605"/>
+      <return-value transfer-ownership="full">
+        <type name="font_t" c:type="hb_font_t*"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-font.cc"
+               line="1370">a face.</doc>
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="font_create_sub_font"
+              c:identifier="hb_font_create_sub_font"
+              version="0.9.2">
+      <source-position filename="../src/hb-font.h" line="608"/>
+      <return-value transfer-ownership="full">
+        <type name="font_t" c:type="hb_font_t*"/>
+      </return-value>
+      <parameters>
+        <parameter name="parent" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-font.cc"
+               line="1407">parent font.</doc>
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="font_destroy"
+              c:identifier="hb_font_destroy"
+              version="0.9.2"
+              introspectable="0">
+      <source-position filename="../src/hb-font.h" line="617"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-font.cc"
+               line="1489">a font.</doc>
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <record name="font_extents_t" c:type="hb_font_extents_t">
+      <source-position filename="../src/hb-font.h" line="100"/>
+      <field name="ascender" writable="1">
+        <type name="position_t" c:type="hb_position_t"/>
+      </field>
+      <field name="descender" writable="1">
+        <type name="position_t" c:type="hb_position_t"/>
+      </field>
+      <field name="line_gap" writable="1">
+        <type name="position_t" c:type="hb_position_t"/>
+      </field>
+      <field name="reserved9" readable="0" private="1">
+        <type name="position_t" c:type="hb_position_t"/>
+      </field>
+      <field name="reserved8" readable="0" private="1">
+        <type name="position_t" c:type="hb_position_t"/>
+      </field>
+      <field name="reserved7" readable="0" private="1">
+        <type name="position_t" c:type="hb_position_t"/>
+      </field>
+      <field name="reserved6" readable="0" private="1">
+        <type name="position_t" c:type="hb_position_t"/>
+      </field>
+      <field name="reserved5" readable="0" private="1">
+        <type name="position_t" c:type="hb_position_t"/>
+      </field>
+      <field name="reserved4" readable="0" private="1">
+        <type name="position_t" c:type="hb_position_t"/>
+      </field>
+      <field name="reserved3" readable="0" private="1">
+        <type name="position_t" c:type="hb_position_t"/>
+      </field>
+      <field name="reserved2" readable="0" private="1">
+        <type name="position_t" c:type="hb_position_t"/>
+      </field>
+      <field name="reserved1" readable="0" private="1">
+        <type name="position_t" c:type="hb_position_t"/>
+      </field>
+    </record>
+    <function name="font_funcs_create"
+              c:identifier="hb_font_funcs_create"
+              version="0.9.2">
+      <source-position filename="../src/hb-font.h" line="51"/>
+      <return-value transfer-ownership="full">
+        <type name="font_funcs_t" c:type="hb_font_funcs_t*"/>
+      </return-value>
+    </function>
+    <function name="font_funcs_destroy"
+              c:identifier="hb_font_funcs_destroy"
+              version="0.9.2"
+              introspectable="0">
+      <source-position filename="../src/hb-font.h" line="60"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="ffuncs" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-font.cc"
+               line="576">font functions.</doc>
+          <type name="font_funcs_t" c:type="hb_font_funcs_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="font_funcs_get_empty"
+              c:identifier="hb_font_funcs_get_empty"
+              version="0.9.2">
+      <source-position filename="../src/hb-font.h" line="54"/>
+      <return-value transfer-ownership="full">
+        <type name="font_funcs_t" c:type="hb_font_funcs_t*"/>
+      </return-value>
+    </function>
+    <function name="font_funcs_get_user_data"
+              c:identifier="hb_font_funcs_get_user_data"
+              version="0.9.2"
+              introspectable="0">
+      <source-position filename="../src/hb-font.h" line="71"/>
+      <return-value transfer-ownership="none" nullable="1">
+        <type name="gpointer" c:type="void*"/>
+      </return-value>
+      <parameters>
+        <parameter name="ffuncs" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-font.cc"
+               line="621">font functions.</doc>
+          <type name="font_funcs_t" c:type="hb_font_funcs_t*"/>
+        </parameter>
+        <parameter name="key" transfer-ownership="none">
+          <type name="user_data_key_t" c:type="hb_user_data_key_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="font_funcs_is_immutable"
+              c:identifier="hb_font_funcs_is_immutable"
+              version="0.9.2">
+      <source-position filename="../src/hb-font.h" line="79"/>
+      <return-value transfer-ownership="none">
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="ffuncs" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-font.cc"
+               line="657">font functions.</doc>
+          <type name="font_funcs_t" c:type="hb_font_funcs_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="font_funcs_make_immutable"
+              c:identifier="hb_font_funcs_make_immutable"
+              version="0.9.2">
+      <source-position filename="../src/hb-font.h" line="76"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="ffuncs" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-font.cc"
+               line="640">font functions.</doc>
+          <type name="font_funcs_t" c:type="hb_font_funcs_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="font_funcs_reference"
+              c:identifier="hb_font_funcs_reference"
+              version="0.9.2"
+              introspectable="0">
+      <source-position filename="../src/hb-font.h" line="57"/>
+      <return-value transfer-ownership="full">
+        <type name="font_funcs_t" c:type="hb_font_funcs_t*"/>
+      </return-value>
+      <parameters>
+        <parameter name="ffuncs" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-font.cc"
+               line="560">font functions.</doc>
+          <type name="font_funcs_t" c:type="hb_font_funcs_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="font_funcs_set_font_h_extents_func"
+              c:identifier="hb_font_funcs_set_font_h_extents_func"
+              version="1.1.2">
+      <source-position filename="../src/hb-font.h" line="201"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="ffuncs" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-font.h"
+               line="191">font functions.</doc>
+          <type name="font_funcs_t" c:type="hb_font_funcs_t*"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="2"
+                   destroy="3">
+          <type name="font_get_font_h_extents_func_t"
+                c:type="hb_font_get_font_h_extents_func_t"/>
+        </parameter>
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+        <parameter name="destroy" transfer-ownership="none" scope="notified">
+          <type name="destroy_func_t" c:type="hb_destroy_func_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="font_funcs_set_font_v_extents_func"
+              c:identifier="hb_font_funcs_set_font_v_extents_func"
+              version="1.1.2">
+      <source-position filename="../src/hb-font.h" line="217"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="ffuncs" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-font.h"
+               line="207">font functions.</doc>
+          <type name="font_funcs_t" c:type="hb_font_funcs_t*"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="2"
+                   destroy="3">
+          <type name="font_get_font_v_extents_func_t"
+                c:type="hb_font_get_font_v_extents_func_t"/>
+        </parameter>
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+        <parameter name="destroy" transfer-ownership="none" scope="notified">
+          <type name="destroy_func_t" c:type="hb_destroy_func_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="font_funcs_set_glyph_contour_point_func"
+              c:identifier="hb_font_funcs_set_glyph_contour_point_func"
+              version="0.9.2">
+      <source-position filename="../src/hb-font.h" line="409"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="ffuncs" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-font.h"
+               line="399">font functions.</doc>
+          <type name="font_funcs_t" c:type="hb_font_funcs_t*"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="2"
+                   destroy="3">
+          <type name="font_get_glyph_contour_point_func_t"
+                c:type="hb_font_get_glyph_contour_point_func_t"/>
+        </parameter>
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+        <parameter name="destroy" transfer-ownership="none" scope="notified">
+          <type name="destroy_func_t" c:type="hb_destroy_func_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="font_funcs_set_glyph_extents_func"
+              c:identifier="hb_font_funcs_set_glyph_extents_func"
+              version="0.9.2">
+      <source-position filename="../src/hb-font.h" line="393"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="ffuncs" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-font.h"
+               line="383">font functions.</doc>
+          <type name="font_funcs_t" c:type="hb_font_funcs_t*"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="2"
+                   destroy="3">
+          <type name="font_get_glyph_extents_func_t"
+                c:type="hb_font_get_glyph_extents_func_t"/>
+        </parameter>
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+        <parameter name="destroy" transfer-ownership="none" scope="notified">
+          <type name="destroy_func_t" c:type="hb_destroy_func_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="font_funcs_set_glyph_from_name_func"
+              c:identifier="hb_font_funcs_set_glyph_from_name_func"
+              version="0.9.2">
+      <source-position filename="../src/hb-font.h" line="441"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="ffuncs" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-font.h"
+               line="431">font functions.</doc>
+          <type name="font_funcs_t" c:type="hb_font_funcs_t*"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="2"
+                   destroy="3">
+          <type name="font_get_glyph_from_name_func_t"
+                c:type="hb_font_get_glyph_from_name_func_t"/>
+        </parameter>
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+        <parameter name="destroy" transfer-ownership="none" scope="notified">
+          <type name="destroy_func_t" c:type="hb_destroy_func_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="font_funcs_set_glyph_func"
+              c:identifier="hb_font_funcs_set_glyph_func"
+              version="0.9.2"
+              deprecated="1"
+              deprecated-version="1.2.3">
+      <doc xml:space="preserve"
+           filename="../src/hb-font.cc"
+           line="2140">Deprecated.  Use hb_font_funcs_set_nominal_glyph_func() and
+hb_font_funcs_set_variation_glyph_func() instead.</doc>
+      <source-position filename="../src/hb-deprecated.h" line="67"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="ffuncs" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-font.cc"
+               line="2142">font functions.</doc>
+          <type name="font_funcs_t" c:type="hb_font_funcs_t*"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="2"
+                   destroy="3">
+          <doc xml:space="preserve"
+               filename="../src/hb-font.cc"
+               line="2143">callback function.</doc>
+          <type name="font_get_glyph_func_t"
+                c:type="hb_font_get_glyph_func_t"/>
+        </parameter>
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
+          <doc xml:space="preserve"
+               filename="../src/hb-font.cc"
+               line="2144">data to pass to @func.</doc>
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+        <parameter name="destroy" transfer-ownership="none" scope="notified">
+          <doc xml:space="preserve"
+               filename="../src/hb-font.cc"
+               line="2145">function to call when @user_data is not needed anymore.</doc>
+          <type name="destroy_func_t" c:type="hb_destroy_func_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="font_funcs_set_glyph_h_advance_func"
+              c:identifier="hb_font_funcs_set_glyph_h_advance_func"
+              version="0.9.2">
+      <source-position filename="../src/hb-font.h" line="281"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="ffuncs" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-font.h"
+               line="271">font functions.</doc>
+          <type name="font_funcs_t" c:type="hb_font_funcs_t*"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="2"
+                   destroy="3">
+          <type name="font_get_glyph_h_advance_func_t"
+                c:type="hb_font_get_glyph_h_advance_func_t"/>
+        </parameter>
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+        <parameter name="destroy" transfer-ownership="none" scope="notified">
+          <type name="destroy_func_t" c:type="hb_destroy_func_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="font_funcs_set_glyph_h_advances_func"
+              c:identifier="hb_font_funcs_set_glyph_h_advances_func"
+              version="1.8.6">
+      <source-position filename="../src/hb-font.h" line="313"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="ffuncs" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-font.h"
+               line="303">font functions.</doc>
+          <type name="font_funcs_t" c:type="hb_font_funcs_t*"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="2"
+                   destroy="3">
+          <type name="font_get_glyph_h_advances_func_t"
+                c:type="hb_font_get_glyph_h_advances_func_t"/>
+        </parameter>
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+        <parameter name="destroy" transfer-ownership="none" scope="notified">
+          <type name="destroy_func_t" c:type="hb_destroy_func_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="font_funcs_set_glyph_h_kerning_func"
+              c:identifier="hb_font_funcs_set_glyph_h_kerning_func"
+              version="0.9.2">
+      <source-position filename="../src/hb-font.h" line="377"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="ffuncs" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-font.h"
+               line="367">font functions.</doc>
+          <type name="font_funcs_t" c:type="hb_font_funcs_t*"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="2"
+                   destroy="3">
+          <type name="font_get_glyph_h_kerning_func_t"
+                c:type="hb_font_get_glyph_h_kerning_func_t"/>
+        </parameter>
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+        <parameter name="destroy" transfer-ownership="none" scope="notified">
+          <type name="destroy_func_t" c:type="hb_destroy_func_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="font_funcs_set_glyph_h_origin_func"
+              c:identifier="hb_font_funcs_set_glyph_h_origin_func"
+              version="0.9.2">
+      <source-position filename="../src/hb-font.h" line="345"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="ffuncs" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-font.h"
+               line="335">font functions.</doc>
+          <type name="font_funcs_t" c:type="hb_font_funcs_t*"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="2"
+                   destroy="3">
+          <type name="font_get_glyph_h_origin_func_t"
+                c:type="hb_font_get_glyph_h_origin_func_t"/>
+        </parameter>
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+        <parameter name="destroy" transfer-ownership="none" scope="notified">
+          <type name="destroy_func_t" c:type="hb_destroy_func_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="font_funcs_set_glyph_name_func"
+              c:identifier="hb_font_funcs_set_glyph_name_func"
+              version="0.9.2">
+      <source-position filename="../src/hb-font.h" line="425"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="ffuncs" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-font.h"
+               line="415">font functions.</doc>
+          <type name="font_funcs_t" c:type="hb_font_funcs_t*"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="2"
+                   destroy="3">
+          <type name="font_get_glyph_name_func_t"
+                c:type="hb_font_get_glyph_name_func_t"/>
+        </parameter>
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+        <parameter name="destroy" transfer-ownership="none" scope="notified">
+          <type name="destroy_func_t" c:type="hb_destroy_func_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="font_funcs_set_glyph_v_advance_func"
+              c:identifier="hb_font_funcs_set_glyph_v_advance_func"
+              version="0.9.2">
+      <source-position filename="../src/hb-font.h" line="297"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="ffuncs" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-font.h"
+               line="287">font functions.</doc>
+          <type name="font_funcs_t" c:type="hb_font_funcs_t*"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="2"
+                   destroy="3">
+          <type name="font_get_glyph_v_advance_func_t"
+                c:type="hb_font_get_glyph_v_advance_func_t"/>
+        </parameter>
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+        <parameter name="destroy" transfer-ownership="none" scope="notified">
+          <type name="destroy_func_t" c:type="hb_destroy_func_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="font_funcs_set_glyph_v_advances_func"
+              c:identifier="hb_font_funcs_set_glyph_v_advances_func"
+              version="1.8.6">
+      <source-position filename="../src/hb-font.h" line="329"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="ffuncs" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-font.h"
+               line="319">font functions.</doc>
+          <type name="font_funcs_t" c:type="hb_font_funcs_t*"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="2"
+                   destroy="3">
+          <type name="font_get_glyph_v_advances_func_t"
+                c:type="hb_font_get_glyph_v_advances_func_t"/>
+        </parameter>
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+        <parameter name="destroy" transfer-ownership="none" scope="notified">
+          <type name="destroy_func_t" c:type="hb_destroy_func_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="font_funcs_set_glyph_v_kerning_func"
+              c:identifier="hb_font_funcs_set_glyph_v_kerning_func"
+              version="0.9.2"
+              deprecated="1"
+              deprecated-version="2.0.0">
+      <source-position filename="../src/hb-deprecated.h" line="183"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="ffuncs" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-deprecated.h"
+               line="172">font functions.</doc>
+          <type name="font_funcs_t" c:type="hb_font_funcs_t*"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="2"
+                   destroy="3">
+          <type name="font_get_glyph_v_kerning_func_t"
+                c:type="hb_font_get_glyph_v_kerning_func_t"/>
+        </parameter>
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+        <parameter name="destroy" transfer-ownership="none" scope="notified">
+          <type name="destroy_func_t" c:type="hb_destroy_func_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="font_funcs_set_glyph_v_origin_func"
+              c:identifier="hb_font_funcs_set_glyph_v_origin_func"
+              version="0.9.2">
+      <source-position filename="../src/hb-font.h" line="361"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="ffuncs" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-font.h"
+               line="351">font functions.</doc>
+          <type name="font_funcs_t" c:type="hb_font_funcs_t*"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="2"
+                   destroy="3">
+          <type name="font_get_glyph_v_origin_func_t"
+                c:type="hb_font_get_glyph_v_origin_func_t"/>
+        </parameter>
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+        <parameter name="destroy" transfer-ownership="none" scope="notified">
+          <type name="destroy_func_t" c:type="hb_destroy_func_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="font_funcs_set_nominal_glyph_func"
+              c:identifier="hb_font_funcs_set_nominal_glyph_func"
+              version="1.2.3">
+      <source-position filename="../src/hb-font.h" line="233"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="ffuncs" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-font.h"
+               line="223">font functions.</doc>
+          <type name="font_funcs_t" c:type="hb_font_funcs_t*"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="2"
+                   destroy="3">
+          <type name="font_get_nominal_glyph_func_t"
+                c:type="hb_font_get_nominal_glyph_func_t"/>
+        </parameter>
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+        <parameter name="destroy" transfer-ownership="none" scope="notified">
+          <type name="destroy_func_t" c:type="hb_destroy_func_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="font_funcs_set_nominal_glyphs_func"
+              c:identifier="hb_font_funcs_set_nominal_glyphs_func"
+              version="2.0.0">
+      <source-position filename="../src/hb-font.h" line="249"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="ffuncs" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-font.h"
+               line="239">font functions.</doc>
+          <type name="font_funcs_t" c:type="hb_font_funcs_t*"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="2"
+                   destroy="3">
+          <type name="font_get_nominal_glyphs_func_t"
+                c:type="hb_font_get_nominal_glyphs_func_t"/>
+        </parameter>
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+        <parameter name="destroy" transfer-ownership="none" scope="notified">
+          <type name="destroy_func_t" c:type="hb_destroy_func_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="font_funcs_set_user_data"
+              c:identifier="hb_font_funcs_set_user_data"
+              version="0.9.2"
+              introspectable="0">
+      <source-position filename="../src/hb-font.h" line="63"/>
+      <return-value transfer-ownership="none">
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="ffuncs" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-font.cc"
+               line="597">font functions.</doc>
+          <type name="font_funcs_t" c:type="hb_font_funcs_t*"/>
+        </parameter>
+        <parameter name="key" transfer-ownership="none">
+          <type name="user_data_key_t" c:type="hb_user_data_key_t*"/>
+        </parameter>
+        <parameter name="data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+        <parameter name="destroy" transfer-ownership="none">
+          <type name="destroy_func_t" c:type="hb_destroy_func_t"/>
+        </parameter>
+        <parameter name="replace" transfer-ownership="none">
+          <type name="bool_t" c:type="hb_bool_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="font_funcs_set_variation_glyph_func"
+              c:identifier="hb_font_funcs_set_variation_glyph_func"
+              version="1.2.3">
+      <source-position filename="../src/hb-font.h" line="265"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="ffuncs" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-font.h"
+               line="255">font functions.</doc>
+          <type name="font_funcs_t" c:type="hb_font_funcs_t*"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="2"
+                   destroy="3">
+          <type name="font_get_variation_glyph_func_t"
+                c:type="hb_font_get_variation_glyph_func_t"/>
+        </parameter>
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+        <parameter name="destroy" transfer-ownership="none" scope="notified">
+          <type name="destroy_func_t" c:type="hb_destroy_func_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <record name="font_funcs_t"
+            c:type="hb_font_funcs_t"
+            glib:type-name="hb_font_funcs_t"
+            glib:get-type="hb_gobject_font_funcs_get_type"
+            c:symbol-prefix="gobject_font_funcs">
+      <source-position filename="../src/hb-font.h" line="48"/>
+    </record>
+    <function name="font_get_empty"
+              c:identifier="hb_font_get_empty"
+              version="0.9.2">
+      <source-position filename="../src/hb-font.h" line="611"/>
+      <return-value transfer-ownership="full">
+        <type name="font_t" c:type="hb_font_t*"/>
+      </return-value>
+    </function>
+    <function name="font_get_extents_for_direction"
+              c:identifier="hb_font_get_extents_for_direction"
+              version="1.1.3">
+      <source-position filename="../src/hb-font.h" line="536"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-font.cc"
+               line="1087">a font.</doc>
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+        <parameter name="direction" transfer-ownership="none">
+          <type name="direction_t" c:type="hb_direction_t"/>
+        </parameter>
+        <parameter name="extents"
+                   direction="out"
+                   caller-allocates="1"
+                   transfer-ownership="none">
+          <type name="font_extents_t" c:type="hb_font_extents_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="font_get_face"
+              c:identifier="hb_font_get_face"
+              version="0.9.2">
+      <source-position filename="../src/hb-font.h" line="649"/>
+      <return-value transfer-ownership="none">
+        <type name="face_t" c:type="hb_face_t*"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-font.cc"
+               line="1665">a font.</doc>
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <callback name="font_get_font_extents_func_t"
+              c:type="hb_font_get_font_extents_func_t">
+      <source-position filename="../src/hb-font.h" line="113"/>
+      <return-value transfer-ownership="none">
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+        <parameter name="font_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+        <parameter name="extents" transfer-ownership="none">
+          <type name="font_extents_t" c:type="hb_font_extents_t*"/>
+        </parameter>
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1"
+                   closure="3">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <function name="font_get_glyph"
+              c:identifier="hb_font_get_glyph"
+              version="0.9.2">
+      <source-position filename="../src/hb-font.h" line="531"/>
+      <return-value transfer-ownership="none">
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-font.cc"
+               line="757">a font.</doc>
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+        <parameter name="unicode" transfer-ownership="none">
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+        <parameter name="variation_selector" transfer-ownership="none">
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+        <parameter name="glyph"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <type name="codepoint_t" c:type="hb_codepoint_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="font_get_glyph_advance_for_direction"
+              c:identifier="hb_font_get_glyph_advance_for_direction"
+              version="0.9.2">
+      <source-position filename="../src/hb-font.h" line="540"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-font.cc"
+               line="1104">a font.</doc>
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+        <parameter name="glyph" transfer-ownership="none">
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+        <parameter name="direction" transfer-ownership="none">
+          <type name="direction_t" c:type="hb_direction_t"/>
+        </parameter>
+        <parameter name="x"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <type name="position_t" c:type="hb_position_t*"/>
+        </parameter>
+        <parameter name="y"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <type name="position_t" c:type="hb_position_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <callback name="font_get_glyph_advance_func_t"
+              c:type="hb_font_get_glyph_advance_func_t">
+      <source-position filename="../src/hb-font.h" line="138"/>
+      <return-value transfer-ownership="none">
+        <type name="position_t" c:type="hb_position_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+        <parameter name="font_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+        <parameter name="glyph" transfer-ownership="none">
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1"
+                   closure="3">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <function name="font_get_glyph_advances_for_direction"
+              c:identifier="hb_font_get_glyph_advances_for_direction"
+              version="1.8.6">
+      <source-position filename="../src/hb-font.h" line="545"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-font.cc"
+               line="1124">a font.</doc>
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+        <parameter name="direction" transfer-ownership="none">
+          <type name="direction_t" c:type="hb_direction_t"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="first_glyph" transfer-ownership="none">
+          <type name="codepoint_t" c:type="const hb_codepoint_t*"/>
+        </parameter>
+        <parameter name="glyph_stride" transfer-ownership="none">
+          <type name="guint" c:type="unsigned"/>
+        </parameter>
+        <parameter name="first_advance" transfer-ownership="none">
+          <type name="position_t" c:type="hb_position_t*"/>
+        </parameter>
+        <parameter name="advance_stride" transfer-ownership="none">
+          <type name="guint" c:type="unsigned"/>
+        </parameter>
+      </parameters>
+    </function>
+    <callback name="font_get_glyph_advances_func_t"
+              c:type="hb_font_get_glyph_advances_func_t">
+      <source-position filename="../src/hb-font.h" line="144"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+        <parameter name="font_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="first_glyph" transfer-ownership="none">
+          <type name="codepoint_t" c:type="const hb_codepoint_t*"/>
+        </parameter>
+        <parameter name="glyph_stride" transfer-ownership="none">
+          <type name="guint" c:type="unsigned"/>
+        </parameter>
+        <parameter name="first_advance" transfer-ownership="none">
+          <type name="position_t" c:type="hb_position_t*"/>
+        </parameter>
+        <parameter name="advance_stride" transfer-ownership="none">
+          <type name="guint" c:type="unsigned"/>
+        </parameter>
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1"
+                   closure="7">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <function name="font_get_glyph_contour_point"
+              c:identifier="hb_font_get_glyph_contour_point"
+              version="0.9.2">
+      <source-position filename="../src/hb-font.h" line="512"/>
+      <return-value transfer-ownership="none">
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-font.cc"
+               line="1020">a font.</doc>
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+        <parameter name="glyph" transfer-ownership="none">
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+        <parameter name="point_index" transfer-ownership="none">
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="x"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <type name="position_t" c:type="hb_position_t*"/>
+        </parameter>
+        <parameter name="y"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <type name="position_t" c:type="hb_position_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="font_get_glyph_contour_point_for_origin"
+              c:identifier="hb_font_get_glyph_contour_point_for_origin"
+              version="0.9.2">
+      <source-position filename="../src/hb-font.h" line="581"/>
+      <return-value transfer-ownership="none">
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-font.cc"
+               line="1252">a font.</doc>
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+        <parameter name="glyph" transfer-ownership="none">
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+        <parameter name="point_index" transfer-ownership="none">
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="direction" transfer-ownership="none">
+          <type name="direction_t" c:type="hb_direction_t"/>
+        </parameter>
+        <parameter name="x"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <type name="position_t" c:type="hb_position_t*"/>
+        </parameter>
+        <parameter name="y"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <type name="position_t" c:type="hb_position_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <callback name="font_get_glyph_contour_point_func_t"
+              c:type="hb_font_get_glyph_contour_point_func_t">
+      <source-position filename="../src/hb-font.h" line="171"/>
+      <return-value transfer-ownership="none">
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+        <parameter name="font_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+        <parameter name="glyph" transfer-ownership="none">
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+        <parameter name="point_index" transfer-ownership="none">
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="position_t" c:type="hb_position_t*"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="position_t" c:type="hb_position_t*"/>
+        </parameter>
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1"
+                   closure="6">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <function name="font_get_glyph_extents"
+              c:identifier="hb_font_get_glyph_extents"
+              version="0.9.2">
+      <source-position filename="../src/hb-font.h" line="507"/>
+      <return-value transfer-ownership="none">
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-font.cc"
+               line="1000">a font.</doc>
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+        <parameter name="glyph" transfer-ownership="none">
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+        <parameter name="extents"
+                   direction="out"
+                   caller-allocates="1"
+                   transfer-ownership="none">
+          <type name="glyph_extents_t" c:type="hb_glyph_extents_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="font_get_glyph_extents_for_origin"
+              c:identifier="hb_font_get_glyph_extents_for_origin"
+              version="0.9.2">
+      <source-position filename="../src/hb-font.h" line="575"/>
+      <return-value transfer-ownership="none">
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-font.cc"
+               line="1230">a font.</doc>
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+        <parameter name="glyph" transfer-ownership="none">
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+        <parameter name="direction" transfer-ownership="none">
+          <type name="direction_t" c:type="hb_direction_t"/>
+        </parameter>
+        <parameter name="extents"
+                   direction="out"
+                   caller-allocates="1"
+                   transfer-ownership="none">
+          <type name="glyph_extents_t" c:type="hb_glyph_extents_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <callback name="font_get_glyph_extents_func_t"
+              c:type="hb_font_get_glyph_extents_func_t">
+      <source-position filename="../src/hb-font.h" line="167"/>
+      <return-value transfer-ownership="none">
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+        <parameter name="font_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+        <parameter name="glyph" transfer-ownership="none">
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+        <parameter name="extents" transfer-ownership="none">
+          <type name="glyph_extents_t" c:type="hb_glyph_extents_t*"/>
+        </parameter>
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1"
+                   closure="4">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <function name="font_get_glyph_from_name"
+              c:identifier="hb_font_get_glyph_from_name"
+              version="0.9.2">
+      <source-position filename="../src/hb-font.h" line="521"/>
+      <return-value transfer-ownership="none">
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-font.cc"
+               line="1063">a font.</doc>
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+        <parameter name="name" transfer-ownership="none">
+          <array length="2" zero-terminated="0" c:type="const char*">
+            <type name="utf8" c:type="char"/>
+          </array>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="glyph"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <type name="codepoint_t" c:type="hb_codepoint_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <callback name="font_get_glyph_from_name_func_t"
+              c:type="hb_font_get_glyph_from_name_func_t">
+      <source-position filename="../src/hb-font.h" line="181"/>
+      <return-value transfer-ownership="none">
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+        <parameter name="font_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="const char*"/>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="glyph" transfer-ownership="none">
+          <type name="codepoint_t" c:type="hb_codepoint_t*"/>
+        </parameter>
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1"
+                   closure="5">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="font_get_glyph_func_t" c:type="hb_font_get_glyph_func_t">
+      <source-position filename="../src/hb-deprecated.h" line="61"/>
+      <return-value transfer-ownership="none">
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+        <parameter name="font_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+        <parameter name="unicode" transfer-ownership="none">
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+        <parameter name="variation_selector" transfer-ownership="none">
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+        <parameter name="glyph" transfer-ownership="none">
+          <type name="codepoint_t" c:type="hb_codepoint_t*"/>
+        </parameter>
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1"
+                   closure="5">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <function name="font_get_glyph_h_advance"
+              c:identifier="hb_font_get_glyph_h_advance"
+              version="0.9.2">
+      <source-position filename="../src/hb-font.h" line="472"/>
+      <return-value transfer-ownership="none">
+        <type name="position_t" c:type="hb_position_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-font.cc"
+               line="844">a font.</doc>
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+        <parameter name="glyph" transfer-ownership="none">
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="font_get_glyph_h_advances"
+              c:identifier="hb_font_get_glyph_h_advances"
+              version="1.8.6">
+      <source-position filename="../src/hb-font.h" line="479"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-font.cc"
+               line="880">a font.</doc>
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="first_glyph" transfer-ownership="none">
+          <type name="codepoint_t" c:type="const hb_codepoint_t*"/>
+        </parameter>
+        <parameter name="glyph_stride" transfer-ownership="none">
+          <type name="guint" c:type="unsigned"/>
+        </parameter>
+        <parameter name="first_advance" transfer-ownership="none">
+          <type name="position_t" c:type="hb_position_t*"/>
+        </parameter>
+        <parameter name="advance_stride" transfer-ownership="none">
+          <type name="guint" c:type="unsigned"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="font_get_glyph_h_kerning"
+              c:identifier="hb_font_get_glyph_h_kerning"
+              version="0.9.2">
+      <source-position filename="../src/hb-font.h" line="503"/>
+      <return-value transfer-ownership="none">
+        <type name="position_t" c:type="hb_position_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-font.cc"
+               line="959">a font.</doc>
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+        <parameter name="left_glyph" transfer-ownership="none">
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+        <parameter name="right_glyph" transfer-ownership="none">
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="font_get_glyph_h_origin"
+              c:identifier="hb_font_get_glyph_h_origin"
+              version="0.9.2">
+      <source-position filename="../src/hb-font.h" line="494"/>
+      <return-value transfer-ownership="none">
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-font.cc"
+               line="917">a font.</doc>
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+        <parameter name="glyph" transfer-ownership="none">
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+        <parameter name="x"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <type name="position_t" c:type="hb_position_t*"/>
+        </parameter>
+        <parameter name="y"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <type name="position_t" c:type="hb_position_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="font_get_glyph_kerning_for_direction"
+              c:identifier="hb_font_get_glyph_kerning_for_direction"
+              version="0.9.2">
+      <source-position filename="../src/hb-font.h" line="569"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-font.cc"
+               line="1208">a font.</doc>
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+        <parameter name="first_glyph" transfer-ownership="none">
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+        <parameter name="second_glyph" transfer-ownership="none">
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+        <parameter name="direction" transfer-ownership="none">
+          <type name="direction_t" c:type="hb_direction_t"/>
+        </parameter>
+        <parameter name="x"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <type name="position_t" c:type="hb_position_t*"/>
+        </parameter>
+        <parameter name="y"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <type name="position_t" c:type="hb_position_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <callback name="font_get_glyph_kerning_func_t"
+              c:type="hb_font_get_glyph_kerning_func_t">
+      <source-position filename="../src/hb-font.h" line="161"/>
+      <return-value transfer-ownership="none">
+        <type name="position_t" c:type="hb_position_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+        <parameter name="font_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+        <parameter name="first_glyph" transfer-ownership="none">
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+        <parameter name="second_glyph" transfer-ownership="none">
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1"
+                   closure="4">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <function name="font_get_glyph_name"
+              c:identifier="hb_font_get_glyph_name"
+              version="0.9.2">
+      <source-position filename="../src/hb-font.h" line="517"/>
+      <return-value transfer-ownership="none">
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-font.cc"
+               line="1042">a font.</doc>
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+        <parameter name="glyph" transfer-ownership="none">
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+        <parameter name="name" transfer-ownership="none">
+          <array length="3" zero-terminated="0" c:type="char*">
+            <type name="utf8" c:type="char"/>
+          </array>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <callback name="font_get_glyph_name_func_t"
+              c:type="hb_font_get_glyph_name_func_t">
+      <source-position filename="../src/hb-font.h" line="177"/>
+      <return-value transfer-ownership="none">
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+        <parameter name="font_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+        <parameter name="glyph" transfer-ownership="none">
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1"
+                   closure="5">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <function name="font_get_glyph_origin_for_direction"
+              c:identifier="hb_font_get_glyph_origin_for_direction"
+              version="0.9.2">
+      <source-position filename="../src/hb-font.h" line="553"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-font.cc"
+               line="1145">a font.</doc>
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+        <parameter name="glyph" transfer-ownership="none">
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+        <parameter name="direction" transfer-ownership="none">
+          <type name="direction_t" c:type="hb_direction_t"/>
+        </parameter>
+        <parameter name="x"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <type name="position_t" c:type="hb_position_t*"/>
+        </parameter>
+        <parameter name="y"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <type name="position_t" c:type="hb_position_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <callback name="font_get_glyph_origin_func_t"
+              c:type="hb_font_get_glyph_origin_func_t">
+      <source-position filename="../src/hb-font.h" line="154"/>
+      <return-value transfer-ownership="none">
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+        <parameter name="font_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+        <parameter name="glyph" transfer-ownership="none">
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="position_t" c:type="hb_position_t*"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="position_t" c:type="hb_position_t*"/>
+        </parameter>
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1"
+                   closure="5">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <function name="font_get_glyph_v_advance"
+              c:identifier="hb_font_get_glyph_v_advance"
+              version="0.9.2">
+      <source-position filename="../src/hb-font.h" line="475"/>
+      <return-value transfer-ownership="none">
+        <type name="position_t" c:type="hb_position_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-font.cc"
+               line="862">a font.</doc>
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+        <parameter name="glyph" transfer-ownership="none">
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="font_get_glyph_v_advances"
+              c:identifier="hb_font_get_glyph_v_advances"
+              version="1.8.6">
+      <source-position filename="../src/hb-font.h" line="486"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-font.cc"
+               line="898">a font.</doc>
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="first_glyph" transfer-ownership="none">
+          <type name="codepoint_t" c:type="const hb_codepoint_t*"/>
+        </parameter>
+        <parameter name="glyph_stride" transfer-ownership="none">
+          <type name="guint" c:type="unsigned"/>
+        </parameter>
+        <parameter name="first_advance" transfer-ownership="none">
+          <type name="position_t" c:type="hb_position_t*"/>
+        </parameter>
+        <parameter name="advance_stride" transfer-ownership="none">
+          <type name="guint" c:type="unsigned"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="font_get_glyph_v_kerning"
+              c:identifier="hb_font_get_glyph_v_kerning"
+              version="0.9.2"
+              deprecated="1"
+              deprecated-version="2.0.0">
+      <source-position filename="../src/hb-deprecated.h" line="188"/>
+      <return-value transfer-ownership="none">
+        <type name="position_t" c:type="hb_position_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-font.cc"
+               line="979">a font.</doc>
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+        <parameter name="top_glyph" transfer-ownership="none">
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+        <parameter name="bottom_glyph" transfer-ownership="none">
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="font_get_glyph_v_origin"
+              c:identifier="hb_font_get_glyph_v_origin"
+              version="0.9.2">
+      <source-position filename="../src/hb-font.h" line="498"/>
+      <return-value transfer-ownership="none">
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-font.cc"
+               line="938">a font.</doc>
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+        <parameter name="glyph" transfer-ownership="none">
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+        <parameter name="x"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <type name="position_t" c:type="hb_position_t*"/>
+        </parameter>
+        <parameter name="y"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <type name="position_t" c:type="hb_position_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="font_get_h_extents"
+              c:identifier="hb_font_get_h_extents"
+              version="1.1.3">
+      <source-position filename="../src/hb-font.h" line="448"/>
+      <return-value transfer-ownership="none">
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-font.cc"
+               line="721">a font.</doc>
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+        <parameter name="extents"
+                   direction="out"
+                   caller-allocates="1"
+                   transfer-ownership="none">
+          <type name="font_extents_t" c:type="hb_font_extents_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="font_get_nominal_glyph"
+              c:identifier="hb_font_get_nominal_glyph"
+              version="1.2.3">
+      <source-position filename="../src/hb-font.h" line="455"/>
+      <return-value transfer-ownership="none">
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-font.cc"
+               line="780">a font.</doc>
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+        <parameter name="unicode" transfer-ownership="none">
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+        <parameter name="glyph"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <type name="codepoint_t" c:type="hb_codepoint_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <callback name="font_get_nominal_glyph_func_t"
+              c:type="hb_font_get_nominal_glyph_func_t">
+      <source-position filename="../src/hb-font.h" line="120"/>
+      <return-value transfer-ownership="none">
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+        <parameter name="font_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+        <parameter name="unicode" transfer-ownership="none">
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+        <parameter name="glyph" transfer-ownership="none">
+          <type name="codepoint_t" c:type="hb_codepoint_t*"/>
+        </parameter>
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1"
+                   closure="4">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <function name="font_get_nominal_glyphs"
+              c:identifier="hb_font_get_nominal_glyphs"
+              version="2.6.3">
+      <source-position filename="../src/hb-font.h" line="464"/>
+      <return-value transfer-ownership="none">
+        <type name="guint" c:type="unsigned int"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-font.cc"
+               line="800">a font.</doc>
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="first_unicode" transfer-ownership="none">
+          <type name="codepoint_t" c:type="const hb_codepoint_t*"/>
+        </parameter>
+        <parameter name="unicode_stride" transfer-ownership="none">
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="first_glyph" transfer-ownership="none">
+          <type name="codepoint_t" c:type="hb_codepoint_t*"/>
+        </parameter>
+        <parameter name="glyph_stride" transfer-ownership="none">
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <callback name="font_get_nominal_glyphs_func_t"
+              c:type="hb_font_get_nominal_glyphs_func_t">
+      <source-position filename="../src/hb-font.h" line="129"/>
+      <return-value transfer-ownership="none">
+        <type name="guint" c:type="unsigned int"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+        <parameter name="font_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="first_unicode" transfer-ownership="none">
+          <type name="codepoint_t" c:type="const hb_codepoint_t*"/>
+        </parameter>
+        <parameter name="unicode_stride" transfer-ownership="none">
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="first_glyph" transfer-ownership="none">
+          <type name="codepoint_t" c:type="hb_codepoint_t*"/>
+        </parameter>
+        <parameter name="glyph_stride" transfer-ownership="none">
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1"
+                   closure="7">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <function name="font_get_parent"
+              c:identifier="hb_font_get_parent"
+              version="0.9.2">
+      <source-position filename="../src/hb-font.h" line="642"/>
+      <return-value transfer-ownership="none">
+        <type name="font_t" c:type="hb_font_t*"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-font.cc"
+               line="1621">a font.</doc>
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="font_get_ppem"
+              c:identifier="hb_font_get_ppem"
+              version="0.9.2">
+      <source-position filename="../src/hb-font.h" line="684"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-font.cc"
+               line="1814">a font.</doc>
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+        <parameter name="x_ppem"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <type name="guint" c:type="unsigned int*"/>
+        </parameter>
+        <parameter name="y_ppem"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <type name="guint" c:type="unsigned int*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="font_get_ptem"
+              c:identifier="hb_font_get_ptem"
+              version="0.9.2">
+      <doc xml:space="preserve"
+           filename="../src/hb-font.cc"
+           line="1851">Gets the "point size" of the font.  A value of 0 means unset.</doc>
+      <source-position filename="../src/hb-font.h" line="696"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-font.cc"
+             line="1857">Point size.</doc>
+        <type name="gfloat" c:type="float"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-font.cc"
+               line="1853">a font.</doc>
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="font_get_scale"
+              c:identifier="hb_font_get_scale"
+              version="0.9.2">
+      <source-position filename="../src/hb-font.h" line="671"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-font.cc"
+               line="1773">a font.</doc>
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+        <parameter name="x_scale"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <type name="gint" c:type="int*"/>
+        </parameter>
+        <parameter name="y_scale"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <type name="gint" c:type="int*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="font_get_user_data"
+              c:identifier="hb_font_get_user_data"
+              version="0.9.2"
+              introspectable="0">
+      <source-position filename="../src/hb-font.h" line="628"/>
+      <return-value transfer-ownership="none" nullable="1">
+        <type name="gpointer" c:type="void*"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-font.cc"
+               line="1541">a font.</doc>
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+        <parameter name="key" transfer-ownership="none">
+          <type name="user_data_key_t" c:type="hb_user_data_key_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="font_get_v_extents"
+              c:identifier="hb_font_get_v_extents"
+              version="1.1.3">
+      <source-position filename="../src/hb-font.h" line="451"/>
+      <return-value transfer-ownership="none">
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-font.cc"
+               line="739">a font.</doc>
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+        <parameter name="extents"
+                   direction="out"
+                   caller-allocates="1"
+                   transfer-ownership="none">
+          <type name="font_extents_t" c:type="hb_font_extents_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="font_get_var_coords_normalized"
+              c:identifier="hb_font_get_var_coords_normalized"
+              version="1.4.2">
+      <doc xml:space="preserve"
+           filename="../src/hb-font.cc"
+           line="2017">Return value is valid as long as variation coordinates of the font
+are not modified.</doc>
+      <source-position filename="../src/hb-font.h" line="720"/>
+      <return-value transfer-ownership="none">
+        <type name="gint" c:type="const int*"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <type name="guint" c:type="unsigned int*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="font_get_variation_glyph"
+              c:identifier="hb_font_get_variation_glyph"
+              version="1.2.3">
+      <source-position filename="../src/hb-font.h" line="459"/>
+      <return-value transfer-ownership="none">
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-font.cc"
+               line="823">a font.</doc>
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+        <parameter name="unicode" transfer-ownership="none">
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+        <parameter name="variation_selector" transfer-ownership="none">
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+        <parameter name="glyph"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <type name="codepoint_t" c:type="hb_codepoint_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <callback name="font_get_variation_glyph_func_t"
+              c:type="hb_font_get_variation_glyph_func_t">
+      <source-position filename="../src/hb-font.h" line="124"/>
+      <return-value transfer-ownership="none">
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+        <parameter name="font_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+        <parameter name="unicode" transfer-ownership="none">
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+        <parameter name="variation_selector" transfer-ownership="none">
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+        <parameter name="glyph" transfer-ownership="none">
+          <type name="codepoint_t" c:type="hb_codepoint_t*"/>
+        </parameter>
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1"
+                   closure="5">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <function name="font_glyph_from_string"
+              c:identifier="hb_font_glyph_from_string"
+              version="0.9.2">
+      <source-position filename="../src/hb-font.h" line="593"/>
+      <return-value transfer-ownership="none">
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-font.cc"
+               line="1297">a font.</doc>
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+        <parameter name="s" transfer-ownership="none">
+          <array length="2" zero-terminated="0" c:type="const char*">
+            <type name="guint8"/>
+          </array>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="glyph"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <type name="codepoint_t" c:type="hb_codepoint_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="font_glyph_to_string"
+              c:identifier="hb_font_glyph_to_string"
+              version="0.9.2">
+      <source-position filename="../src/hb-font.h" line="588"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-font.cc"
+               line="1277">a font.</doc>
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+        <parameter name="glyph" transfer-ownership="none">
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+        <parameter name="s" transfer-ownership="none">
+          <array length="3" zero-terminated="0" c:type="char*">
+            <type name="utf8" c:type="char"/>
+          </array>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="font_is_immutable"
+              c:identifier="hb_font_is_immutable"
+              version="0.9.2">
+      <source-position filename="../src/hb-font.h" line="635"/>
+      <return-value transfer-ownership="none">
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-font.cc"
+               line="1579">a font.</doc>
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="font_make_immutable"
+              c:identifier="hb_font_make_immutable"
+              version="0.9.2">
+      <source-position filename="../src/hb-font.h" line="632"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-font.cc"
+               line="1559">a font.</doc>
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="font_reference"
+              c:identifier="hb_font_reference"
+              version="0.9.2"
+              introspectable="0">
+      <source-position filename="../src/hb-font.h" line="614"/>
+      <return-value transfer-ownership="full">
+        <type name="font_t" c:type="hb_font_t*"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-font.cc"
+               line="1473">a font.</doc>
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="font_set_face"
+              c:identifier="hb_font_set_face"
+              version="1.4.3">
+      <doc xml:space="preserve"
+           filename="../src/hb-font.cc"
+           line="1635">Sets font-face of @font.</doc>
+      <source-position filename="../src/hb-font.h" line="645"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-font.cc"
+               line="1637">a font.</doc>
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+        <parameter name="face" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-font.cc"
+               line="1638">new face.</doc>
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="font_set_funcs"
+              c:identifier="hb_font_set_funcs"
+              version="0.9.2">
+      <source-position filename="../src/hb-font.h" line="653"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-font.cc"
+               line="1682">a font.</doc>
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+        <parameter name="klass"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="2"
+                   destroy="3">
+          <type name="font_funcs_t" c:type="hb_font_funcs_t*"/>
+        </parameter>
+        <parameter name="font_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+        <parameter name="destroy" transfer-ownership="none" scope="notified">
+          <type name="destroy_func_t" c:type="hb_destroy_func_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="font_set_funcs_data"
+              c:identifier="hb_font_set_funcs_data"
+              version="0.9.2">
+      <source-position filename="../src/hb-font.h" line="660"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-font.cc"
+               line="1719">a font.</doc>
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+        <parameter name="font_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1"
+                   scope="notified"
+                   destroy="2">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+        <parameter name="destroy" transfer-ownership="none" scope="notified">
+          <type name="destroy_func_t" c:type="hb_destroy_func_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="font_set_parent"
+              c:identifier="hb_font_set_parent"
+              version="1.0.5">
+      <doc xml:space="preserve"
+           filename="../src/hb-font.cc"
+           line="1593">Sets parent font of @font.</doc>
+      <source-position filename="../src/hb-font.h" line="638"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-font.cc"
+               line="1595">a font.</doc>
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+        <parameter name="parent" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-font.cc"
+               line="1596">new parent.</doc>
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="font_set_ppem"
+              c:identifier="hb_font_set_ppem"
+              version="0.9.2">
+      <source-position filename="../src/hb-font.h" line="679"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-font.cc"
+               line="1792">a font.</doc>
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+        <parameter name="x_ppem" transfer-ownership="none">
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="y_ppem" transfer-ownership="none">
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="font_set_ptem"
+              c:identifier="hb_font_set_ptem"
+              version="1.6.0">
+      <doc xml:space="preserve"
+           filename="../src/hb-font.cc"
+           line="1831">Sets "point size" of the font.  Set to 0 to unset.
+
+There are 72 points in an inch.</doc>
+      <source-position filename="../src/hb-font.h" line="693"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-font.cc"
+               line="1833">a font.</doc>
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+        <parameter name="ptem" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-font.cc"
+               line="1834">font size in points.</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="font_set_scale"
+              c:identifier="hb_font_set_scale"
+              version="0.9.2">
+      <source-position filename="../src/hb-font.h" line="666"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-font.cc"
+               line="1750">a font.</doc>
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+        <parameter name="x_scale" transfer-ownership="none">
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="y_scale" transfer-ownership="none">
+          <type name="gint" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="font_set_user_data"
+              c:identifier="hb_font_set_user_data"
+              version="0.9.2"
+              introspectable="0">
+      <source-position filename="../src/hb-font.h" line="620"/>
+      <return-value transfer-ownership="none">
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-font.cc"
+               line="1517">a font.</doc>
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+        <parameter name="key" transfer-ownership="none">
+          <type name="user_data_key_t" c:type="hb_user_data_key_t*"/>
+        </parameter>
+        <parameter name="data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+        <parameter name="destroy" transfer-ownership="none">
+          <type name="destroy_func_t" c:type="hb_destroy_func_t"/>
+        </parameter>
+        <parameter name="replace" transfer-ownership="none">
+          <type name="bool_t" c:type="hb_bool_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="font_set_var_coords_design"
+              c:identifier="hb_font_set_var_coords_design"
+              version="1.4.2">
+      <source-position filename="../src/hb-font.h" line="704"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+        <parameter name="coords" transfer-ownership="none">
+          <type name="gfloat" c:type="const float*"/>
+        </parameter>
+        <parameter name="coords_length" transfer-ownership="none">
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="font_set_var_coords_normalized"
+              c:identifier="hb_font_set_var_coords_normalized"
+              version="1.4.2">
+      <source-position filename="../src/hb-font.h" line="715"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+        <parameter name="coords" transfer-ownership="none">
+          <type name="gint" c:type="const int*"/>
+        </parameter>
+        <parameter name="coords_length" transfer-ownership="none">
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="font_set_var_named_instance"
+              c:identifier="hb_font_set_var_named_instance"
+              version="2.6.0">
+      <doc xml:space="preserve"
+           filename="../src/hb-font.cc"
+           line="1950">Sets design coords of a font from a named instance index.</doc>
+      <source-position filename="../src/hb-font.h" line="724"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-font.cc"
+               line="1952">a font.</doc>
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+        <parameter name="instance_index" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-font.cc"
+               line="1953">named instance index.</doc>
+          <type name="guint" c:type="unsigned"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="font_set_variations"
+              c:identifier="hb_font_set_variations"
+              version="1.4.2">
+      <source-position filename="../src/hb-font.h" line="699"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+        <parameter name="variations" transfer-ownership="none">
+          <type name="variation_t" c:type="const hb_variation_t*"/>
+        </parameter>
+        <parameter name="variations_length" transfer-ownership="none">
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="font_subtract_glyph_origin_for_direction"
+              c:identifier="hb_font_subtract_glyph_origin_for_direction"
+              version="0.9.2">
+      <source-position filename="../src/hb-font.h" line="563"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-font.cc"
+               line="1187">a font.</doc>
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+        <parameter name="glyph" transfer-ownership="none">
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+        <parameter name="direction" transfer-ownership="none">
+          <type name="direction_t" c:type="hb_direction_t"/>
+        </parameter>
+        <parameter name="x"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <type name="position_t" c:type="hb_position_t*"/>
+        </parameter>
+        <parameter name="y"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <type name="position_t" c:type="hb_position_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <record name="font_t"
+            c:type="hb_font_t"
+            glib:type-name="hb_font_t"
+            glib:get-type="hb_gobject_font_get_type"
+            c:symbol-prefix="gobject_font">
+      <source-position filename="../src/hb-font.h" line="41"/>
+    </record>
+    <function name="ft_face_create"
+              c:identifier="hb_ft_face_create"
+              version="0.9.2"
+              introspectable="0">
+      <doc xml:space="preserve"
+           filename="../src/hb-ft.cc"
+           line="661">Creates an #hb_face_t face object from the specified FT_Face.
+
+This variant of the function does not provide any life-cycle management.
+
+Most client programs should use hb_ft_face_create_referenced()
+(or, perhaps, hb_ft_face_create_cached()) instead.
+
+If you know you have valid reasons not to use hb_ft_face_create_referenced(),
+then it is the client program's responsibility to destroy @ft_face
+after the #hb_face_t face object has been destroyed.</doc>
+      <source-position filename="../src/hb-ft.h" line="63"/>
+      <return-value transfer-ownership="full">
+        <doc xml:space="preserve"
+             filename="../src/hb-ft.cc"
+             line="677">the new #hb_face_t face object</doc>
+        <type name="face_t" c:type="hb_face_t*"/>
+      </return-value>
+      <parameters>
+        <parameter name="ft_face"
+                   transfer-ownership="none"
+                   scope="notified"
+                   destroy="1">
+          <doc xml:space="preserve"
+               filename="../src/hb-ft.cc"
+               line="663">FT_Face to work upon</doc>
+          <type c:type="FT_Face"/>
+        </parameter>
+        <parameter name="destroy" transfer-ownership="none" scope="notified">
+          <doc xml:space="preserve"
+               filename="../src/hb-ft.cc"
+               line="664">A callback to call when the face object is not needed anymore</doc>
+          <type name="destroy_func_t" c:type="hb_destroy_func_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ft_face_create_cached"
+              c:identifier="hb_ft_face_create_cached"
+              version="0.9.2"
+              introspectable="0">
+      <doc xml:space="preserve"
+           filename="../src/hb-ft.cc"
+           line="737">Creates an #hb_face_t face object from the specified FT_Face.
+
+This variant of the function caches the newly created #hb_face_t
+face object, using the @generic pointer of @ft_face. Subsequent function
+calls that are passed the same @ft_face parameter will have the same
+#hb_face_t returned to them, and that #hb_face_t will be correctly
+reference counted.
+
+However, client programs are still responsible for destroying
+@ft_face after the last #hb_face_t face object has been destroyed.</doc>
+      <source-position filename="../src/hb-ft.h" line="75"/>
+      <return-value transfer-ownership="full">
+        <doc xml:space="preserve"
+             filename="../src/hb-ft.cc"
+             line="752">the new #hb_face_t face object</doc>
+        <type name="face_t" c:type="hb_face_t*"/>
+      </return-value>
+      <parameters>
+        <parameter name="ft_face" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ft.cc"
+               line="739">FT_Face to work upon</doc>
+          <type c:type="FT_Face"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ft_face_create_referenced"
+              c:identifier="hb_ft_face_create_referenced"
+              version="0.9.38"
+              introspectable="0">
+      <doc xml:space="preserve"
+           filename="../src/hb-ft.cc"
+           line="706">Creates an #hb_face_t face object from the specified FT_Face.
+
+This is the preferred variant of the hb_ft_face_create*
+function family, because it calls FT_Reference_Face() on @ft_face,
+ensuring that @ft_face remains alive as long as the resulting
+#hb_face_t face object remains alive. Also calls FT_Done_Face()
+when the #hb_face_t face object is destroyed.
+
+Use this version unless you know you have good reasons not to.</doc>
+      <source-position filename="../src/hb-ft.h" line="85"/>
+      <return-value transfer-ownership="full">
+        <doc xml:space="preserve"
+             filename="../src/hb-ft.cc"
+             line="720">the new #hb_face_t face object</doc>
+        <type name="face_t" c:type="hb_face_t*"/>
+      </return-value>
+      <parameters>
+        <parameter name="ft_face" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ft.cc"
+               line="708">FT_Face to work upon</doc>
+          <type c:type="FT_Face"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ft_font_changed" c:identifier="hb_ft_font_changed">
+      <source-position filename="../src/hb-ft.h" line="127"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ft_font_create"
+              c:identifier="hb_ft_font_create"
+              version="0.9.2"
+              introspectable="0">
+      <doc xml:space="preserve"
+           filename="../src/hb-ft.cc"
+           line="771">Creates an #hb_font_t font object from the specified FT_Face.
+
+&lt;note&gt;Note: You must set the face size on @ft_face before calling
+hb_ft_font_create() on it. Otherwise, HarfBuzz will not pick up
+the face size.&lt;/note&gt;
+
+This variant of the function does not provide any life-cycle management.
+
+Most client programs should use hb_ft_font_create_referenced()
+instead.
+
+If you know you have valid reasons not to use hb_ft_font_create_referenced(),
+then it is the client program's responsibility to destroy @ft_face
+after the #hb_font_t font object has been destroyed.
+
+HarfBuzz will use the @destroy callback on the #hb_font_t font object
+if it is supplied when you use this function. However, even if @destroy
+is provided, it is the client program's responsibility to destroy @ft_face,
+and it is the client program's responsibility to ensure that @ft_face is
+destroyed only after the #hb_font_t font object has been destroyed.</doc>
+      <source-position filename="../src/hb-ft.h" line="102"/>
+      <return-value transfer-ownership="full">
+        <doc xml:space="preserve"
+             filename="../src/hb-ft.cc"
+             line="797">the new #hb_font_t font object</doc>
+        <type name="font_t" c:type="hb_font_t*"/>
+      </return-value>
+      <parameters>
+        <parameter name="ft_face"
+                   transfer-ownership="none"
+                   scope="notified"
+                   destroy="1">
+          <doc xml:space="preserve"
+               filename="../src/hb-ft.cc"
+               line="773">FT_Face to work upon</doc>
+          <type c:type="FT_Face"/>
+        </parameter>
+        <parameter name="destroy" transfer-ownership="none" scope="notified">
+          <doc xml:space="preserve"
+               filename="../src/hb-ft.cc"
+               line="774">A callback to call when the font object is not needed anymore</doc>
+          <type name="destroy_func_t" c:type="hb_destroy_func_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ft_font_create_referenced"
+              c:identifier="hb_ft_font_create_referenced"
+              version="0.9.38"
+              introspectable="0">
+      <doc xml:space="preserve"
+           filename="../src/hb-ft.cc"
+           line="880">Creates an #hb_font_t font object from the specified FT_Face.
+
+&lt;note&gt;Note: You must set the face size on @ft_face before calling
+hb_ft_font_create_references() on it. Otherwise, HarfBuzz will not pick up
+the face size.&lt;/note&gt;
+
+This is the preferred variant of the hb_ft_font_create*
+function family, because it calls FT_Reference_Face() on @ft_face,
+ensuring that @ft_face remains alive as long as the resulting
+#hb_font_t font object remains alive.
+
+Use this version unless you know you have good reasons not to.</doc>
+      <source-position filename="../src/hb-ft.h" line="108"/>
+      <return-value transfer-ownership="full">
+        <doc xml:space="preserve"
+             filename="../src/hb-ft.cc"
+             line="897">the new #hb_font_t font object</doc>
+        <type name="font_t" c:type="hb_font_t*"/>
+      </return-value>
+      <parameters>
+        <parameter name="ft_face" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ft.cc"
+               line="882">FT_Face to work upon</doc>
+          <type c:type="FT_Face"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ft_font_get_face"
+              c:identifier="hb_ft_font_get_face"
+              introspectable="0">
+      <source-position filename="../src/hb-ft.h" line="111"/>
+      <return-value>
+        <type c:type="FT_Face"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ft_font_get_load_flags"
+              c:identifier="hb_ft_font_get_load_flags"
+              version="1.0.5">
+      <doc xml:space="preserve"
+           filename="../src/hb-ft.cc"
+           line="157">Fetches the FT_Load_Glyph load flags of the specified #hb_font_t.
+
+For more information, see
+https://www.freetype.org/freetype2/docs/reference/ft2-base_interface.html#ft_load_xxx</doc>
+      <source-position filename="../src/hb-ft.h" line="123"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-ft.cc"
+             line="166">FT_Load_Glyph flags found</doc>
+        <type name="gint" c:type="int"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ft.cc"
+               line="159">#hb_font_t to work upon</doc>
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ft_font_lock_face"
+              c:identifier="hb_ft_font_lock_face"
+              version="2.6.5"
+              introspectable="0">
+      <source-position filename="../src/hb-ft.h" line="114"/>
+      <return-value>
+        <type c:type="FT_Face"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ft_font_set_funcs"
+              c:identifier="hb_ft_font_set_funcs"
+              version="1.0.5">
+      <doc xml:space="preserve"
+           filename="../src/hb-ft.cc"
+           line="957">Configures the font-functions structure of the specified
+#hb_font_t font object to use FreeType font functions.
+
+In particular, you can use this function to configure an
+existing #hb_face_t face object for use with FreeType font
+functions even if that #hb_face_t face object was initially
+created with hb_face_create(), and therefore was not
+initially configured to use FreeType font functions.
+
+An #hb_face_t face object created with hb_ft_face_create()
+is preconfigured for FreeType font functions and does not
+require this function to be used.
+
+&lt;note&gt;Note: Internally, this function creates an FT_Face.
+&lt;/note&gt;</doc>
+      <source-position filename="../src/hb-ft.h" line="133"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ft.cc"
+               line="959">#hb_font_t to work upon</doc>
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ft_font_set_load_flags"
+              c:identifier="hb_ft_font_set_load_flags"
+              version="1.0.5">
+      <doc xml:space="preserve"
+           filename="../src/hb-ft.cc"
+           line="131">Sets the FT_Load_Glyph load flags for the specified #hb_font_t.
+
+For more information, see
+https://www.freetype.org/freetype2/docs/reference/ft2-base_interface.html#ft_load_xxx</doc>
+      <source-position filename="../src/hb-ft.h" line="120"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ft.cc"
+               line="133">#hb_font_t to work upon</doc>
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+        <parameter name="load_flags" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ft.cc"
+               line="134">The FreeType load flags to set</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ft_font_unlock_face"
+              c:identifier="hb_ft_font_unlock_face"
+              version="2.6.5">
+      <source-position filename="../src/hb-ft.h" line="117"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="glib_blob_create"
+              c:identifier="hb_glib_blob_create"
+              version="0.9.38">
+      <doc xml:space="preserve"
+           filename="../src/hb-glib.cc"
+           line="282">Creates an #hb_blob_t blob from the specified
+GBytes data structure.</doc>
+      <source-position filename="../src/hb-glib.h" line="51"/>
+      <return-value transfer-ownership="full">
+        <doc xml:space="preserve"
+             filename="../src/hb-glib.cc"
+             line="289">the new #hb_blob_t blob object</doc>
+        <type name="blob_t" c:type="hb_blob_t*"/>
+      </return-value>
+      <parameters>
+        <parameter name="gbytes" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-glib.cc"
+               line="284">the GBytes structure to work upon</doc>
+          <type name="GLib.Bytes" c:type="GBytes*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="glib_get_unicode_funcs"
+              c:identifier="hb_glib_get_unicode_funcs"
+              version="0.9.38">
+      <doc xml:space="preserve"
+           filename="../src/hb-glib.cc"
+           line="256">Fetches a Unicode-functions structure that is populated
+with the appropriate GLib function for each method.</doc>
+      <source-position filename="../src/hb-glib.h" line="47"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-glib.cc"
+             line="262">a pointer to the #hb_unicode_funcs_t Unicode-functions structure</doc>
+        <type name="unicode_funcs_t" c:type="hb_unicode_funcs_t*"/>
+      </return-value>
+    </function>
+    <function name="glib_script_from_script"
+              c:identifier="hb_glib_script_from_script"
+              version="0.9.38">
+      <doc xml:space="preserve"
+           filename="../src/hb-glib.cc"
+           line="69">Fetches the GUnicodeScript identifier that corresponds to the
+specified #hb_script_t script.</doc>
+      <source-position filename="../src/hb-glib.h" line="43"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-glib.cc"
+             line="76">the GUnicodeScript identifier found</doc>
+        <type name="GLib.UnicodeScript" c:type="GUnicodeScript"/>
+      </return-value>
+      <parameters>
+        <parameter name="script" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-glib.cc"
+               line="71">The #hb_script_t to query</doc>
+          <type name="script_t" c:type="hb_script_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="glib_script_to_script"
+              c:identifier="hb_glib_script_to_script"
+              version="0.9.38">
+      <doc xml:space="preserve"
+           filename="../src/hb-glib.cc"
+           line="52">Fetches the #hb_script_t script that corresponds to the
+specified GUnicodeScript identifier.</doc>
+      <source-position filename="../src/hb-glib.h" line="40"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-glib.cc"
+             line="59">the #hb_script_t script found</doc>
+        <type name="script_t" c:type="hb_script_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="script" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-glib.cc"
+               line="54">The GUnicodeScript identifier to query</doc>
+          <type name="GLib.UnicodeScript" c:type="GUnicodeScript"/>
+        </parameter>
+      </parameters>
+    </function>
+    <record name="glyph_extents_t" c:type="hb_glyph_extents_t">
+      <source-position filename="../src/hb-font.h" line="109"/>
+      <field name="x_bearing" writable="1">
+        <type name="position_t" c:type="hb_position_t"/>
+      </field>
+      <field name="y_bearing" writable="1">
+        <type name="position_t" c:type="hb_position_t"/>
+      </field>
+      <field name="width" writable="1">
+        <type name="position_t" c:type="hb_position_t"/>
+      </field>
+      <field name="height" writable="1">
+        <type name="position_t" c:type="hb_position_t"/>
+      </field>
+    </record>
+    <bitfield name="glyph_flags_t"
+              version="1.5.0"
+              glib:type-name="hb_glyph_flags_t"
+              glib:get-type="hb_gobject_glyph_flags_get_type"
+              c:type="hb_glyph_flags_t">
+      <member name="unsafe_to_break"
+              value="1"
+              c:identifier="HB_GLYPH_FLAG_UNSAFE_TO_BREAK"
+              glib:nick="unsafe-to-break">
+        <doc xml:space="preserve"
+             filename="../src/hb-buffer.h"
+             line="77">Indicates that if input text is broken at the
+				   beginning of the cluster this glyph is part of,
+				   then both sides need to be re-shaped, as the
+				   result might be different.  On the flip side,
+				   it means that when this flag is not present,
+				   then it's safe to break the glyph-run at the
+				   beginning of this cluster, and the two sides
+				   represent the exact same result one would get
+				   if breaking input text at the beginning of
+				   this cluster and shaping the two sides
+				   separately.  This can be used to optimize
+				   paragraph layout, by avoiding re-shaping
+				   of each line after line-breaking, or limiting
+				   the reshaping to a small piece around the
+				   breaking point only.</doc>
+      </member>
+      <member name="defined"
+              value="1"
+              c:identifier="HB_GLYPH_FLAG_DEFINED"
+              glib:nick="defined">
+        <doc xml:space="preserve"
+             filename="../src/hb-buffer.h"
+             line="92">All the currently defined flags.</doc>
+      </member>
+    </bitfield>
+    <function name="glyph_info_get_glyph_flags"
+              c:identifier="hb_glyph_info_get_glyph_flags"
+              version="1.5.0">
+      <doc xml:space="preserve"
+           filename="../src/hb-buffer.cc"
+           line="1407">Returns glyph flags encoded within a #hb_glyph_info_t.</doc>
+      <source-position filename="../src/hb-buffer.h" line="103"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-buffer.cc"
+             line="1413">The #hb_glyph_flags_t encoded within @info.</doc>
+        <type name="glyph_flags_t" c:type="hb_glyph_flags_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="info" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="1409">a #hb_glyph_info_t.</doc>
+          <type name="glyph_info_t" c:type="const hb_glyph_info_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <record name="glyph_info_t"
+            c:type="hb_glyph_info_t"
+            glib:type-name="hb_glyph_info_t"
+            glib:get-type="hb_gobject_glyph_info_get_type"
+            c:symbol-prefix="gobject_glyph_info">
+      <doc xml:space="preserve"
+           filename="../src/hb-buffer.h"
+           line="43">The #hb_glyph_info_t is the structure that holds information about the
+glyphs and their relation to input text.</doc>
+      <source-position filename="../src/hb-buffer.h" line="73"/>
+      <field name="codepoint" writable="1">
+        <doc xml:space="preserve"
+             filename="../src/hb-buffer.h"
+             line="45">either a Unicode code point (before shaping) or a glyph index
+            (after shaping).</doc>
+        <type name="codepoint_t" c:type="hb_codepoint_t"/>
+      </field>
+      <field name="mask" readable="0" private="1">
+        <type name="mask_t" c:type="hb_mask_t"/>
+      </field>
+      <field name="cluster" writable="1">
+        <doc xml:space="preserve"
+             filename="../src/hb-buffer.h"
+             line="47">the index of the character in the original text that corresponds
+          to this #hb_glyph_info_t, or whatever the client passes to
+          hb_buffer_add(). More than one #hb_glyph_info_t can have the same
+          @cluster value, if they resulted from the same character (e.g. one
+          to many glyph substitution), and when more than one character gets
+          merged in the same glyph (e.g. many to one glyph substitution) the
+          #hb_glyph_info_t will have the smallest cluster value of them.
+          By default some characters are merged into the same cluster
+          (e.g. combining marks have the same cluster as their bases)
+          even if they are separate glyphs, hb_buffer_set_cluster_level()
+          allow selecting more fine-grained cluster handling.</doc>
+        <type name="guint32" c:type="uint32_t"/>
+      </field>
+      <field name="var1" readable="0" private="1">
+        <type name="var_int_t" c:type="hb_var_int_t"/>
+      </field>
+      <field name="var2" readable="0" private="1">
+        <type name="var_int_t" c:type="hb_var_int_t"/>
+      </field>
+    </record>
+    <record name="glyph_position_t"
+            c:type="hb_glyph_position_t"
+            glib:type-name="hb_glyph_position_t"
+            glib:get-type="hb_gobject_glyph_position_get_type"
+            c:symbol-prefix="gobject_glyph_position">
+      <doc xml:space="preserve"
+           filename="../src/hb-buffer.h"
+           line="109">The #hb_glyph_position_t is the structure that holds the positions of the
+glyph in both horizontal and vertical directions. All positions in
+#hb_glyph_position_t are relative to the current point.</doc>
+      <source-position filename="../src/hb-buffer.h" line="133"/>
+      <field name="x_advance" writable="1">
+        <doc xml:space="preserve"
+             filename="../src/hb-buffer.h"
+             line="111">how much the line advances after drawing this glyph when setting
+            text in horizontal direction.</doc>
+        <type name="position_t" c:type="hb_position_t"/>
+      </field>
+      <field name="y_advance" writable="1">
+        <doc xml:space="preserve"
+             filename="../src/hb-buffer.h"
+             line="113">how much the line advances after drawing this glyph when setting
+            text in vertical direction.</doc>
+        <type name="position_t" c:type="hb_position_t"/>
+      </field>
+      <field name="x_offset" writable="1">
+        <doc xml:space="preserve"
+             filename="../src/hb-buffer.h"
+             line="115">how much the glyph moves on the X-axis before drawing it, this
+           should not affect how much the line advances.</doc>
+        <type name="position_t" c:type="hb_position_t"/>
+      </field>
+      <field name="y_offset" writable="1">
+        <doc xml:space="preserve"
+             filename="../src/hb-buffer.h"
+             line="117">how much the glyph moves on the Y-axis before drawing it, this
+           should not affect how much the line advances.</doc>
+        <type name="position_t" c:type="hb_position_t"/>
+      </field>
+      <field name="var" readable="0" private="1">
+        <type name="var_int_t" c:type="hb_var_int_t"/>
+      </field>
+    </record>
+    <function name="graphite2_face_get_gr_face"
+              c:identifier="hb_graphite2_face_get_gr_face"
+              version="0.9.10"
+              introspectable="0">
+      <doc xml:space="preserve"
+           filename="../src/hb-graphite2.cc"
+           line="159">Fetches the Graphite2 gr_face corresponding to the specified
+#hb_face_t face object.</doc>
+      <source-position filename="../src/hb-graphite2.h" line="48"/>
+      <return-value>
+        <doc xml:space="preserve"
+             filename="../src/hb-graphite2.cc"
+             line="166">the gr_face found</doc>
+        <type c:type="gr_face*"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-graphite2.cc"
+               line="161">@hb_face_t to query</doc>
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="graphite2_font_get_gr_font"
+              c:identifier="hb_graphite2_font_get_gr_font"
+              version="0.9.10"
+              introspectable="0"
+              deprecated="1"
+              deprecated-version="1.4.2">
+      <source-position filename="../src/hb-graphite2.h" line="53"/>
+      <return-value>
+        <type c:type="gr_font*"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <docsection name="hb-aat-layout">
+      <doc xml:space="preserve"
+           filename="../src/hb-aat-layout.cc"
+           line="76">Functions for querying OpenType Layout features in the font face.</doc>
+    </docsection>
+    <docsection name="hb-blob">
+      <doc xml:space="preserve"
+           filename="../src/hb-blob.cc"
+           line="42">Blobs wrap a chunk of binary data to handle lifecycle management of data
+while it is passed between client and HarfBuzz.  Blobs are primarily used
+to create font faces, but also to access font face tables, as well as
+pass around other binary data.</doc>
+    </docsection>
+    <docsection name="hb-buffer">
+      <doc xml:space="preserve"
+           filename="../src/hb-buffer.cc"
+           line="34">Buffers serve dual role in HarfBuzz; they hold the input characters that are
+passed to hb_shape(), and after shaping they hold the output glyphs.</doc>
+    </docsection>
+    <docsection name="hb-common">
+      <doc xml:space="preserve"
+           filename="../src/hb-common.cc"
+           line="38">Common data types used across HarfBuzz are defined here.</doc>
+    </docsection>
+    <docsection name="hb-deprecated">
+      <doc xml:space="preserve"
+           filename="../src/hb-deprecated.h"
+           line="40">These API have been deprecated in favor of newer API, or because they
+were deemed unnecessary.</doc>
+    </docsection>
+    <docsection name="hb-face">
+      <doc xml:space="preserve"
+           filename="../src/hb-face.cc"
+           line="38">Font face is objects represent a single face in a font family.
+More exactly, a font face represents a single face in a binary font file.
+Font faces are typically built from a binary blob and a face index.
+Font faces are used to create fonts.</doc>
+    </docsection>
+    <docsection name="hb-font">
+      <doc xml:space="preserve"
+           filename="../src/hb-font.cc"
+           line="40">Font objects represent a font face at a certain size and other
+parameters (pixels per EM, points per EM, variation settings.)
+Fonts are created from font faces, and are used as input to
+hb_shape() among other things.</doc>
+    </docsection>
+    <docsection name="hb-ft">
+      <doc xml:space="preserve"
+           filename="../src/hb-ft.cc"
+           line="45">Functions for using HarfBuzz with the FreeType library.
+
+HarfBuzz supports using FreeType to provide face and
+font data.
+
+&lt;note&gt;Note that FreeType is not thread-safe, therefore these
+functions are not thread-safe either.&lt;/note&gt;</doc>
+    </docsection>
+    <docsection name="hb-glib">
+      <doc xml:space="preserve"
+           filename="../src/hb-glib.cc"
+           line="38">Functions for using HarfBuzz with the GLib library.
+
+HarfBuzz supports using GLib to provide Unicode data, by attaching
+GLib functions to the virtual methods in a #hb_unicode_funcs_t function
+structure.</doc>
+    </docsection>
+    <docsection name="hb-gobject">
+      <doc xml:space="preserve"
+           filename="../src/hb-gobject-structs.cc"
+           line="32">Support for using HarfBuzz with the GObject library to provide
+type data.
+
+The types and functions listed here are solely a linkage between
+HarfBuzz's public data types and the GTypes used by the GObject framework.
+HarfBuzz uses GObject introspection to generate its Python bindings
+(and potentially other language bindings); client programs should never need
+to access the GObject-integration mechanics.
+
+For client programs using the GNOME and GTK software stack, please see the
+GLib and FreeType integration pages.</doc>
+    </docsection>
+    <docsection name="hb-graphite2">
+      <doc xml:space="preserve"
+           filename="../src/hb-graphite2.cc"
+           line="42">Functions for using HarfBuzz with fonts that include Graphite features.
+
+For Graphite features to work, you must be sure that HarfBuzz was compiled
+with the `graphite2` shaping engine enabled. Currently, the default is to
+not enable `graphite2` shaping.</doc>
+    </docsection>
+    <docsection name="hb-map">
+      <doc xml:space="preserve"
+           filename="../src/hb-map.cc"
+           line="30">Map objects are integer-to-integer hash-maps.  Currently they are
+not used in the HarfBuzz public API, but are provided for client's
+use if desired.</doc>
+    </docsection>
+    <docsection name="hb-ot-color">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-color.cc"
+           line="44">Functions for fetching color-font information from OpenType font faces.
+
+HarfBuzz supports `COLR`/`CPAL`, `sbix`, `CBDT`, and `SVG` color fonts.</doc>
+    </docsection>
+    <docsection name="hb-ot-font">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-font.cc"
+           line="50">Functions for using OpenType fonts with hb_shape().  Note that fonts returned
+by hb_font_create() default to using these functions, so most clients would
+never need to call these functions directly.</doc>
+    </docsection>
+    <docsection name="hb-ot-layout">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-layout.cc"
+           line="57">Functions for querying OpenType Layout features in the font face.</doc>
+    </docsection>
+    <docsection name="hb-ot-math">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-math.cc"
+           line="34">Functions for fetching mathematics layout data from OpenType fonts.
+
+HarfBuzz itself does not implement a math layout solution. The
+functions and types provided can be used by client programs to access
+the font data necessary for typesetting OpenType Math layout.</doc>
+    </docsection>
+    <docsection name="hb-ot-meta">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-meta.cc"
+           line="31">Functions for fetching metadata from fonts.</doc>
+    </docsection>
+    <docsection name="hb-ot-name">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-name.cc"
+           line="36">Functions for fetching name strings from OpenType fonts.</doc>
+    </docsection>
+    <docsection name="hb-ot-shape">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-shape.cc"
+           line="61">Support functions for OpenType shaping related queries.</doc>
+    </docsection>
+    <docsection name="hb-ot-var">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-var.cc"
+           line="38">Functions for fetching information about OpenType Variable Fonts.</doc>
+    </docsection>
+    <docsection name="hb-set">
+      <doc xml:space="preserve"
+           filename="../src/hb-set.cc"
+           line="30">Set objects represent a mathematical set of integer values.  They are
+used in non-shaping API to query certain set of characters or glyphs,
+or other integer values.</doc>
+    </docsection>
+    <docsection name="hb-shape">
+      <doc xml:space="preserve"
+           filename="../src/hb-shape.cc"
+           line="38">Shaping is the central operation of HarfBuzz. Shaping operates on buffers,
+which are sequences of Unicode characters that use the same font and have
+the same text direction, script, and language. After shaping the buffer
+contains the output glyphs and their positions.</doc>
+    </docsection>
+    <docsection name="hb-shape-plan">
+      <doc xml:space="preserve"
+           filename="../src/hb-shape-plan.cc"
+           line="34">Shape plans are not used for shaping directly, but can be access to query
+certain information about how shaping will perform given a set of input
+parameters (script, language, direction, features, etc.)
+Most client would not need to deal with shape plans directly.</doc>
+    </docsection>
+    <docsection name="hb-unicode">
+      <doc xml:space="preserve"
+           filename="../src/hb-unicode.cc"
+           line="36">Unicode functions are used to access Unicode character properties.
+Client can pass its own Unicode functions to HarfBuzz, or access
+the built-in Unicode functions that come with HarfBuzz.
+
+With the Unicode functions, one can query variour Unicode character
+properties, such as General Category, Script, Combining Class, etc.</doc>
+    </docsection>
+    <docsection name="hb-version">
+      <doc xml:space="preserve"
+           filename="../src/hb-common.cc"
+           line="602">These functions and macros allow accessing version of the HarfBuzz
+library used at compile- as well as run-time, and to direct code
+conditionally based on those versions, again, at compile- or run-time.</doc>
+    </docsection>
+    <function name="language_from_string"
+              c:identifier="hb_language_from_string"
+              version="0.9.2">
+      <doc xml:space="preserve"
+           filename="../src/hb-common.cc"
+           line="332">Converts @str representing a BCP 47 language tag to the corresponding
+#hb_language_t.</doc>
+      <source-position filename="../src/hb-common.h" line="165"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-common.cc"
+             line="341">
+The #hb_language_t corresponding to the BCP 47 language tag.</doc>
+        <type name="language_t" c:type="hb_language_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="str" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-common.cc"
+               line="334">a string representing
+      a BCP 47 language tag</doc>
+          <array length="1" zero-terminated="0" c:type="const char*">
+            <type name="guint8"/>
+          </array>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-common.cc"
+               line="336">length of the @str, or -1 if it is %NULL-terminated.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="language_get_default"
+              c:identifier="hb_language_get_default"
+              version="0.9.2">
+      <doc xml:space="preserve"
+           filename="../src/hb-common.cc"
+           line="388">Get default language from current locale.
+
+Note that the first time this function is called, it calls
+"setlocale (LC_CTYPE, nullptr)" to fetch current locale.  The underlying
+setlocale function is, in many implementations, NOT threadsafe.  To avoid
+problems, call this function once before multiple threads can call it.
+This function is only used from hb_buffer_guess_segment_properties() by
+HarfBuzz itself.</doc>
+      <source-position filename="../src/hb-common.h" line="173"/>
+      <return-value transfer-ownership="none">
+        <type name="language_t" c:type="hb_language_t"/>
+      </return-value>
+    </function>
+    <record name="language_t" c:type="hb_language_t" disguised="1">
+      <source-position filename="../src/hb-common.h" line="162"/>
+      <method name="_string"
+              c:identifier="hb_language_to_string"
+              moved-to="language_to_string"
+              version="0.9.2">
+        <doc xml:space="preserve"
+             filename="../src/hb-common.cc"
+             line="368">See hb_language_from_string().</doc>
+        <source-position filename="../src/hb-common.h" line="168"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-common.cc"
+               line="374">
+A %NULL-terminated string representing the @language. Must not be freed by
+the caller.</doc>
+          <type name="utf8" c:type="const char*"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="language" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="../src/hb-common.cc"
+                 line="370">an #hb_language_t to convert.</doc>
+            <type name="language_t" c:type="hb_language_t"/>
+          </instance-parameter>
+        </parameters>
+      </method>
+    </record>
+    <function name="language_to_string"
+              c:identifier="hb_language_to_string"
+              version="0.9.2">
+      <doc xml:space="preserve"
+           filename="../src/hb-common.cc"
+           line="368">See hb_language_from_string().</doc>
+      <source-position filename="../src/hb-common.h" line="168"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-common.cc"
+             line="374">
+A %NULL-terminated string representing the @language. Must not be freed by
+the caller.</doc>
+        <type name="utf8" c:type="const char*"/>
+      </return-value>
+      <parameters>
+        <parameter name="language" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-common.cc"
+               line="370">an #hb_language_t to convert.</doc>
+          <type name="language_t" c:type="hb_language_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="map_allocation_successful"
+              c:identifier="hb_map_allocation_successful"
+              version="1.7.7">
+      <source-position filename="../src/hb-map.h" line="73"/>
+      <return-value transfer-ownership="none">
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="map" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-map.cc"
+               line="146">a map.</doc>
+          <type name="map_t" c:type="const hb_map_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="map_clear" c:identifier="hb_map_clear" version="1.7.7">
+      <source-position filename="../src/hb-map.h" line="76"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="map" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-map.cc"
+               line="230">a map.</doc>
+          <type name="map_t" c:type="hb_map_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="map_create" c:identifier="hb_map_create" version="1.7.7">
+      <source-position filename="../src/hb-map.h" line="48"/>
+      <return-value transfer-ownership="full">
+        <type name="map_t" c:type="hb_map_t*"/>
+      </return-value>
+    </function>
+    <function name="map_del" c:identifier="hb_map_del" version="1.7.7">
+      <source-position filename="../src/hb-map.h" line="94"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="map" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-map.cc"
+               line="197">a map.</doc>
+          <type name="map_t" c:type="hb_map_t*"/>
+        </parameter>
+        <parameter name="key" transfer-ownership="none">
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="map_destroy"
+              c:identifier="hb_map_destroy"
+              version="1.7.7"
+              introspectable="0">
+      <source-position filename="../src/hb-map.h" line="57"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="map" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-map.cc"
+               line="91">a map.</doc>
+          <type name="map_t" c:type="hb_map_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="map_get" c:identifier="hb_map_get" version="1.7.7">
+      <source-position filename="../src/hb-map.h" line="90"/>
+      <return-value transfer-ownership="none">
+        <type name="codepoint_t" c:type="hb_codepoint_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="map" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-map.cc"
+               line="181">a map.</doc>
+          <type name="map_t" c:type="const hb_map_t*"/>
+        </parameter>
+        <parameter name="key" transfer-ownership="none">
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="map_get_empty"
+              c:identifier="hb_map_get_empty"
+              version="1.7.7">
+      <source-position filename="../src/hb-map.h" line="51"/>
+      <return-value transfer-ownership="full">
+        <type name="map_t" c:type="hb_map_t*"/>
+      </return-value>
+    </function>
+    <function name="map_get_population"
+              c:identifier="hb_map_get_population"
+              version="1.7.7">
+      <source-position filename="../src/hb-map.h" line="82"/>
+      <return-value transfer-ownership="none">
+        <type name="guint" c:type="unsigned int"/>
+      </return-value>
+      <parameters>
+        <parameter name="map" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-map.cc"
+               line="258">a map.</doc>
+          <type name="map_t" c:type="const hb_map_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="map_get_user_data"
+              c:identifier="hb_map_get_user_data"
+              version="1.7.7"
+              introspectable="0">
+      <source-position filename="../src/hb-map.h" line="67"/>
+      <return-value transfer-ownership="none" nullable="1">
+        <type name="gpointer" c:type="void*"/>
+      </return-value>
+      <parameters>
+        <parameter name="map" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-map.cc"
+               line="129">a map.</doc>
+          <type name="map_t" c:type="hb_map_t*"/>
+        </parameter>
+        <parameter name="key" transfer-ownership="none">
+          <type name="user_data_key_t" c:type="hb_user_data_key_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="map_has" c:identifier="hb_map_has" version="1.7.7">
+      <source-position filename="../src/hb-map.h" line="98"/>
+      <return-value transfer-ownership="none">
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="map" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-map.cc"
+               line="213">a map.</doc>
+          <type name="map_t" c:type="const hb_map_t*"/>
+        </parameter>
+        <parameter name="key" transfer-ownership="none">
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="map_is_empty"
+              c:identifier="hb_map_is_empty"
+              version="1.7.7">
+      <source-position filename="../src/hb-map.h" line="79"/>
+      <return-value transfer-ownership="none">
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="map" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-map.cc"
+               line="244">a map.</doc>
+          <type name="map_t" c:type="const hb_map_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="map_reference"
+              c:identifier="hb_map_reference"
+              version="1.7.7"
+              introspectable="0">
+      <source-position filename="../src/hb-map.h" line="54"/>
+      <return-value transfer-ownership="full">
+        <type name="map_t" c:type="hb_map_t*"/>
+      </return-value>
+      <parameters>
+        <parameter name="map" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-map.cc"
+               line="77">a map.</doc>
+          <type name="map_t" c:type="hb_map_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="map_set" c:identifier="hb_map_set" version="1.7.7">
+      <source-position filename="../src/hb-map.h" line="85"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="map" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-map.cc"
+               line="163">a map.</doc>
+          <type name="map_t" c:type="hb_map_t*"/>
+        </parameter>
+        <parameter name="key" transfer-ownership="none">
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="map_set_user_data"
+              c:identifier="hb_map_set_user_data"
+              version="1.7.7"
+              introspectable="0">
+      <source-position filename="../src/hb-map.h" line="60"/>
+      <return-value transfer-ownership="none">
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="map" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-map.cc"
+               line="107">a map.</doc>
+          <type name="map_t" c:type="hb_map_t*"/>
+        </parameter>
+        <parameter name="key" transfer-ownership="none">
+          <type name="user_data_key_t" c:type="hb_user_data_key_t*"/>
+        </parameter>
+        <parameter name="data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+        <parameter name="destroy" transfer-ownership="none">
+          <type name="destroy_func_t" c:type="hb_destroy_func_t"/>
+        </parameter>
+        <parameter name="replace" transfer-ownership="none">
+          <type name="bool_t" c:type="hb_bool_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <record name="map_t"
+            c:type="hb_map_t"
+            glib:type-name="hb_map_t"
+            glib:get-type="hb_gobject_map_get_type"
+            c:symbol-prefix="gobject_map">
+      <source-position filename="../src/hb-map.h" line="44"/>
+    </record>
+    <enumeration name="memory_mode_t"
+                 glib:type-name="hb_memory_mode_t"
+                 glib:get-type="hb_gobject_memory_mode_get_type"
+                 c:type="hb_memory_mode_t">
+      <member name="duplicate"
+              value="0"
+              c:identifier="HB_MEMORY_MODE_DUPLICATE"
+              glib:nick="duplicate">
+      </member>
+      <member name="readonly"
+              value="1"
+              c:identifier="HB_MEMORY_MODE_READONLY"
+              glib:nick="readonly">
+      </member>
+      <member name="writable"
+              value="2"
+              c:identifier="HB_MEMORY_MODE_WRITABLE"
+              glib:nick="writable">
+      </member>
+      <member name="readonly_may_make_writable"
+              value="3"
+              c:identifier="HB_MEMORY_MODE_READONLY_MAY_MAKE_WRITABLE"
+              glib:nick="readonly-may-make-writable">
+      </member>
+    </enumeration>
+    <function name="ot_color_glyph_get_layers"
+              c:identifier="hb_ot_color_glyph_get_layers"
+              version="2.1.0">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-color.cc"
+           line="208">Fetches a list of all color layers for the specified glyph index in the specified
+face. The list returned will begin at the offset provided.</doc>
+      <source-position filename="../src/hb-ot-color.h" line="110"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-color.cc"
+             line="220">Total number of layers available for the glyph index queried</doc>
+        <type name="guint" c:type="unsigned int"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-color.cc"
+               line="210">#hb_face_t to work upon</doc>
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+        <parameter name="glyph" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-color.cc"
+               line="211">The glyph index to query</doc>
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+        <parameter name="start_offset" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-color.cc"
+               line="212">offset of the first layer to retrieve</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="layer_count"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   optional="1"
+                   allow-none="1">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-color.cc"
+               line="213">Input = the maximum number of layers to return;
+        Output = the actual number of layers returned (may be zero)</doc>
+          <type name="guint" c:type="unsigned int*"/>
+        </parameter>
+        <parameter name="layers"
+                   direction="out"
+                   caller-allocates="1"
+                   transfer-ownership="none"
+                   nullable="1">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-color.cc"
+               line="215">The array of layers found</doc>
+          <array length="3" zero-terminated="0" c:type="hb_ot_color_layer_t*">
+            <type name="ot_color_layer_t" c:type="hb_ot_color_layer_t"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ot_color_glyph_reference_png"
+              c:identifier="hb_ot_color_glyph_reference_png"
+              version="2.1.0">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-color.cc"
+           line="293">Fetches the PNG image for a glyph. This function takes a font object, not a face object,
+as input. To get an optimally sized PNG blob, the UPEM value must be set on the @font
+object. If UPEM is unset, the blob returned will be the largest PNG available.</doc>
+      <source-position filename="../src/hb-ot-color.h" line="134"/>
+      <return-value transfer-ownership="full">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-color.cc"
+             line="302">An #hb_blob_t containing the PNG image for the glyph, if available</doc>
+        <type name="blob_t" c:type="hb_blob_t*"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-color.cc"
+               line="295">#hb_font_t to work upon</doc>
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+        <parameter name="glyph" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-color.cc"
+               line="296">a glyph index</doc>
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ot_color_glyph_reference_svg"
+              c:identifier="hb_ot_color_glyph_reference_svg"
+              version="2.1.0">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-color.cc"
+           line="255">Fetches the SVG document for a glyph. The blob may be either plain text or gzip-encoded.</doc>
+      <source-position filename="../src/hb-ot-color.h" line="124"/>
+      <return-value transfer-ownership="full">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-color.cc"
+             line="262">An #hb_blob_t containing the SVG document of the glyph, if available</doc>
+        <type name="blob_t" c:type="hb_blob_t*"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-color.cc"
+               line="257">#hb_face_t to work upon</doc>
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+        <parameter name="glyph" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-color.cc"
+               line="258">a svg glyph index</doc>
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ot_color_has_layers"
+              c:identifier="hb_ot_color_has_layers"
+              version="2.1.0">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-color.cc"
+           line="192">Tests whether a face includes any `COLR` color layers.</doc>
+      <source-position filename="../src/hb-ot-color.h" line="94"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-color.cc"
+             line="198">true if data found, false otherwise</doc>
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-color.cc"
+               line="194">#hb_face_t to work upon</doc>
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ot_color_has_palettes"
+              c:identifier="hb_ot_color_has_palettes"
+              version="2.1.0">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-color.cc"
+           line="61">Tests whether a face includes a `CPAL` color-palette table.</doc>
+      <source-position filename="../src/hb-ot-color.h" line="47"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-color.cc"
+             line="67">true if data found, false otherwise</doc>
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-color.cc"
+               line="63">#hb_face_t to work upon</doc>
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ot_color_has_png"
+              c:identifier="hb_ot_color_has_png"
+              version="2.1.0">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-color.cc"
+           line="277">Tests whether a face has PNG glyph images (either in `CBDT` or `sbix` tables).</doc>
+      <source-position filename="../src/hb-ot-color.h" line="131"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-color.cc"
+             line="283">true if data found, false otherwise</doc>
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-color.cc"
+               line="279">#hb_face_t to work upon</doc>
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ot_color_has_svg"
+              c:identifier="hb_ot_color_has_svg"
+              version="2.1.0">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-color.cc"
+           line="239">Tests whether a face includes any `SVG` glyph images.</doc>
+      <source-position filename="../src/hb-ot-color.h" line="121"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-color.cc"
+             line="245">true if data found, false otherwise.</doc>
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-color.cc"
+               line="241">#hb_face_t to work upon.</doc>
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <record name="ot_color_layer_t"
+            c:type="hb_ot_color_layer_t"
+            version="2.1.0">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-color.h"
+           line="96">Pairs of glyph and color index.</doc>
+      <source-position filename="../src/hb-ot-color.h" line="107"/>
+      <field name="glyph" writable="1">
+        <type name="codepoint_t" c:type="hb_codepoint_t"/>
+      </field>
+      <field name="color_index" writable="1">
+        <type name="guint" c:type="unsigned int"/>
+      </field>
+    </record>
+    <function name="ot_color_palette_color_get_name_id"
+              c:identifier="hb_ot_color_palette_color_get_name_id"
+              version="2.1.0">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-color.cc"
+           line="116">Fetches the `name` table Name ID that provides display names for
+the specificed color in a face's `CPAL` color palette.
+
+Display names can be generic (e.g., "Background") or specific
+(e.g., "Eye color").</doc>
+      <source-position filename="../src/hb-ot-color.h" line="57"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-color.cc"
+             line="127">the Name ID found for the color.</doc>
+        <type name="ot_name_id_t" c:type="hb_ot_name_id_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-color.cc"
+               line="118">#hb_face_t to work upon</doc>
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+        <parameter name="color_index" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-color.cc"
+               line="119">The index of the color</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <bitfield name="ot_color_palette_flags_t"
+              version="2.1.0"
+              glib:type-name="hb_ot_color_palette_flags_t"
+              glib:get-type="hb_gobject_ot_color_palette_flags_get_type"
+              c:type="hb_ot_color_palette_flags_t">
+      <member name="default"
+              value="0"
+              c:identifier="HB_OT_COLOR_PALETTE_FLAG_DEFAULT"
+              glib:nick="default">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-color.h"
+             line="62">Default indicating that there is nothing special
+  to note about a color palette.</doc>
+      </member>
+      <member name="usable_with_light_background"
+              value="1"
+              c:identifier="HB_OT_COLOR_PALETTE_FLAG_USABLE_WITH_LIGHT_BACKGROUND"
+              glib:nick="usable-with-light-background">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-color.h"
+             line="64">Flag indicating that the color
+  palette is appropriate to use when displaying the font on a light background such as white.</doc>
+      </member>
+      <member name="usable_with_dark_background"
+              value="2"
+              c:identifier="HB_OT_COLOR_PALETTE_FLAG_USABLE_WITH_DARK_BACKGROUND"
+              glib:nick="usable-with-dark-background">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-color.h"
+             line="66">Flag indicating that the color
+  palette is appropriate to use when displaying the font on a dark background such as black.</doc>
+      </member>
+    </bitfield>
+    <function name="ot_color_palette_get_colors"
+              c:identifier="hb_ot_color_palette_get_colors"
+              version="2.1.0">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-color.cc"
+           line="156">Fetches a list of the colors in a color palette.
+
+After calling this function, @colors will be filled with the palette
+colors. If @colors is NULL, the function will just return the number
+of total colors without storing any actual colors; this can be used
+for allocating a buffer of suitable size before calling
+hb_ot_color_palette_get_colors() a second time.</doc>
+      <source-position filename="../src/hb-ot-color.h" line="82"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-color.cc"
+             line="173">the total number of colors in the palette</doc>
+        <type name="guint" c:type="unsigned int"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-color.cc"
+               line="158">#hb_face_t to work upon</doc>
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+        <parameter name="palette_index" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-color.cc"
+               line="159">the index of the color palette to query</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="start_offset" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-color.cc"
+               line="160">offset of the first color to retrieve</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="color_count"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   optional="1"
+                   allow-none="1">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-color.cc"
+               line="161">Input = the maximum number of colors to return;
+              Output = the actual number of colors returned (may be zero)</doc>
+          <type name="guint" c:type="unsigned int*"/>
+        </parameter>
+        <parameter name="colors"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   nullable="1">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-color.cc"
+               line="163">The array of #hb_color_t records found</doc>
+          <array length="3" zero-terminated="0" c:type="hb_color_t*">
+            <type name="color_t" c:type="hb_color_t"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ot_color_palette_get_count"
+              c:identifier="hb_ot_color_palette_get_count"
+              version="2.1.0">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-color.cc"
+           line="77">Fetches the number of color palettes in a face.</doc>
+      <source-position filename="../src/hb-ot-color.h" line="50"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-color.cc"
+             line="83">the number of palettes found</doc>
+        <type name="guint" c:type="unsigned int"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-color.cc"
+               line="79">#hb_face_t to work upon</doc>
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ot_color_palette_get_flags"
+              c:identifier="hb_ot_color_palette_get_flags"
+              version="2.1.0">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-color.cc"
+           line="138">Fetches the flags defined for a color palette.</doc>
+      <source-position filename="../src/hb-ot-color.h" line="78"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-color.cc"
+             line="145">the #hb_ot_color_palette_flags_t of the requested color palette</doc>
+        <type name="ot_color_palette_flags_t"
+              c:type="hb_ot_color_palette_flags_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-color.cc"
+               line="140">#hb_face_t to work upon</doc>
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+        <parameter name="palette_index" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-color.cc"
+               line="141">The index of the color palette</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ot_color_palette_get_name_id"
+              c:identifier="hb_ot_color_palette_get_name_id"
+              version="2.1.0">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-color.cc"
+           line="93">Fetches the `name` table Name ID that provides display names for
+a `CPAL` color palette.
+
+Palette display names can be generic (e.g., "Default") or provide
+specific, themed names (e.g., "Spring", "Summer", "Fall", and "Winter").</doc>
+      <source-position filename="../src/hb-ot-color.h" line="53"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-color.cc"
+             line="104">the Named ID found for the palette.
+If the requested palette has no name the result is #HB_OT_NAME_ID_INVALID.</doc>
+        <type name="ot_name_id_t" c:type="hb_ot_name_id_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-color.cc"
+               line="95">#hb_face_t to work upon</doc>
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+        <parameter name="palette_index" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-color.cc"
+               line="96">The index of the color palette</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ot_font_set_funcs"
+              c:identifier="hb_ot_font_set_funcs"
+              version="0.9.28">
+      <source-position filename="../src/hb-ot-font.h" line="40"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <enumeration name="ot_layout_baseline_tag_t"
+                 version="2.6.0"
+                 glib:type-name="hb_ot_layout_baseline_tag_t"
+                 glib:get-type="hb_gobject_ot_layout_baseline_tag_get_type"
+                 c:type="hb_ot_layout_baseline_tag_t">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-layout.h"
+           line="416">Baseline tags from https://docs.microsoft.com/en-us/typography/opentype/spec/baselinetags</doc>
+      <member name="roman"
+              value="1919905134"
+              c:identifier="HB_OT_LAYOUT_BASELINE_TAG_ROMAN"
+              glib:nick="roman">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-layout.h"
+             line="418">The baseline used by alphabetic scripts such as Latin, Cyrillic and Greek.
+In vertical writing mode, the alphabetic baseline for characters rotated 90 degrees clockwise.
+(This would not apply to alphabetic characters that remain upright in vertical writing mode, since these
+characters are not rotated.)</doc>
+      </member>
+      <member name="hanging"
+              value="1751215719"
+              c:identifier="HB_OT_LAYOUT_BASELINE_TAG_HANGING"
+              glib:nick="hanging">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-layout.h"
+             line="422">The hanging baseline. In horizontal direction, this is the horizontal
+line from which syllables seem, to hang in Tibetan and other similar scripts. In vertical writing mode,
+for Tibetan (or some other similar script) characters rotated 90 degrees clockwise.</doc>
+      </member>
+      <member name="ideo_face_bottom_or_left"
+              value="1768121954"
+              c:identifier="HB_OT_LAYOUT_BASELINE_TAG_IDEO_FACE_BOTTOM_OR_LEFT"
+              glib:nick="ideo-face-bottom-or-left">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-layout.h"
+             line="425">Ideographic character face bottom or left edge,
+if the direction is horizontal or vertical, respectively.</doc>
+      </member>
+      <member name="ideo_face_top_or_right"
+              value="1768121972"
+              c:identifier="HB_OT_LAYOUT_BASELINE_TAG_IDEO_FACE_TOP_OR_RIGHT"
+              glib:nick="ideo-face-top-or-right">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-layout.h"
+             line="427">Ideographic character face top or right edge,
+if the direction is horizontal or vertical, respectively.</doc>
+      </member>
+      <member name="ideo_embox_bottom_or_left"
+              value="1768187247"
+              c:identifier="HB_OT_LAYOUT_BASELINE_TAG_IDEO_EMBOX_BOTTOM_OR_LEFT"
+              glib:nick="ideo-embox-bottom-or-left">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-layout.h"
+             line="429">Ideographic em-box bottom or left edge,
+if the direction is horizontal or vertical, respectively.</doc>
+      </member>
+      <member name="ideo_embox_top_or_right"
+              value="1768191088"
+              c:identifier="HB_OT_LAYOUT_BASELINE_TAG_IDEO_EMBOX_TOP_OR_RIGHT"
+              glib:nick="ideo-embox-top-or-right">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-layout.h"
+             line="431">Ideographic em-box top or right edge baseline,
+if the direction is horizontal or vertical, respectively.</doc>
+      </member>
+      <member name="math"
+              value="1835103336"
+              c:identifier="HB_OT_LAYOUT_BASELINE_TAG_MATH"
+              glib:nick="math">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-layout.h"
+             line="433">The baseline about which mathematical characters are centered.
+In vertical writing mode when mathematical characters rotated 90 degrees clockwise, are centered.</doc>
+      </member>
+    </enumeration>
+    <function name="ot_layout_collect_features"
+              c:identifier="hb_ot_layout_collect_features"
+              version="1.8.5">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-layout.cc"
+           line="1101">Fetches a list of all feature indexes in the specified face's GSUB table
+or GPOS table, underneath the specified scripts, languages, and features.
+If no list of scripts is provided, all scripts will be queried. If no list
+of languages is provided, all languages will be queried. If no list of
+features is provided, all features will be queried.</doc>
+      <source-position filename="../src/hb-ot-layout.h" line="250"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="1103">#hb_face_t to work upon</doc>
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+        <parameter name="table_tag" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="1104">HB_OT_TAG_GSUB or HB_OT_TAG_GPOS</doc>
+          <type name="tag_t" c:type="hb_tag_t"/>
+        </parameter>
+        <parameter name="scripts" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="1105">The array of scripts to collect features for</doc>
+          <type name="tag_t" c:type="const hb_tag_t*"/>
+        </parameter>
+        <parameter name="languages" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="1106">The array of languages to collect features for</doc>
+          <type name="tag_t" c:type="const hb_tag_t*"/>
+        </parameter>
+        <parameter name="features" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="1107">The array of features to collect</doc>
+          <type name="tag_t" c:type="const hb_tag_t*"/>
+        </parameter>
+        <parameter name="feature_indexes"
+                   direction="out"
+                   caller-allocates="1"
+                   transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="1108">The array of feature indexes found for the query</doc>
+          <type name="set_t" c:type="hb_set_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ot_layout_collect_lookups"
+              c:identifier="hb_ot_layout_collect_lookups"
+              version="0.9.8">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-layout.cc"
+           line="1152">Fetches a list of all feature-lookup indexes in the specified face's GSUB
+table or GPOS table, underneath the specified scripts, languages, and
+features. If no list of scripts is provided, all scripts will be queried.
+If no list of languages is provided, all languages will be queried. If no
+list of features is provided, all features will be queried.</doc>
+      <source-position filename="../src/hb-ot-layout.h" line="258"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="1154">#hb_face_t to work upon</doc>
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+        <parameter name="table_tag" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="1155">HB_OT_TAG_GSUB or HB_OT_TAG_GPOS</doc>
+          <type name="tag_t" c:type="hb_tag_t"/>
+        </parameter>
+        <parameter name="scripts" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="1156">The array of scripts to collect lookups for</doc>
+          <type name="tag_t" c:type="const hb_tag_t*"/>
+        </parameter>
+        <parameter name="languages" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="1157">The array of languages to collect lookups for</doc>
+          <type name="tag_t" c:type="const hb_tag_t*"/>
+        </parameter>
+        <parameter name="features" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="1158">The array of features to collect lookups for</doc>
+          <type name="tag_t" c:type="const hb_tag_t*"/>
+        </parameter>
+        <parameter name="lookup_indexes"
+                   direction="out"
+                   caller-allocates="1"
+                   transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="1159">The array of lookup indexes found for the query</doc>
+          <type name="set_t" c:type="hb_set_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ot_layout_feature_get_characters"
+              c:identifier="hb_ot_layout_feature_get_characters"
+              version="2.0.0">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-layout.cc"
+           line="1682">Fetches a list of the characters defined as having a variant under the specified
+"Character Variant" ("cvXX") feature tag.</doc>
+      <source-position filename="../src/hb-ot-layout.h" line="405"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-layout.cc"
+             line="1697">Number of total sample characters in the cvXX feature.</doc>
+        <type name="guint" c:type="unsigned int"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="1684">#hb_face_t to work upon</doc>
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+        <parameter name="table_tag" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="1685">table tag to query, "GSUB" or "GPOS".</doc>
+          <type name="tag_t" c:type="hb_tag_t"/>
+        </parameter>
+        <parameter name="feature_index" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="1686">index of feature to query.</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="start_offset" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="1687">offset of the first character to retrieve</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="char_count"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   nullable="1">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="1688">Input = the maximum number of characters to return;
+             Output = the actual number of characters returned (may be zero)</doc>
+          <type name="guint" c:type="unsigned int*"/>
+        </parameter>
+        <parameter name="characters"
+                   direction="out"
+                   caller-allocates="1"
+                   transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="1690">A buffer pointer.
+             The Unicode codepoints of the characters for which this feature provides
+              glyph variants.</doc>
+          <array length="4" zero-terminated="0" c:type="hb_codepoint_t*">
+            <type name="codepoint_t" c:type="hb_codepoint_t"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ot_layout_feature_get_lookups"
+              c:identifier="hb_ot_layout_feature_get_lookups"
+              version="0.9.7">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-layout.cc"
+           line="910">Fetches a list of all lookups enumerated for the specified feature, in
+the specified face's GSUB table or GPOS table. The list returned will
+begin at the offset provided.</doc>
+      <source-position filename="../src/hb-ot-layout.h" line="238"/>
+      <return-value transfer-ownership="none">
+        <type name="guint" c:type="unsigned int"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="912">#hb_face_t to work upon</doc>
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+        <parameter name="table_tag" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="913">HB_OT_TAG_GSUB or HB_OT_TAG_GPOS</doc>
+          <type name="tag_t" c:type="hb_tag_t"/>
+        </parameter>
+        <parameter name="feature_index" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="914">The index of the requested feature</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="start_offset" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="915">offset of the first lookup to retrieve</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="lookup_count"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   nullable="1">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="916">Input = the maximum number of lookups to return;
+               Output = the actual number of lookups returned (may be zero)</doc>
+          <type name="guint" c:type="unsigned int*"/>
+        </parameter>
+        <parameter name="lookup_indexes"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="918">The array of lookup indexes found for the query</doc>
+          <array length="4" zero-terminated="0" c:type="unsigned int*">
+            <type name="guint" c:type="unsigned int"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ot_layout_feature_get_name_ids"
+              c:identifier="hb_ot_layout_feature_get_name_ids"
+              version="2.0.0">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-layout.cc"
+           line="1608">Fetches name indices from feature parameters for "Stylistic Set" ('ssXX') or
+"Character Variant" ('cvXX') features.</doc>
+      <source-position filename="../src/hb-ot-layout.h" line="394"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-layout.cc"
+             line="1628">true if data found, false otherwise</doc>
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="1610">#hb_face_t to work upon</doc>
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+        <parameter name="table_tag" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="1611">table tag to query, "GSUB" or "GPOS".</doc>
+          <type name="tag_t" c:type="hb_tag_t"/>
+        </parameter>
+        <parameter name="feature_index" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="1612">index of feature to query.</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="label_id"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   optional="1"
+                   allow-none="1">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="1613">The ‘name’ table name ID that specifies a string
+           for a user-interface label for this feature. (May be NULL.)</doc>
+          <type name="ot_name_id_t" c:type="hb_ot_name_id_t*"/>
+        </parameter>
+        <parameter name="tooltip_id"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   optional="1"
+                   allow-none="1">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="1615">The ‘name’ table name ID that specifies a string
+             that an application can use for tooltip text for this
+             feature. (May be NULL.)</doc>
+          <type name="ot_name_id_t" c:type="hb_ot_name_id_t*"/>
+        </parameter>
+        <parameter name="sample_id"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   optional="1"
+                   allow-none="1">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="1618">The ‘name’ table name ID that specifies sample text
+            that illustrates the effect of this feature. (May be NULL.)</doc>
+          <type name="ot_name_id_t" c:type="hb_ot_name_id_t*"/>
+        </parameter>
+        <parameter name="num_named_parameters"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   optional="1"
+                   allow-none="1">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="1620">Number of named parameters. (May be zero.)</doc>
+          <type name="guint" c:type="unsigned int*"/>
+        </parameter>
+        <parameter name="first_param_id"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   optional="1"
+                   allow-none="1">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="1621">The first ‘name’ table name ID used to specify
+                 strings for user-interface labels for the feature
+                 parameters. (Must be zero if numParameters is zero.)</doc>
+          <type name="ot_name_id_t" c:type="hb_ot_name_id_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ot_layout_feature_with_variations_get_lookups"
+              c:identifier="hb_ot_layout_feature_with_variations_get_lookups">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-layout.cc"
+           line="1268">Fetches a list of all lookups enumerated for the specified feature, in
+the specified face's GSUB table or GPOS table, enabled at the specified
+variations index. The list returned will begin at the offset provided.</doc>
+      <source-position filename="../src/hb-ot-layout.h" line="310"/>
+      <return-value transfer-ownership="none">
+        <type name="guint" c:type="unsigned int"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="1270">#hb_face_t to work upon</doc>
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+        <parameter name="table_tag" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="1271">HB_OT_TAG_GSUB or HB_OT_TAG_GPOS</doc>
+          <type name="tag_t" c:type="hb_tag_t"/>
+        </parameter>
+        <parameter name="feature_index" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="1272">The index of the feature to query</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="variations_index" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="1273">The index of the feature variation to query</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="start_offset" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="1274">offset of the first lookup to retrieve</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="lookup_count"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   nullable="1">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="1275">Input = the maximum number of lookups to return;
+               Output = the actual number of lookups returned (may be zero)</doc>
+          <type name="guint" c:type="unsigned int*"/>
+        </parameter>
+        <parameter name="lookup_indexes"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="1277">The array of lookups found for the query</doc>
+          <array length="5" zero-terminated="0" c:type="unsigned int*">
+            <type name="guint" c:type="unsigned int"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ot_layout_get_attach_points"
+              c:identifier="hb_ot_layout_get_attach_points">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-layout.cc"
+           line="320">Fetches a list of all attachment points for the specified glyph in the GDEF
+table of the face. The list returned will begin at the offset provided.
+
+Useful if the client program wishes to cache the list.</doc>
+      <source-position filename="../src/hb-ot-layout.h" line="127"/>
+      <return-value transfer-ownership="none">
+        <type name="guint" c:type="unsigned int"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="322">The #hb_face_t to work on</doc>
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+        <parameter name="glyph" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="323">The #hb_codepoint_t code point to query</doc>
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+        <parameter name="start_offset" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="324">offset of the first attachment point to retrieve</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="point_count"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   nullable="1">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="325">Input = the maximum number of attachment points to return;
+              Output = the actual number of attachment points returned (may be zero)</doc>
+          <type name="guint" c:type="unsigned int*"/>
+        </parameter>
+        <parameter name="point_array"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="327">The array of attachment points found for the query</doc>
+          <array length="3" zero-terminated="0" c:type="unsigned int*">
+            <type name="guint" c:type="unsigned int"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ot_layout_get_baseline"
+              c:identifier="hb_ot_layout_get_baseline"
+              version="2.6.0">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-layout.cc"
+           line="1904">Fetches a baseline value from the face.</doc>
+      <source-position filename="../src/hb-ot-layout.h" line="453"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-layout.cc"
+             line="1915">if found baseline value in the font.</doc>
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="1906">a font</doc>
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+        <parameter name="baseline_tag" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="1907">a baseline tag</doc>
+          <type name="ot_layout_baseline_tag_t"
+                c:type="hb_ot_layout_baseline_tag_t"/>
+        </parameter>
+        <parameter name="direction" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="1908">text direction.</doc>
+          <type name="direction_t" c:type="hb_direction_t"/>
+        </parameter>
+        <parameter name="script_tag" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="1909">script tag.</doc>
+          <type name="tag_t" c:type="hb_tag_t"/>
+        </parameter>
+        <parameter name="language_tag" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="1910">language tag.</doc>
+          <type name="tag_t" c:type="hb_tag_t"/>
+        </parameter>
+        <parameter name="coord"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="1911">baseline value if found.</doc>
+          <type name="position_t" c:type="hb_position_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ot_layout_get_glyph_class"
+              c:identifier="hb_ot_layout_get_glyph_class"
+              version="0.9.7">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-layout.cc"
+           line="280">Fetches the GDEF class of the requested glyph in the specified face.</doc>
+      <source-position filename="../src/hb-ot-layout.h" line="116"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-layout.cc"
+             line="287">The #hb_ot_layout_glyph_class_t glyph class of the given code
+point in the GDEF table of the face.</doc>
+        <type name="ot_layout_glyph_class_t"
+              c:type="hb_ot_layout_glyph_class_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="282">The #hb_face_t to work on</doc>
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+        <parameter name="glyph" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="283">The #hb_codepoint_t code point to query</doc>
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ot_layout_get_glyphs_in_class"
+              c:identifier="hb_ot_layout_get_glyphs_in_class"
+              version="0.9.7">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-layout.cc"
+           line="299">Retrieves the set of all glyphs from the face that belong to the requested
+glyph class in the face's GDEF table.</doc>
+      <source-position filename="../src/hb-ot-layout.h" line="120"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="301">The #hb_face_t to work on</doc>
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+        <parameter name="klass" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="302">The #hb_ot_layout_glyph_class_t GDEF class to retrieve</doc>
+          <type name="ot_layout_glyph_class_t"
+                c:type="hb_ot_layout_glyph_class_t"/>
+        </parameter>
+        <parameter name="glyphs"
+                   direction="out"
+                   caller-allocates="1"
+                   transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="303">The #hb_set_t set of all glyphs belonging to the requested
+         class.</doc>
+          <type name="set_t" c:type="hb_set_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ot_layout_get_ligature_carets"
+              c:identifier="hb_ot_layout_get_ligature_carets">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-layout.cc"
+           line="347">Fetches a list of the caret positions defined for a ligature glyph in the GDEF
+table of the font. The list returned will begin at the offset provided.</doc>
+      <source-position filename="../src/hb-ot-layout.h" line="135"/>
+      <return-value transfer-ownership="none">
+        <type name="guint" c:type="unsigned int"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="349">The #hb_font_t to work on</doc>
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+        <parameter name="direction" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="350">The #hb_direction_t text direction to use</doc>
+          <type name="direction_t" c:type="hb_direction_t"/>
+        </parameter>
+        <parameter name="glyph" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="351">The #hb_codepoint_t code point to query</doc>
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+        <parameter name="start_offset" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="352">offset of the first caret position to retrieve</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="caret_count"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   nullable="1">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="353">Input = the maximum number of caret positions to return;
+              Output = the actual number of caret positions returned (may be zero)</doc>
+          <type name="guint" c:type="unsigned int*"/>
+        </parameter>
+        <parameter name="caret_array"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="355">The array of caret positions found for the query</doc>
+          <array length="4" zero-terminated="0" c:type="hb_position_t*">
+            <type name="position_t" c:type="hb_position_t"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ot_layout_get_size_params"
+              c:identifier="hb_ot_layout_get_size_params"
+              version="0.9.10">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-layout.cc"
+           line="1546">Fetches optical-size feature data (i.e., the `size` feature from GPOS). Note that
+the subfamily_id and the subfamily name string (accessible via the subfamily_name_id)
+as used here are defined as pertaining only to fonts within a font family that differ
+specifically in their respective size ranges; other ways to differentiate fonts within
+a subfamily are not covered by the `size` feature.
+
+For more information on this distinction, see the [`size` feature documentation](
+https://docs.microsoft.com/en-us/typography/opentype/spec/features_pt#tag-size).</doc>
+      <source-position filename="../src/hb-ot-layout.h" line="385"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-layout.cc"
+             line="1564">true if data found, false otherwise</doc>
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="1548">#hb_face_t to work upon</doc>
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+        <parameter name="design_size"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="1549">The design size of the face</doc>
+          <type name="guint" c:type="unsigned int*"/>
+        </parameter>
+        <parameter name="subfamily_id"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="1550">The identifier of the face within the font subfamily</doc>
+          <type name="guint" c:type="unsigned int*"/>
+        </parameter>
+        <parameter name="subfamily_name_id"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="1551">The ‘name’ table name ID of the face within the font subfamily</doc>
+          <type name="ot_name_id_t" c:type="hb_ot_name_id_t*"/>
+        </parameter>
+        <parameter name="range_start"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="1552">The minimum size of the recommended size range for the face</doc>
+          <type name="guint" c:type="unsigned int*"/>
+        </parameter>
+        <parameter name="range_end"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="1553">The maximum size of the recommended size range for the face</doc>
+          <type name="guint" c:type="unsigned int*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <enumeration name="ot_layout_glyph_class_t"
+                 glib:type-name="hb_ot_layout_glyph_class_t"
+                 glib:get-type="hb_gobject_ot_layout_glyph_class_get_type"
+                 c:type="hb_ot_layout_glyph_class_t">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-layout.h"
+           line="96">The GDEF classes defined for glyphs.</doc>
+      <member name="unclassified"
+              value="0"
+              c:identifier="HB_OT_LAYOUT_GLYPH_CLASS_UNCLASSIFIED"
+              glib:nick="unclassified">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-layout.h"
+             line="98">Glyphs not matching the other classifications</doc>
+      </member>
+      <member name="base_glyph"
+              value="1"
+              c:identifier="HB_OT_LAYOUT_GLYPH_CLASS_BASE_GLYPH"
+              glib:nick="base-glyph">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-layout.h"
+             line="99">Spacing, single characters, capable of accepting marks</doc>
+      </member>
+      <member name="ligature"
+              value="2"
+              c:identifier="HB_OT_LAYOUT_GLYPH_CLASS_LIGATURE"
+              glib:nick="ligature">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-layout.h"
+             line="100">Glyphs that represent ligation of multiple characters</doc>
+      </member>
+      <member name="mark"
+              value="3"
+              c:identifier="HB_OT_LAYOUT_GLYPH_CLASS_MARK"
+              glib:nick="mark">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-layout.h"
+             line="101">Non-spacing, combining glyphs that represent marks</doc>
+      </member>
+      <member name="component"
+              value="4"
+              c:identifier="HB_OT_LAYOUT_GLYPH_CLASS_COMPONENT"
+              glib:nick="component">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-layout.h"
+             line="102">Spacing glyphs that represent part of a single character</doc>
+      </member>
+    </enumeration>
+    <function name="ot_layout_has_glyph_classes"
+              c:identifier="hb_ot_layout_has_glyph_classes">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-layout.cc"
+           line="265">Tests whether a face has any glyph classes defined in its GDEF table.</doc>
+      <source-position filename="../src/hb-ot-layout.h" line="94"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-layout.cc"
+             line="271">true if data found, false otherwise</doc>
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="267">#hb_face_t to work upon</doc>
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ot_layout_has_positioning"
+              c:identifier="hb_ot_layout_has_positioning">
+      <source-position filename="../src/hb-ot-layout.h" line="371"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-layout.cc"
+             line="1491">true if the face has GPOS data, false otherwise</doc>
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="1489">#hb_face_t to work upon</doc>
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ot_layout_has_substitution"
+              c:identifier="hb_ot_layout_has_substitution">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-layout.cc"
+           line="1307">Tests whether the specified face includes any GSUB substitutions.</doc>
+      <source-position filename="../src/hb-ot-layout.h" line="324"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-layout.cc"
+             line="1313">true if data found, false otherwise</doc>
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="1309">#hb_face_t to work upon</doc>
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ot_layout_language_find_feature"
+              c:identifier="hb_ot_layout_language_find_feature">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-layout.cc"
+           line="868">Fetches the index of a given feature tag in the specified face's GSUB table
+or GPOS table, underneath the specified script and language.</doc>
+      <source-position filename="../src/hb-ot-layout.h" line="230"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-layout.cc"
+             line="880">true if the feature is found, false otherwise</doc>
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="870">#hb_face_t to work upon</doc>
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+        <parameter name="table_tag" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="871">HB_OT_TAG_GSUB or HB_OT_TAG_GPOS</doc>
+          <type name="tag_t" c:type="hb_tag_t"/>
+        </parameter>
+        <parameter name="script_index" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="872">The index of the requested script tag</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="language_index" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="873">The index of the requested language tag</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="feature_tag" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="874">#hb_tag_t of the feature tag requested</doc>
+          <type name="tag_t" c:type="hb_tag_t"/>
+        </parameter>
+        <parameter name="feature_index"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="875">The index of the requested feature</doc>
+          <type name="guint" c:type="unsigned int*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ot_layout_language_get_feature_indexes"
+              c:identifier="hb_ot_layout_language_get_feature_indexes">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-layout.cc"
+           line="796">Fetches a list of all features in the specified face's GSUB table
+or GPOS table, underneath the specified script and language. The list
+returned will begin at the offset provided.</doc>
+      <source-position filename="../src/hb-ot-layout.h" line="212"/>
+      <return-value transfer-ownership="none">
+        <type name="guint" c:type="unsigned int"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="798">#hb_face_t to work upon</doc>
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+        <parameter name="table_tag" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="799">HB_OT_TAG_GSUB or HB_OT_TAG_GPOS</doc>
+          <type name="tag_t" c:type="hb_tag_t"/>
+        </parameter>
+        <parameter name="script_index" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="800">The index of the requested script tag</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="language_index" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="801">The index of the requested language tag</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="start_offset" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="802">offset of the first feature tag to retrieve</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="feature_count"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   nullable="1">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="803">Input = the maximum number of feature tags to return;
+                Output: the actual number of feature tags returned (may be zero)</doc>
+          <type name="guint" c:type="unsigned int*"/>
+        </parameter>
+        <parameter name="feature_indexes"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="805">The array of feature indexes found for the query</doc>
+          <array length="5" zero-terminated="0" c:type="unsigned int*">
+            <type name="guint" c:type="unsigned int"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ot_layout_language_get_feature_tags"
+              c:identifier="hb_ot_layout_language_get_feature_tags">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-layout.cc"
+           line="827">Fetches a list of all features in the specified face's GSUB table
+or GPOS table, underneath the specified script and language. The list
+returned will begin at the offset provided.</doc>
+      <source-position filename="../src/hb-ot-layout.h" line="221"/>
+      <return-value transfer-ownership="none">
+        <type name="guint" c:type="unsigned int"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="829">#hb_face_t to work upon</doc>
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+        <parameter name="table_tag" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="830">HB_OT_TAG_GSUB or HB_OT_TAG_GPOS</doc>
+          <type name="tag_t" c:type="hb_tag_t"/>
+        </parameter>
+        <parameter name="script_index" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="831">The index of the requested script tag</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="language_index" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="832">The index of the requested language tag</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="start_offset" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="833">offset of the first feature tag to retrieve</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="feature_count"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   nullable="1">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="834">Input = the maximum number of feature tags to return;
+                Output = the actual number of feature tags returned (may be zero)</doc>
+          <type name="guint" c:type="unsigned int*"/>
+        </parameter>
+        <parameter name="feature_tags"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="836">The array of #hb_tag_t feature tags found for the query</doc>
+          <array length="5" zero-terminated="0" c:type="hb_tag_t*">
+            <type name="tag_t" c:type="hb_tag_t"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ot_layout_language_get_required_feature"
+              c:identifier="hb_ot_layout_language_get_required_feature"
+              version="0.9.30">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-layout.cc"
+           line="761">Fetches the tag of a requested feature index in the given face's GSUB or GPOS table,
+underneath the specified script and language.</doc>
+      <source-position filename="../src/hb-ot-layout.h" line="204"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-layout.cc"
+             line="773">true if the feature is found, false otherwise</doc>
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="763">#hb_face_t to work upon</doc>
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+        <parameter name="table_tag" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="764">HB_OT_TAG_GSUB or HB_OT_TAG_GPOS</doc>
+          <type name="tag_t" c:type="hb_tag_t"/>
+        </parameter>
+        <parameter name="script_index" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="765">The index of the requested script tag</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="language_index" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="766">The index of the requested language tag</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="feature_index"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="767">The index of the requested feature</doc>
+          <type name="guint" c:type="unsigned int*"/>
+        </parameter>
+        <parameter name="feature_tag"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="768">The #hb_tag_t of the requested feature</doc>
+          <type name="tag_t" c:type="hb_tag_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ot_layout_language_get_required_feature_index"
+              c:identifier="hb_ot_layout_language_get_required_feature_index">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-layout.cc"
+           line="731">Fetches the index of a requested feature in the given face's GSUB or GPOS table,
+underneath the specified script and language.</doc>
+      <source-position filename="../src/hb-ot-layout.h" line="197"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-layout.cc"
+             line="742">true if the feature is found, false otherwise</doc>
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="733">#hb_face_t to work upon</doc>
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+        <parameter name="table_tag" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="734">HB_OT_TAG_GSUB or HB_OT_TAG_GPOS</doc>
+          <type name="tag_t" c:type="hb_tag_t"/>
+        </parameter>
+        <parameter name="script_index" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="735">The index of the requested script tag</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="language_index" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="736">The index of the requested language tag</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="feature_index"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="737">The index of the requested feature</doc>
+          <type name="guint" c:type="unsigned int*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ot_layout_lookup_collect_glyphs"
+              c:identifier="hb_ot_layout_lookup_collect_glyphs"
+              version="0.9.7">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-layout.cc"
+           line="1191">Fetches a list of all glyphs affected by the specified lookup in the
+specified face's GSUB table or GPOS table.</doc>
+      <source-position filename="../src/hb-ot-layout.h" line="266"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="1193">#hb_face_t to work upon</doc>
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+        <parameter name="table_tag" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="1194">HB_OT_TAG_GSUB or HB_OT_TAG_GPOS</doc>
+          <type name="tag_t" c:type="hb_tag_t"/>
+        </parameter>
+        <parameter name="lookup_index" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="1195">The index of the feature lookup to query</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="glyphs_before"
+                   direction="out"
+                   caller-allocates="1"
+                   transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="1196">Array of glyphs preceding the substitution range</doc>
+          <type name="set_t" c:type="hb_set_t*"/>
+        </parameter>
+        <parameter name="glyphs_input"
+                   direction="out"
+                   caller-allocates="1"
+                   transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="1197">Array of input glyphs that would be substituted by the lookup</doc>
+          <type name="set_t" c:type="hb_set_t*"/>
+        </parameter>
+        <parameter name="glyphs_after"
+                   direction="out"
+                   caller-allocates="1"
+                   transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="1198">Array of glyphs following the substitution range</doc>
+          <type name="set_t" c:type="hb_set_t*"/>
+        </parameter>
+        <parameter name="glyphs_output"
+                   direction="out"
+                   caller-allocates="1"
+                   transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="1199">Array of glyphs that would be the substitued output of the lookup</doc>
+          <type name="set_t" c:type="hb_set_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ot_layout_lookup_get_glyph_alternates"
+              c:identifier="hb_ot_layout_lookup_get_glyph_alternates"
+              version="2.6.8">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-layout.cc"
+           line="1961">Fetches alternates of a glyph from a given GSUB lookup index.</doc>
+      <source-position filename="../src/hb-ot-layout.h" line="327"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-layout.cc"
+             line="1974">total number of alternates found in the specific lookup index for the given glyph id.</doc>
+        <type name="guint" c:type="unsigned"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="1963">a face.</doc>
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+        <parameter name="lookup_index" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="1964">index of the feature lookup to query.</doc>
+          <type name="guint" c:type="unsigned"/>
+        </parameter>
+        <parameter name="glyph" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="1965">a glyph id.</doc>
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+        <parameter name="start_offset" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="1966">starting offset.</doc>
+          <type name="guint" c:type="unsigned"/>
+        </parameter>
+        <parameter name="alternate_count"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   nullable="1">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="1967">Input = the maximum number of alternate glyphs to return;
+                  Output = the actual number of alternate glyphs returned (may be zero).</doc>
+          <type name="guint" c:type="unsigned*"/>
+        </parameter>
+        <parameter name="alternate_glyphs"
+                   direction="out"
+                   caller-allocates="1"
+                   transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="1969">A glyphs buffer.
+                   Alternate glyphs associated with the glyph id.</doc>
+          <array length="4" zero-terminated="0" c:type="hb_codepoint_t*">
+            <type name="codepoint_t" c:type="hb_codepoint_t"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ot_layout_lookup_substitute_closure"
+              c:identifier="hb_ot_layout_lookup_substitute_closure"
+              version="0.9.7">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-layout.cc"
+           line="1419">Compute the transitive closure of glyphs needed for a
+specified lookup.</doc>
+      <source-position filename="../src/hb-ot-layout.h" line="342"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="1421">#hb_face_t to work upon</doc>
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+        <parameter name="lookup_index" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="1422">index of the feature lookup to query</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="glyphs"
+                   direction="out"
+                   caller-allocates="1"
+                   transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="1423">Array of glyphs comprising the transitive closure of the lookup</doc>
+          <type name="set_t" c:type="hb_set_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ot_layout_lookup_would_substitute"
+              c:identifier="hb_ot_layout_lookup_would_substitute"
+              version="0.9.7">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-layout.cc"
+           line="1323">Tests whether a specified lookup in the specified face would
+trigger a substitution on the given glyph sequence.</doc>
+      <source-position filename="../src/hb-ot-layout.h" line="335"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-layout.cc"
+             line="1334">true if a substitution would be triggered, false otherwise</doc>
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="1325">#hb_face_t to work upon</doc>
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+        <parameter name="lookup_index" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="1326">The index of the lookup to query</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="glyphs" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="1327">The sequence of glyphs to query for substitution</doc>
+          <type name="codepoint_t" c:type="const hb_codepoint_t*"/>
+        </parameter>
+        <parameter name="glyphs_length" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="1328">The length of the glyph sequence</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="zero_context" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="1329">#hb_bool_t indicating whether substitutions should be context-free</doc>
+          <type name="bool_t" c:type="hb_bool_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ot_layout_lookups_substitute_closure"
+              c:identifier="hb_ot_layout_lookups_substitute_closure"
+              version="1.8.1">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-layout.cc"
+           line="1443">Compute the transitive closure of glyphs needed for all of the
+provided lookups.</doc>
+      <source-position filename="../src/hb-ot-layout.h" line="348"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="1445">#hb_face_t to work upon</doc>
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+        <parameter name="lookups" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="1446">The set of lookups to query</doc>
+          <type name="set_t" c:type="const hb_set_t*"/>
+        </parameter>
+        <parameter name="glyphs"
+                   direction="out"
+                   caller-allocates="1"
+                   transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="1447">Array of glyphs comprising the transitive closure of the lookups</doc>
+          <type name="set_t" c:type="hb_set_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ot_layout_script_find_language"
+              c:identifier="hb_ot_layout_script_find_language"
+              deprecated="1">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-layout.cc"
+           line="655">Fetches the index of a given language tag in the specified face's GSUB table
+or GPOS table, underneath the specified script tag.</doc>
+      <doc-version xml:space="preserve">??</doc-version>
+      <doc-deprecated xml:space="preserve">??</doc-deprecated>
+      <source-position filename="../src/hb-ot-deprecated.h" line="56"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-layout.cc"
+             line="666">true if the language tag is found, false otherwise</doc>
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="657">#hb_face_t to work upon</doc>
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+        <parameter name="table_tag" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="658">HB_OT_TAG_GSUB or HB_OT_TAG_GPOS</doc>
+          <type name="tag_t" c:type="hb_tag_t"/>
+        </parameter>
+        <parameter name="script_index" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="659">The index of the requested script tag</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="language_tag" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="660">The #hb_tag_t of the requested language</doc>
+          <type name="tag_t" c:type="hb_tag_t"/>
+        </parameter>
+        <parameter name="language_index" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="661">The index of the requested language</doc>
+          <type name="guint" c:type="unsigned int*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ot_layout_script_get_language_tags"
+              c:identifier="hb_ot_layout_script_get_language_tags">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-layout.cc"
+           line="626">Fetches a list of language tags in the given face's GSUB or GPOS table, underneath
+the specified script index. The list returned will begin at the offset provided.</doc>
+      <source-position filename="../src/hb-ot-layout.h" line="181"/>
+      <return-value transfer-ownership="none">
+        <type name="guint" c:type="unsigned int"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="628">#hb_face_t to work upon</doc>
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+        <parameter name="table_tag" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="629">HB_OT_TAG_GSUB or HB_OT_TAG_GPOS</doc>
+          <type name="tag_t" c:type="hb_tag_t"/>
+        </parameter>
+        <parameter name="script_index" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="630">The index of the requested script tag</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="start_offset" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="631">offset of the first language tag to retrieve</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="language_count"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   nullable="1">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="632">Input = the maximum number of language tags to return;
+                 Output = the actual number of language tags returned (may be zero)</doc>
+          <type name="guint" c:type="unsigned int*"/>
+        </parameter>
+        <parameter name="language_tags"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="634">Array of language tags found in the table</doc>
+          <array length="4" zero-terminated="0" c:type="hb_tag_t*">
+            <type name="tag_t" c:type="hb_tag_t"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ot_layout_script_select_language"
+              c:identifier="hb_ot_layout_script_select_language"
+              version="2.0.0">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-layout.cc"
+           line="688">Fetches the index of a given language tag in the specified face's GSUB table
+or GPOS table, underneath the specified script index.</doc>
+      <source-position filename="../src/hb-ot-layout.h" line="189"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-layout.cc"
+             line="700">true if the language tag is found, false otherwise</doc>
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="690">#hb_face_t to work upon</doc>
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+        <parameter name="table_tag" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="691">HB_OT_TAG_GSUB or HB_OT_TAG_GPOS</doc>
+          <type name="tag_t" c:type="hb_tag_t"/>
+        </parameter>
+        <parameter name="script_index" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="692">The index of the requested script tag</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="language_count" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="693">The number of languages in the specified script</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="language_tags" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="694">The array of language tags</doc>
+          <type name="tag_t" c:type="const hb_tag_t*"/>
+        </parameter>
+        <parameter name="language_index"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="695">The index of the requested language</doc>
+          <type name="guint" c:type="unsigned int*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ot_layout_table_choose_script"
+              c:identifier="hb_ot_layout_table_choose_script">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-layout.cc"
+           line="481">Deprecated since 2.0.0</doc>
+      <source-position filename="../src/hb-ot-deprecated.h" line="49"/>
+      <return-value transfer-ownership="none">
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="483">#hb_face_t to work upon</doc>
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+        <parameter name="table_tag" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="484">HB_OT_TAG_GSUB or HB_OT_TAG_GPOS</doc>
+          <type name="tag_t" c:type="hb_tag_t"/>
+        </parameter>
+        <parameter name="script_tags" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="485">Array of #hb_tag_t script tags</doc>
+          <type name="tag_t" c:type="const hb_tag_t*"/>
+        </parameter>
+        <parameter name="script_index"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="486">The index of the requested script tag</doc>
+          <type name="guint" c:type="unsigned int*"/>
+        </parameter>
+        <parameter name="chosen_script"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="487">#hb_tag_t of the script tag requested</doc>
+          <type name="tag_t" c:type="hb_tag_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ot_layout_table_find_feature_variations"
+              c:identifier="hb_ot_layout_table_find_feature_variations">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-layout.cc"
+           line="1243">Fetches a list of feature variations in the specified face's GSUB table
+or GPOS table, at the specified variation coordinates.</doc>
+      <source-position filename="../src/hb-ot-layout.h" line="303"/>
+      <return-value transfer-ownership="none">
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="1245">#hb_face_t to work upon</doc>
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+        <parameter name="table_tag" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="1246">HB_OT_TAG_GSUB or HB_OT_TAG_GPOS</doc>
+          <type name="tag_t" c:type="hb_tag_t"/>
+        </parameter>
+        <parameter name="coords" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="1247">The variation coordinates to query</doc>
+          <type name="gint" c:type="const int*"/>
+        </parameter>
+        <parameter name="num_coords" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="1248">The number of variation coorinates</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="variations_index"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="1249">The array of feature variations found for the query</doc>
+          <type name="guint" c:type="unsigned int*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ot_layout_table_find_script"
+              c:identifier="hb_ot_layout_table_find_script">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-layout.cc"
+           line="437">Fetches the index if a given script tag in the specified face's GSUB table
+or GPOS table.</doc>
+      <source-position filename="../src/hb-ot-layout.h" line="160"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-layout.cc"
+             line="447">true if the script is found, false otherwise</doc>
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="439">#hb_face_t to work upon</doc>
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+        <parameter name="table_tag" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="440">HB_OT_TAG_GSUB or HB_OT_TAG_GPOS</doc>
+          <type name="tag_t" c:type="hb_tag_t"/>
+        </parameter>
+        <parameter name="script_tag" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="441">#hb_tag_t of the script tag requested</doc>
+          <type name="tag_t" c:type="hb_tag_t"/>
+        </parameter>
+        <parameter name="script_index"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="442">The index of the requested script tag</doc>
+          <type name="guint" c:type="unsigned int*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ot_layout_table_get_feature_tags"
+              c:identifier="hb_ot_layout_table_get_feature_tags">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-layout.cc"
+           line="566">Fetches a list of all feature tags in the given face's GSUB or GPOS table.</doc>
+      <source-position filename="../src/hb-ot-layout.h" line="174"/>
+      <return-value transfer-ownership="none">
+        <type name="guint" c:type="unsigned int"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="568">#hb_face_t to work upon</doc>
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+        <parameter name="table_tag" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="569">HB_OT_TAG_GSUB or HB_OT_TAG_GPOS</doc>
+          <type name="tag_t" c:type="hb_tag_t"/>
+        </parameter>
+        <parameter name="start_offset" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="570">offset of the first feature tag to retrieve</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="feature_count"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   nullable="1">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="571">Input = the maximum number of feature tags to return;
+                Output = the actual number of feature tags returned (may be zero)</doc>
+          <type name="guint" c:type="unsigned int*"/>
+        </parameter>
+        <parameter name="feature_tags"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="573">Array of feature tags found in the table</doc>
+          <array length="3" zero-terminated="0" c:type="hb_tag_t*">
+            <type name="tag_t" c:type="hb_tag_t"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ot_layout_table_get_lookup_count"
+              c:identifier="hb_ot_layout_table_get_lookup_count"
+              version="0.9.22">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-layout.cc"
+           line="944">Fetches the total number of lookups enumerated in the specified
+face's GSUB table or GPOS table.</doc>
+      <source-position filename="../src/hb-ot-layout.h" line="246"/>
+      <return-value transfer-ownership="none">
+        <type name="guint" c:type="unsigned int"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="946">#hb_face_t to work upon</doc>
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+        <parameter name="table_tag" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="947">HB_OT_TAG_GSUB or HB_OT_TAG_GPOS</doc>
+          <type name="tag_t" c:type="hb_tag_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ot_layout_table_get_script_tags"
+              c:identifier="hb_ot_layout_table_get_script_tags">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-layout.cc"
+           line="410">Fetches a list of all scripts enumerated in the specified face's GSUB table
+or GPOS table. The list returned will begin at the offset provided.</doc>
+      <source-position filename="../src/hb-ot-layout.h" line="153"/>
+      <return-value transfer-ownership="none">
+        <type name="guint" c:type="unsigned int"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="412">#hb_face_t to work upon</doc>
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+        <parameter name="table_tag" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="413">HB_OT_TAG_GSUB or HB_OT_TAG_GPOS</doc>
+          <type name="tag_t" c:type="hb_tag_t"/>
+        </parameter>
+        <parameter name="start_offset" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="414">offset of the first script tag to retrieve</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="script_count"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   nullable="1">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="415">Input = the maximum number of script tags to return;
+               Output = the actual number of script tags returned (may be zero)</doc>
+          <type name="guint" c:type="unsigned int*"/>
+        </parameter>
+        <parameter name="script_tags"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="417">The array of #hb_tag_t script tags found for the query</doc>
+          <array length="3" zero-terminated="0" c:type="hb_tag_t*">
+            <type name="tag_t" c:type="hb_tag_t"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ot_layout_table_select_script"
+              c:identifier="hb_ot_layout_table_select_script"
+              version="2.0.0">
+      <source-position filename="../src/hb-ot-layout.h" line="166"/>
+      <return-value transfer-ownership="none">
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="506">#hb_face_t to work upon</doc>
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+        <parameter name="table_tag" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="507">HB_OT_TAG_GSUB or HB_OT_TAG_GPOS</doc>
+          <type name="tag_t" c:type="hb_tag_t"/>
+        </parameter>
+        <parameter name="script_count" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="508">Number of script tags in the array</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="script_tags" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="509">Array of #hb_tag_t script tags</doc>
+          <type name="tag_t" c:type="const hb_tag_t*"/>
+        </parameter>
+        <parameter name="script_index"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="510">The index of the requested script</doc>
+          <type name="guint" c:type="unsigned int*"/>
+        </parameter>
+        <parameter name="chosen_script"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-layout.cc"
+               line="511">#hb_tag_t of the requested script</doc>
+          <type name="tag_t" c:type="hb_tag_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <enumeration name="ot_math_constant_t"
+                 version="1.3.3"
+                 glib:type-name="hb_ot_math_constant_t"
+                 glib:get-type="hb_gobject_ot_math_constant_get_type"
+                 c:type="hb_ot_math_constant_t">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-math.h"
+           line="50">The 'MATH' table constants specified at
+https://docs.microsoft.com/en-us/typography/opentype/spec/math</doc>
+      <member name="script_percent_scale_down"
+              value="0"
+              c:identifier="HB_OT_MATH_CONSTANT_SCRIPT_PERCENT_SCALE_DOWN"
+              glib:nick="script-percent-scale-down">
+      </member>
+      <member name="script_script_percent_scale_down"
+              value="1"
+              c:identifier="HB_OT_MATH_CONSTANT_SCRIPT_SCRIPT_PERCENT_SCALE_DOWN"
+              glib:nick="script-script-percent-scale-down">
+      </member>
+      <member name="delimited_sub_formula_min_height"
+              value="2"
+              c:identifier="HB_OT_MATH_CONSTANT_DELIMITED_SUB_FORMULA_MIN_HEIGHT"
+              glib:nick="delimited-sub-formula-min-height">
+      </member>
+      <member name="display_operator_min_height"
+              value="3"
+              c:identifier="HB_OT_MATH_CONSTANT_DISPLAY_OPERATOR_MIN_HEIGHT"
+              glib:nick="display-operator-min-height">
+      </member>
+      <member name="math_leading"
+              value="4"
+              c:identifier="HB_OT_MATH_CONSTANT_MATH_LEADING"
+              glib:nick="math-leading">
+      </member>
+      <member name="axis_height"
+              value="5"
+              c:identifier="HB_OT_MATH_CONSTANT_AXIS_HEIGHT"
+              glib:nick="axis-height">
+      </member>
+      <member name="accent_base_height"
+              value="6"
+              c:identifier="HB_OT_MATH_CONSTANT_ACCENT_BASE_HEIGHT"
+              glib:nick="accent-base-height">
+      </member>
+      <member name="flattened_accent_base_height"
+              value="7"
+              c:identifier="HB_OT_MATH_CONSTANT_FLATTENED_ACCENT_BASE_HEIGHT"
+              glib:nick="flattened-accent-base-height">
+      </member>
+      <member name="subscript_shift_down"
+              value="8"
+              c:identifier="HB_OT_MATH_CONSTANT_SUBSCRIPT_SHIFT_DOWN"
+              glib:nick="subscript-shift-down">
+      </member>
+      <member name="subscript_top_max"
+              value="9"
+              c:identifier="HB_OT_MATH_CONSTANT_SUBSCRIPT_TOP_MAX"
+              glib:nick="subscript-top-max">
+      </member>
+      <member name="subscript_baseline_drop_min"
+              value="10"
+              c:identifier="HB_OT_MATH_CONSTANT_SUBSCRIPT_BASELINE_DROP_MIN"
+              glib:nick="subscript-baseline-drop-min">
+      </member>
+      <member name="superscript_shift_up"
+              value="11"
+              c:identifier="HB_OT_MATH_CONSTANT_SUPERSCRIPT_SHIFT_UP"
+              glib:nick="superscript-shift-up">
+      </member>
+      <member name="superscript_shift_up_cramped"
+              value="12"
+              c:identifier="HB_OT_MATH_CONSTANT_SUPERSCRIPT_SHIFT_UP_CRAMPED"
+              glib:nick="superscript-shift-up-cramped">
+      </member>
+      <member name="superscript_bottom_min"
+              value="13"
+              c:identifier="HB_OT_MATH_CONSTANT_SUPERSCRIPT_BOTTOM_MIN"
+              glib:nick="superscript-bottom-min">
+      </member>
+      <member name="superscript_baseline_drop_max"
+              value="14"
+              c:identifier="HB_OT_MATH_CONSTANT_SUPERSCRIPT_BASELINE_DROP_MAX"
+              glib:nick="superscript-baseline-drop-max">
+      </member>
+      <member name="sub_superscript_gap_min"
+              value="15"
+              c:identifier="HB_OT_MATH_CONSTANT_SUB_SUPERSCRIPT_GAP_MIN"
+              glib:nick="sub-superscript-gap-min">
+      </member>
+      <member name="superscript_bottom_max_with_subscript"
+              value="16"
+              c:identifier="HB_OT_MATH_CONSTANT_SUPERSCRIPT_BOTTOM_MAX_WITH_SUBSCRIPT"
+              glib:nick="superscript-bottom-max-with-subscript">
+      </member>
+      <member name="space_after_script"
+              value="17"
+              c:identifier="HB_OT_MATH_CONSTANT_SPACE_AFTER_SCRIPT"
+              glib:nick="space-after-script">
+      </member>
+      <member name="upper_limit_gap_min"
+              value="18"
+              c:identifier="HB_OT_MATH_CONSTANT_UPPER_LIMIT_GAP_MIN"
+              glib:nick="upper-limit-gap-min">
+      </member>
+      <member name="upper_limit_baseline_rise_min"
+              value="19"
+              c:identifier="HB_OT_MATH_CONSTANT_UPPER_LIMIT_BASELINE_RISE_MIN"
+              glib:nick="upper-limit-baseline-rise-min">
+      </member>
+      <member name="lower_limit_gap_min"
+              value="20"
+              c:identifier="HB_OT_MATH_CONSTANT_LOWER_LIMIT_GAP_MIN"
+              glib:nick="lower-limit-gap-min">
+      </member>
+      <member name="lower_limit_baseline_drop_min"
+              value="21"
+              c:identifier="HB_OT_MATH_CONSTANT_LOWER_LIMIT_BASELINE_DROP_MIN"
+              glib:nick="lower-limit-baseline-drop-min">
+      </member>
+      <member name="stack_top_shift_up"
+              value="22"
+              c:identifier="HB_OT_MATH_CONSTANT_STACK_TOP_SHIFT_UP"
+              glib:nick="stack-top-shift-up">
+      </member>
+      <member name="stack_top_display_style_shift_up"
+              value="23"
+              c:identifier="HB_OT_MATH_CONSTANT_STACK_TOP_DISPLAY_STYLE_SHIFT_UP"
+              glib:nick="stack-top-display-style-shift-up">
+      </member>
+      <member name="stack_bottom_shift_down"
+              value="24"
+              c:identifier="HB_OT_MATH_CONSTANT_STACK_BOTTOM_SHIFT_DOWN"
+              glib:nick="stack-bottom-shift-down">
+      </member>
+      <member name="stack_bottom_display_style_shift_down"
+              value="25"
+              c:identifier="HB_OT_MATH_CONSTANT_STACK_BOTTOM_DISPLAY_STYLE_SHIFT_DOWN"
+              glib:nick="stack-bottom-display-style-shift-down">
+      </member>
+      <member name="stack_gap_min"
+              value="26"
+              c:identifier="HB_OT_MATH_CONSTANT_STACK_GAP_MIN"
+              glib:nick="stack-gap-min">
+      </member>
+      <member name="stack_display_style_gap_min"
+              value="27"
+              c:identifier="HB_OT_MATH_CONSTANT_STACK_DISPLAY_STYLE_GAP_MIN"
+              glib:nick="stack-display-style-gap-min">
+      </member>
+      <member name="stretch_stack_top_shift_up"
+              value="28"
+              c:identifier="HB_OT_MATH_CONSTANT_STRETCH_STACK_TOP_SHIFT_UP"
+              glib:nick="stretch-stack-top-shift-up">
+      </member>
+      <member name="stretch_stack_bottom_shift_down"
+              value="29"
+              c:identifier="HB_OT_MATH_CONSTANT_STRETCH_STACK_BOTTOM_SHIFT_DOWN"
+              glib:nick="stretch-stack-bottom-shift-down">
+      </member>
+      <member name="stretch_stack_gap_above_min"
+              value="30"
+              c:identifier="HB_OT_MATH_CONSTANT_STRETCH_STACK_GAP_ABOVE_MIN"
+              glib:nick="stretch-stack-gap-above-min">
+      </member>
+      <member name="stretch_stack_gap_below_min"
+              value="31"
+              c:identifier="HB_OT_MATH_CONSTANT_STRETCH_STACK_GAP_BELOW_MIN"
+              glib:nick="stretch-stack-gap-below-min">
+      </member>
+      <member name="fraction_numerator_shift_up"
+              value="32"
+              c:identifier="HB_OT_MATH_CONSTANT_FRACTION_NUMERATOR_SHIFT_UP"
+              glib:nick="fraction-numerator-shift-up">
+      </member>
+      <member name="fraction_numerator_display_style_shift_up"
+              value="33"
+              c:identifier="HB_OT_MATH_CONSTANT_FRACTION_NUMERATOR_DISPLAY_STYLE_SHIFT_UP"
+              glib:nick="fraction-numerator-display-style-shift-up">
+      </member>
+      <member name="fraction_denominator_shift_down"
+              value="34"
+              c:identifier="HB_OT_MATH_CONSTANT_FRACTION_DENOMINATOR_SHIFT_DOWN"
+              glib:nick="fraction-denominator-shift-down">
+      </member>
+      <member name="fraction_denominator_display_style_shift_down"
+              value="35"
+              c:identifier="HB_OT_MATH_CONSTANT_FRACTION_DENOMINATOR_DISPLAY_STYLE_SHIFT_DOWN"
+              glib:nick="fraction-denominator-display-style-shift-down">
+      </member>
+      <member name="fraction_numerator_gap_min"
+              value="36"
+              c:identifier="HB_OT_MATH_CONSTANT_FRACTION_NUMERATOR_GAP_MIN"
+              glib:nick="fraction-numerator-gap-min">
+      </member>
+      <member name="fraction_num_display_style_gap_min"
+              value="37"
+              c:identifier="HB_OT_MATH_CONSTANT_FRACTION_NUM_DISPLAY_STYLE_GAP_MIN"
+              glib:nick="fraction-num-display-style-gap-min">
+      </member>
+      <member name="fraction_rule_thickness"
+              value="38"
+              c:identifier="HB_OT_MATH_CONSTANT_FRACTION_RULE_THICKNESS"
+              glib:nick="fraction-rule-thickness">
+      </member>
+      <member name="fraction_denominator_gap_min"
+              value="39"
+              c:identifier="HB_OT_MATH_CONSTANT_FRACTION_DENOMINATOR_GAP_MIN"
+              glib:nick="fraction-denominator-gap-min">
+      </member>
+      <member name="fraction_denom_display_style_gap_min"
+              value="40"
+              c:identifier="HB_OT_MATH_CONSTANT_FRACTION_DENOM_DISPLAY_STYLE_GAP_MIN"
+              glib:nick="fraction-denom-display-style-gap-min">
+      </member>
+      <member name="skewed_fraction_horizontal_gap"
+              value="41"
+              c:identifier="HB_OT_MATH_CONSTANT_SKEWED_FRACTION_HORIZONTAL_GAP"
+              glib:nick="skewed-fraction-horizontal-gap">
+      </member>
+      <member name="skewed_fraction_vertical_gap"
+              value="42"
+              c:identifier="HB_OT_MATH_CONSTANT_SKEWED_FRACTION_VERTICAL_GAP"
+              glib:nick="skewed-fraction-vertical-gap">
+      </member>
+      <member name="overbar_vertical_gap"
+              value="43"
+              c:identifier="HB_OT_MATH_CONSTANT_OVERBAR_VERTICAL_GAP"
+              glib:nick="overbar-vertical-gap">
+      </member>
+      <member name="overbar_rule_thickness"
+              value="44"
+              c:identifier="HB_OT_MATH_CONSTANT_OVERBAR_RULE_THICKNESS"
+              glib:nick="overbar-rule-thickness">
+      </member>
+      <member name="overbar_extra_ascender"
+              value="45"
+              c:identifier="HB_OT_MATH_CONSTANT_OVERBAR_EXTRA_ASCENDER"
+              glib:nick="overbar-extra-ascender">
+      </member>
+      <member name="underbar_vertical_gap"
+              value="46"
+              c:identifier="HB_OT_MATH_CONSTANT_UNDERBAR_VERTICAL_GAP"
+              glib:nick="underbar-vertical-gap">
+      </member>
+      <member name="underbar_rule_thickness"
+              value="47"
+              c:identifier="HB_OT_MATH_CONSTANT_UNDERBAR_RULE_THICKNESS"
+              glib:nick="underbar-rule-thickness">
+      </member>
+      <member name="underbar_extra_descender"
+              value="48"
+              c:identifier="HB_OT_MATH_CONSTANT_UNDERBAR_EXTRA_DESCENDER"
+              glib:nick="underbar-extra-descender">
+      </member>
+      <member name="radical_vertical_gap"
+              value="49"
+              c:identifier="HB_OT_MATH_CONSTANT_RADICAL_VERTICAL_GAP"
+              glib:nick="radical-vertical-gap">
+      </member>
+      <member name="radical_display_style_vertical_gap"
+              value="50"
+              c:identifier="HB_OT_MATH_CONSTANT_RADICAL_DISPLAY_STYLE_VERTICAL_GAP"
+              glib:nick="radical-display-style-vertical-gap">
+      </member>
+      <member name="radical_rule_thickness"
+              value="51"
+              c:identifier="HB_OT_MATH_CONSTANT_RADICAL_RULE_THICKNESS"
+              glib:nick="radical-rule-thickness">
+      </member>
+      <member name="radical_extra_ascender"
+              value="52"
+              c:identifier="HB_OT_MATH_CONSTANT_RADICAL_EXTRA_ASCENDER"
+              glib:nick="radical-extra-ascender">
+      </member>
+      <member name="radical_kern_before_degree"
+              value="53"
+              c:identifier="HB_OT_MATH_CONSTANT_RADICAL_KERN_BEFORE_DEGREE"
+              glib:nick="radical-kern-before-degree">
+      </member>
+      <member name="radical_kern_after_degree"
+              value="54"
+              c:identifier="HB_OT_MATH_CONSTANT_RADICAL_KERN_AFTER_DEGREE"
+              glib:nick="radical-kern-after-degree">
+      </member>
+      <member name="radical_degree_bottom_raise_percent"
+              value="55"
+              c:identifier="HB_OT_MATH_CONSTANT_RADICAL_DEGREE_BOTTOM_RAISE_PERCENT"
+              glib:nick="radical-degree-bottom-raise-percent">
+      </member>
+    </enumeration>
+    <function name="ot_math_get_constant"
+              c:identifier="hb_ot_math_get_constant"
+              version="1.3.3">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-math.cc"
+           line="69">Fetches the specified math constant. For most constants, the value returned
+is an #hb_position_t.
+
+However, if the requested constant is #HB_OT_MATH_CONSTANT_SCRIPT_PERCENT_SCALE_DOWN,
+#HB_OT_MATH_CONSTANT_SCRIPT_SCRIPT_PERCENT_SCALE_DOWN or
+#HB_OT_MATH_CONSTANT_SCRIPT_PERCENT_SCALE_DOWN, then the return value is
+an integer between 0 and 100 representing that percentage.</doc>
+      <source-position filename="../src/hb-ot-math.h" line="185"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-math.cc"
+             line="82">the requested constant or zero</doc>
+        <type name="position_t" c:type="hb_position_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-math.cc"
+               line="71">#hb_font_t to work upon</doc>
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+        <parameter name="constant" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-math.cc"
+               line="72">#hb_ot_math_constant_t the constant to retrieve</doc>
+          <type name="ot_math_constant_t" c:type="hb_ot_math_constant_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ot_math_get_glyph_assembly"
+              c:identifier="hb_ot_math_get_glyph_assembly"
+              version="1.3.3">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-math.cc"
+           line="249">Fetches the GlyphAssembly for the specified font, glyph index, and direction.
+Returned are a list of #hb_ot_math_glyph_part_t glyph parts that can be
+used to draw the glyph and an italics-correction value (if one is defined
+in the font).
+
+&lt;note&gt;The @direction parameter is only used to select between horizontal
+or vertical directions for the construction. Even though all #hb_direction_t
+values are accepted, only the result of #HB_DIRECTION_IS_HORIZONTAL is
+considered.&lt;/note&gt;</doc>
+      <source-position filename="../src/hb-ot-math.h" line="219"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-math.cc"
+             line="270">the total number of parts in the glyph assembly</doc>
+        <type name="guint" c:type="unsigned int"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-math.cc"
+               line="251">#hb_font_t to work upon</doc>
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+        <parameter name="glyph" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-math.cc"
+               line="252">The index of the glyph to stretch</doc>
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+        <parameter name="direction" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-math.cc"
+               line="253">direction of the stretching (horizontal or vertical)</doc>
+          <type name="direction_t" c:type="hb_direction_t"/>
+        </parameter>
+        <parameter name="start_offset" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-math.cc"
+               line="254">offset of the first glyph part to retrieve</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="parts_count"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-math.cc"
+               line="255">Input = maximum number of glyph parts to return;
+              Output = actual number of parts returned</doc>
+          <type name="guint" c:type="unsigned int*"/>
+        </parameter>
+        <parameter name="parts"
+                   direction="out"
+                   caller-allocates="1"
+                   transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-math.cc"
+               line="257">the glyph parts returned</doc>
+          <array length="4"
+                 zero-terminated="0"
+                 c:type="hb_ot_math_glyph_part_t*">
+            <type name="ot_math_glyph_part_t"
+                  c:type="hb_ot_math_glyph_part_t"/>
+          </array>
+        </parameter>
+        <parameter name="italics_correction"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-math.cc"
+               line="258">italics correction of the glyph assembly</doc>
+          <type name="position_t" c:type="hb_position_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ot_math_get_glyph_italics_correction"
+              c:identifier="hb_ot_math_get_glyph_italics_correction"
+              version="1.3.3">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-math.cc"
+           line="93">Fetches an italics-correction value (if one exists) for the specified
+glyph index.</doc>
+      <source-position filename="../src/hb-ot-math.h" line="189"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-math.cc"
+             line="101">the italics correction of the glyph or zero</doc>
+        <type name="position_t" c:type="hb_position_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-math.cc"
+               line="95">#hb_font_t to work upon</doc>
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+        <parameter name="glyph" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-math.cc"
+               line="96">The glyph index from which to retrieve the value</doc>
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ot_math_get_glyph_kerning"
+              c:identifier="hb_ot_math_get_glyph_kerning"
+              version="1.3.3">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-math.cc"
+           line="156">Fetches the math kerning (cut-ins) value for the specified font, glyph index, and
+@kern.
+
+If the MathKern table is found, the function examines it to find a height
+value that is greater or equal to @correction_height. If such a height
+value is found, corresponding kerning value from the table is returned. If
+no such height value is found, the last kerning value is returned.</doc>
+      <source-position filename="../src/hb-ot-math.h" line="201"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-math.cc"
+             line="171">requested kerning value or zero</doc>
+        <type name="position_t" c:type="hb_position_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-math.cc"
+               line="158">#hb_font_t to work upon</doc>
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+        <parameter name="glyph" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-math.cc"
+               line="159">The glyph index from which to retrieve the value</doc>
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+        <parameter name="kern" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-math.cc"
+               line="160">The #hb_ot_math_kern_t from which to retrieve the value</doc>
+          <type name="ot_math_kern_t" c:type="hb_ot_math_kern_t"/>
+        </parameter>
+        <parameter name="correction_height" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-math.cc"
+               line="161">the correction height to use to determine the kerning.</doc>
+          <type name="position_t" c:type="hb_position_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ot_math_get_glyph_top_accent_attachment"
+              c:identifier="hb_ot_math_get_glyph_top_accent_attachment"
+              version="1.3.3">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-math.cc"
+           line="112">Fetches a top-accent-attachment value (if one exists) for the specified
+glyph index.
+
+For any glyph that does not have a top-accent-attachment value - that is,
+a glyph not covered by the `MathTopAccentAttachment` table (or, when
+@font has no `MathTopAccentAttachment` table or no `MATH` table, any
+glyph) - the function synthesizes a value, returning the position at
+one-half the glyph's advance width.</doc>
+      <source-position filename="../src/hb-ot-math.h" line="193"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-math.cc"
+             line="126">the top accent attachment of the glyph or 0.5 * the advance
+              width of @glyph</doc>
+        <type name="position_t" c:type="hb_position_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-math.cc"
+               line="114">#hb_font_t to work upon</doc>
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+        <parameter name="glyph" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-math.cc"
+               line="115">The glyph index from which to retrieve the value</doc>
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ot_math_get_glyph_variants"
+              c:identifier="hb_ot_math_get_glyph_variants"
+              version="1.3.3">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-math.cc"
+           line="187">Fetches the MathGlyphConstruction for the specified font, glyph index, and
+direction. The corresponding list of size variants is returned as a list of
+#hb_ot_math_glyph_variant_t structs.
+
+&lt;note&gt;The @direction parameter is only used to select between horizontal
+or vertical directions for the construction. Even though all #hb_direction_t
+values are accepted, only the result of #HB_DIRECTION_IS_HORIZONTAL is
+considered.&lt;/note&gt;</doc>
+      <source-position filename="../src/hb-ot-math.h" line="207"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-math.cc"
+             line="206">the total number of size variants available or zero</doc>
+        <type name="guint" c:type="unsigned int"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-math.cc"
+               line="189">#hb_font_t to work upon</doc>
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+        <parameter name="glyph" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-math.cc"
+               line="190">The index of the glyph to stretch</doc>
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+        <parameter name="direction" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-math.cc"
+               line="191">The direction of the stretching (horizontal or vertical)</doc>
+          <type name="direction_t" c:type="hb_direction_t"/>
+        </parameter>
+        <parameter name="start_offset" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-math.cc"
+               line="192">offset of the first variant to retrieve</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="variants_count"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-math.cc"
+               line="193">Input = the maximum number of variants to return;
+                          Output = the actual number of variants returned</doc>
+          <type name="guint" c:type="unsigned int*"/>
+        </parameter>
+        <parameter name="variants"
+                   direction="out"
+                   caller-allocates="1"
+                   transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-math.cc"
+               line="195">array of variants returned</doc>
+          <array length="4"
+                 zero-terminated="0"
+                 c:type="hb_ot_math_glyph_variant_t*">
+            <type name="ot_math_glyph_variant_t"
+                  c:type="hb_ot_math_glyph_variant_t"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ot_math_get_min_connector_overlap"
+              c:identifier="hb_ot_math_get_min_connector_overlap"
+              version="1.3.3">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-math.cc"
+           line="224">Fetches the MathVariants table for the specified font and returns the
+minimum overlap of connecting glyphs that are required to draw a glyph
+assembly in the specified direction.
+
+&lt;note&gt;The @direction parameter is only used to select between horizontal
+or vertical directions for the construction. Even though all #hb_direction_t
+values are accepted, only the result of #HB_DIRECTION_IS_HORIZONTAL is
+considered.&lt;/note&gt;</doc>
+      <source-position filename="../src/hb-ot-math.h" line="215"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-math.cc"
+             line="238">requested minimum connector overlap or zero</doc>
+        <type name="position_t" c:type="hb_position_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-math.cc"
+               line="226">#hb_font_t to work upon</doc>
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+        <parameter name="direction" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-math.cc"
+               line="227">direction of the stretching (horizontal or vertical)</doc>
+          <type name="direction_t" c:type="hb_direction_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <bitfield name="ot_math_glyph_part_flags_t"
+              version="1.3.3"
+              glib:type-name="hb_ot_math_glyph_part_flags_t"
+              glib:get-type="hb_gobject_ot_math_glyph_part_flags_get_type"
+              c:type="hb_ot_math_glyph_part_flags_t">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-math.h"
+           line="146">Flags for math glyph parts.</doc>
+      <member name="extender"
+              value="1"
+              c:identifier="HB_OT_MATH_GLYPH_PART_FLAG_EXTENDER"
+              glib:nick="extender">
+      </member>
+    </bitfield>
+    <record name="ot_math_glyph_part_t"
+            c:type="hb_ot_math_glyph_part_t"
+            version="1.3.3"
+            glib:type-name="hb_ot_math_glyph_part_t"
+            glib:get-type="hb_gobject_ot_math_glyph_part_get_type"
+            c:symbol-prefix="gobject_ot_math_glyph_part">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-math.h"
+           line="157">Data type to hold information for a "part" component of a math-variant glyph.
+Large variants for stretchable math glyphs (such as parentheses) can be constructed
+on the fly from parts.</doc>
+      <source-position filename="../src/hb-ot-math.h" line="177"/>
+      <field name="glyph" writable="1">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-math.h"
+             line="159">The glyph index of the variant part</doc>
+        <type name="codepoint_t" c:type="hb_codepoint_t"/>
+      </field>
+      <field name="start_connector_length" writable="1">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-math.h"
+             line="160">The length of the connector on the starting side of the variant part</doc>
+        <type name="position_t" c:type="hb_position_t"/>
+      </field>
+      <field name="end_connector_length" writable="1">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-math.h"
+             line="161">The length of the connector on the ending side of the variant part</doc>
+        <type name="position_t" c:type="hb_position_t"/>
+      </field>
+      <field name="full_advance" writable="1">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-math.h"
+             line="162">The total advance of the part</doc>
+        <type name="position_t" c:type="hb_position_t"/>
+      </field>
+      <field name="flags" writable="1">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-math.h"
+             line="163">#hb_ot_math_glyph_part_flags_t flags for the part</doc>
+        <type name="ot_math_glyph_part_flags_t"
+              c:type="hb_ot_math_glyph_part_flags_t"/>
+      </field>
+    </record>
+    <record name="ot_math_glyph_variant_t"
+            c:type="hb_ot_math_glyph_variant_t"
+            version="1.3.3"
+            glib:type-name="hb_ot_math_glyph_variant_t"
+            glib:get-type="hb_gobject_ot_math_glyph_variant_get_type"
+            c:symbol-prefix="gobject_ot_math_glyph_variant">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-math.h"
+           line="132">Data type to hold math-variant information for a glyph.</doc>
+      <source-position filename="../src/hb-ot-math.h" line="144"/>
+      <field name="glyph" writable="1">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-math.h"
+             line="134">The glyph index of the variant</doc>
+        <type name="codepoint_t" c:type="hb_codepoint_t"/>
+      </field>
+      <field name="advance" writable="1">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-math.h"
+             line="135">The advance width of the variant</doc>
+        <type name="position_t" c:type="hb_position_t"/>
+      </field>
+    </record>
+    <function name="ot_math_has_data"
+              c:identifier="hb_ot_math_has_data"
+              version="1.3.3">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-math.cc"
+           line="53">Tests whether a face has a `MATH` table.</doc>
+      <source-position filename="../src/hb-ot-math.h" line="182"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-math.cc"
+             line="59">true if the table is found, false otherwise</doc>
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-math.cc"
+               line="55">#hb_face_t to test</doc>
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ot_math_is_glyph_extended_shape"
+              c:identifier="hb_ot_math_is_glyph_extended_shape"
+              version="1.3.3">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-math.cc"
+           line="138">Tests whether the given glyph index is an extended shape in the face.</doc>
+      <source-position filename="../src/hb-ot-math.h" line="197"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-math.cc"
+             line="145">true if the glyph is an extended shape, false otherwise</doc>
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-math.cc"
+               line="140">#hb_face_t to work upon</doc>
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+        <parameter name="glyph" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-math.cc"
+               line="141">The glyph index to test</doc>
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <enumeration name="ot_math_kern_t"
+                 version="1.3.3"
+                 glib:type-name="hb_ot_math_kern_t"
+                 glib:get-type="hb_gobject_ot_math_kern_get_type"
+                 c:type="hb_ot_math_kern_t">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-math.h"
+           line="117">The math kerning-table types defined for the four corners
+of a glyph.</doc>
+      <member name="top_right"
+              value="0"
+              c:identifier="HB_OT_MATH_KERN_TOP_RIGHT"
+              glib:nick="top-right">
+      </member>
+      <member name="top_left"
+              value="1"
+              c:identifier="HB_OT_MATH_KERN_TOP_LEFT"
+              glib:nick="top-left">
+      </member>
+      <member name="bottom_right"
+              value="2"
+              c:identifier="HB_OT_MATH_KERN_BOTTOM_RIGHT"
+              glib:nick="bottom-right">
+      </member>
+      <member name="bottom_left"
+              value="3"
+              c:identifier="HB_OT_MATH_KERN_BOTTOM_LEFT"
+              glib:nick="bottom-left">
+      </member>
+    </enumeration>
+    <function name="ot_meta_get_entry_tags"
+              c:identifier="hb_ot_meta_get_entry_tags"
+              version="2.6.0">
+      <source-position filename="../src/hb-ot-meta.h" line="61"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-meta.cc"
+             line="47">Number of all available feature types.</doc>
+        <type name="guint" c:type="unsigned int"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-meta.cc"
+               line="42">a face object</doc>
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+        <parameter name="start_offset" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-meta.cc"
+               line="43">iteration's start offset</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="entries_count"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   nullable="1">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-meta.cc"
+               line="44">buffer size as input, filled size as output</doc>
+          <type name="guint" c:type="unsigned int*"/>
+        </parameter>
+        <parameter name="entries"
+                   direction="out"
+                   caller-allocates="1"
+                   transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-meta.cc"
+               line="45">entries tags buffer</doc>
+          <array length="2" zero-terminated="0" c:type="hb_ot_meta_tag_t*">
+            <type name="ot_meta_tag_t" c:type="hb_ot_meta_tag_t"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ot_meta_reference_entry"
+              c:identifier="hb_ot_meta_reference_entry"
+              version="2.6.0">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-meta.cc"
+           line="60">It fetches metadata entry of a given tag from a font.</doc>
+      <source-position filename="../src/hb-ot-meta.h" line="67"/>
+      <return-value transfer-ownership="full">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-meta.cc"
+             line="67">A blob containing the blob.</doc>
+        <type name="blob_t" c:type="hb_blob_t*"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-meta.cc"
+               line="62">a #hb_face_t object.</doc>
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+        <parameter name="meta_tag" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-meta.cc"
+               line="63">tag of metadata you like to have.</doc>
+          <type name="ot_meta_tag_t" c:type="hb_ot_meta_tag_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <enumeration name="ot_meta_tag_t"
+                 version="2.6.0"
+                 glib:type-name="hb_ot_meta_tag_t"
+                 glib:get-type="hb_gobject_ot_meta_tag_get_type"
+                 c:type="hb_ot_meta_tag_t">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-meta.h"
+           line="36">Known metadata tags from https://docs.microsoft.com/en-us/typography/opentype/spec/meta</doc>
+      <member name="design_languages"
+              value="1684827751"
+              c:identifier="HB_OT_META_TAG_DESIGN_LANGUAGES"
+              glib:nick="design-languages">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-meta.h"
+             line="38">Design languages. Text, using only
+Basic Latin (ASCII) characters. Indicates languages and/or scripts
+for the user audiences that the font was primarily designed for.</doc>
+      </member>
+      <member name="supported_languages"
+              value="1936485991"
+              c:identifier="HB_OT_META_TAG_SUPPORTED_LANGUAGES"
+              glib:nick="supported-languages">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-meta.h"
+             line="41">Supported languages. Text, using
+only Basic Latin (ASCII) characters. Indicates languages and/or scripts
+that the font is declared to be capable of supporting.</doc>
+      </member>
+    </enumeration>
+    <function name="ot_metrics_get_position"
+              c:identifier="hb_ot_metrics_get_position"
+              version="2.6.0">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-metrics.cc"
+           line="111">It fetches metrics value corresponding to a given tag from a font.</doc>
+      <source-position filename="../src/hb-ot-metrics.h" line="107"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-metrics.cc"
+             line="119">Whether found the requested metrics in the font.</doc>
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-metrics.cc"
+               line="113">a #hb_font_t object.</doc>
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+        <parameter name="metrics_tag" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-metrics.cc"
+               line="114">tag of metrics value you like to fetch.</doc>
+          <type name="ot_metrics_tag_t" c:type="hb_ot_metrics_tag_t"/>
+        </parameter>
+        <parameter name="position"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   optional="1"
+                   allow-none="1">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-metrics.cc"
+               line="115">result of metrics value from the font.</doc>
+          <type name="position_t" c:type="hb_position_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ot_metrics_get_variation"
+              c:identifier="hb_ot_metrics_get_variation"
+              version="2.6.0">
+      <source-position filename="../src/hb-ot-metrics.h" line="112"/>
+      <return-value transfer-ownership="none">
+        <type name="gfloat" c:type="float"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+        <parameter name="metrics_tag" transfer-ownership="none">
+          <type name="ot_metrics_tag_t" c:type="hb_ot_metrics_tag_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ot_metrics_get_x_variation"
+              c:identifier="hb_ot_metrics_get_x_variation"
+              version="2.6.0">
+      <source-position filename="../src/hb-ot-metrics.h" line="115"/>
+      <return-value transfer-ownership="none">
+        <type name="position_t" c:type="hb_position_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+        <parameter name="metrics_tag" transfer-ownership="none">
+          <type name="ot_metrics_tag_t" c:type="hb_ot_metrics_tag_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ot_metrics_get_y_variation"
+              c:identifier="hb_ot_metrics_get_y_variation"
+              version="2.6.0">
+      <source-position filename="../src/hb-ot-metrics.h" line="118"/>
+      <return-value transfer-ownership="none">
+        <type name="position_t" c:type="hb_position_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+        <parameter name="metrics_tag" transfer-ownership="none">
+          <type name="ot_metrics_tag_t" c:type="hb_ot_metrics_tag_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <enumeration name="ot_metrics_tag_t"
+                 version="2.6.0"
+                 glib:type-name="hb_ot_metrics_tag_t"
+                 glib:get-type="hb_gobject_ot_metrics_tag_get_type"
+                 c:type="hb_ot_metrics_tag_t">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-metrics.h"
+           line="38">From https://docs.microsoft.com/en-us/typography/opentype/spec/mvar#value-tags</doc>
+      <member name="horizontal_ascender"
+              value="1751216995"
+              c:identifier="HB_OT_METRICS_TAG_HORIZONTAL_ASCENDER"
+              glib:nick="horizontal-ascender">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-metrics.h"
+             line="40">horizontal ascender.</doc>
+      </member>
+      <member name="horizontal_descender"
+              value="1751413603"
+              c:identifier="HB_OT_METRICS_TAG_HORIZONTAL_DESCENDER"
+              glib:nick="horizontal-descender">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-metrics.h"
+             line="41">horizontal descender.</doc>
+      </member>
+      <member name="horizontal_line_gap"
+              value="1751934832"
+              c:identifier="HB_OT_METRICS_TAG_HORIZONTAL_LINE_GAP"
+              glib:nick="horizontal-line-gap">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-metrics.h"
+             line="42">horizontal line gap.</doc>
+      </member>
+      <member name="horizontal_clipping_ascent"
+              value="1751346273"
+              c:identifier="HB_OT_METRICS_TAG_HORIZONTAL_CLIPPING_ASCENT"
+              glib:nick="horizontal-clipping-ascent">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-metrics.h"
+             line="43">horizontal clipping ascent.</doc>
+      </member>
+      <member name="horizontal_clipping_descent"
+              value="1751346276"
+              c:identifier="HB_OT_METRICS_TAG_HORIZONTAL_CLIPPING_DESCENT"
+              glib:nick="horizontal-clipping-descent">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-metrics.h"
+             line="44">horizontal clipping descent.</doc>
+      </member>
+      <member name="vertical_ascender"
+              value="1986098019"
+              c:identifier="HB_OT_METRICS_TAG_VERTICAL_ASCENDER"
+              glib:nick="vertical-ascender">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-metrics.h"
+             line="45">vertical ascender.</doc>
+      </member>
+      <member name="vertical_descender"
+              value="1986294627"
+              c:identifier="HB_OT_METRICS_TAG_VERTICAL_DESCENDER"
+              glib:nick="vertical-descender">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-metrics.h"
+             line="46">vertical descender.</doc>
+      </member>
+      <member name="vertical_line_gap"
+              value="1986815856"
+              c:identifier="HB_OT_METRICS_TAG_VERTICAL_LINE_GAP"
+              glib:nick="vertical-line-gap">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-metrics.h"
+             line="47">vertical line gap.</doc>
+      </member>
+      <member name="horizontal_caret_rise"
+              value="1751347827"
+              c:identifier="HB_OT_METRICS_TAG_HORIZONTAL_CARET_RISE"
+              glib:nick="horizontal-caret-rise">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-metrics.h"
+             line="48">horizontal caret rise.</doc>
+      </member>
+      <member name="horizontal_caret_run"
+              value="1751347822"
+              c:identifier="HB_OT_METRICS_TAG_HORIZONTAL_CARET_RUN"
+              glib:nick="horizontal-caret-run">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-metrics.h"
+             line="49">horizontal caret run.</doc>
+      </member>
+      <member name="horizontal_caret_offset"
+              value="1751347046"
+              c:identifier="HB_OT_METRICS_TAG_HORIZONTAL_CARET_OFFSET"
+              glib:nick="horizontal-caret-offset">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-metrics.h"
+             line="50">horizontal caret offset.</doc>
+      </member>
+      <member name="vertical_caret_rise"
+              value="1986228851"
+              c:identifier="HB_OT_METRICS_TAG_VERTICAL_CARET_RISE"
+              glib:nick="vertical-caret-rise">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-metrics.h"
+             line="51">vertical caret rise.</doc>
+      </member>
+      <member name="vertical_caret_run"
+              value="1986228846"
+              c:identifier="HB_OT_METRICS_TAG_VERTICAL_CARET_RUN"
+              glib:nick="vertical-caret-run">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-metrics.h"
+             line="52">vertical caret run.</doc>
+      </member>
+      <member name="vertical_caret_offset"
+              value="1986228070"
+              c:identifier="HB_OT_METRICS_TAG_VERTICAL_CARET_OFFSET"
+              glib:nick="vertical-caret-offset">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-metrics.h"
+             line="53">vertical caret offset.</doc>
+      </member>
+      <member name="x_height"
+              value="2020108148"
+              c:identifier="HB_OT_METRICS_TAG_X_HEIGHT"
+              glib:nick="x-height">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-metrics.h"
+             line="54">x height.</doc>
+      </member>
+      <member name="cap_height"
+              value="1668311156"
+              c:identifier="HB_OT_METRICS_TAG_CAP_HEIGHT"
+              glib:nick="cap-height">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-metrics.h"
+             line="55">cap height.</doc>
+      </member>
+      <member name="subscript_em_x_size"
+              value="1935833203"
+              c:identifier="HB_OT_METRICS_TAG_SUBSCRIPT_EM_X_SIZE"
+              glib:nick="subscript-em-x-size">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-metrics.h"
+             line="56">subscript em x size.</doc>
+      </member>
+      <member name="subscript_em_y_size"
+              value="1935833459"
+              c:identifier="HB_OT_METRICS_TAG_SUBSCRIPT_EM_Y_SIZE"
+              glib:nick="subscript-em-y-size">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-metrics.h"
+             line="57">subscript em y size.</doc>
+      </member>
+      <member name="subscript_em_x_offset"
+              value="1935833199"
+              c:identifier="HB_OT_METRICS_TAG_SUBSCRIPT_EM_X_OFFSET"
+              glib:nick="subscript-em-x-offset">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-metrics.h"
+             line="58">subscript em x offset.</doc>
+      </member>
+      <member name="subscript_em_y_offset"
+              value="1935833455"
+              c:identifier="HB_OT_METRICS_TAG_SUBSCRIPT_EM_Y_OFFSET"
+              glib:nick="subscript-em-y-offset">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-metrics.h"
+             line="59">subscript em y offset.</doc>
+      </member>
+      <member name="superscript_em_x_size"
+              value="1936750707"
+              c:identifier="HB_OT_METRICS_TAG_SUPERSCRIPT_EM_X_SIZE"
+              glib:nick="superscript-em-x-size">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-metrics.h"
+             line="60">superscript em x size.</doc>
+      </member>
+      <member name="superscript_em_y_size"
+              value="1936750963"
+              c:identifier="HB_OT_METRICS_TAG_SUPERSCRIPT_EM_Y_SIZE"
+              glib:nick="superscript-em-y-size">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-metrics.h"
+             line="61">superscript em y size.</doc>
+      </member>
+      <member name="superscript_em_x_offset"
+              value="1936750703"
+              c:identifier="HB_OT_METRICS_TAG_SUPERSCRIPT_EM_X_OFFSET"
+              glib:nick="superscript-em-x-offset">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-metrics.h"
+             line="62">superscript em x offset.</doc>
+      </member>
+      <member name="superscript_em_y_offset"
+              value="1936750959"
+              c:identifier="HB_OT_METRICS_TAG_SUPERSCRIPT_EM_Y_OFFSET"
+              glib:nick="superscript-em-y-offset">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-metrics.h"
+             line="63">superscript em y offset.</doc>
+      </member>
+      <member name="strikeout_size"
+              value="1937011315"
+              c:identifier="HB_OT_METRICS_TAG_STRIKEOUT_SIZE"
+              glib:nick="strikeout-size">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-metrics.h"
+             line="64">strikeout size.</doc>
+      </member>
+      <member name="strikeout_offset"
+              value="1937011311"
+              c:identifier="HB_OT_METRICS_TAG_STRIKEOUT_OFFSET"
+              glib:nick="strikeout-offset">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-metrics.h"
+             line="65">strikeout offset.</doc>
+      </member>
+      <member name="underline_size"
+              value="1970168947"
+              c:identifier="HB_OT_METRICS_TAG_UNDERLINE_SIZE"
+              glib:nick="underline-size">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-metrics.h"
+             line="66">underline size.</doc>
+      </member>
+      <member name="underline_offset"
+              value="1970168943"
+              c:identifier="HB_OT_METRICS_TAG_UNDERLINE_OFFSET"
+              glib:nick="underline-offset">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-metrics.h"
+             line="67">underline offset.</doc>
+      </member>
+    </enumeration>
+    <record name="ot_name_entry_t" c:type="hb_ot_name_entry_t" version="2.1.0">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-name.h"
+           line="82">Structure representing a name ID in a particular language.</doc>
+      <source-position filename="../src/hb-ot-name.h" line="98"/>
+      <field name="name_id" writable="1">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-name.h"
+             line="84">name ID</doc>
+        <type name="ot_name_id_t" c:type="hb_ot_name_id_t"/>
+      </field>
+      <field name="var" readable="0" private="1">
+        <type name="var_int_t" c:type="hb_var_int_t"/>
+      </field>
+      <field name="language" writable="1">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-name.h"
+             line="85">language</doc>
+        <type name="language_t" c:type="hb_language_t"/>
+      </field>
+    </record>
+    <function name="ot_name_get_utf16"
+              c:identifier="hb_ot_name_get_utf16"
+              version="2.1.0">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-name.cc"
+           line="175">Fetches a font name from the OpenType 'name' table.
+If @language is #HB_LANGUAGE_INVALID, English ("en") is assumed.
+Returns string in UTF-16 encoding.</doc>
+      <source-position filename="../src/hb-ot-name.h" line="113"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-name.cc"
+             line="188">full length of the requested string, or 0 if not found.</doc>
+        <type name="guint" c:type="unsigned int"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-name.cc"
+               line="177">font face.</doc>
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+        <parameter name="name_id" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-name.cc"
+               line="178">OpenType name identifier to fetch.</doc>
+          <type name="ot_name_id_t" c:type="hb_ot_name_id_t"/>
+        </parameter>
+        <parameter name="language" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-name.cc"
+               line="179">language to fetch the name for.</doc>
+          <type name="language_t" c:type="hb_language_t"/>
+        </parameter>
+        <parameter name="text_size"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   nullable="1">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-name.cc"
+               line="180">input size of @text buffer, and output size of
+                                  text written to buffer.</doc>
+          <type name="guint" c:type="unsigned int*"/>
+        </parameter>
+        <parameter name="text"
+                   direction="out"
+                   caller-allocates="1"
+                   transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-name.cc"
+               line="182">buffer to write fetched name into.</doc>
+          <array length="3" zero-terminated="0" c:type="uint16_t*">
+            <type name="guint16" c:type="uint16_t"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ot_name_get_utf32"
+              c:identifier="hb_ot_name_get_utf32"
+              version="2.1.0">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-name.cc"
+           line="201">Fetches a font name from the OpenType 'name' table.
+If @language is #HB_LANGUAGE_INVALID, English ("en") is assumed.
+Returns string in UTF-32 encoding.</doc>
+      <source-position filename="../src/hb-ot-name.h" line="120"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-name.cc"
+             line="214">full length of the requested string, or 0 if not found.</doc>
+        <type name="guint" c:type="unsigned int"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-name.cc"
+               line="203">font face.</doc>
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+        <parameter name="name_id" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-name.cc"
+               line="204">OpenType name identifier to fetch.</doc>
+          <type name="ot_name_id_t" c:type="hb_ot_name_id_t"/>
+        </parameter>
+        <parameter name="language" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-name.cc"
+               line="205">language to fetch the name for.</doc>
+          <type name="language_t" c:type="hb_language_t"/>
+        </parameter>
+        <parameter name="text_size"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   nullable="1">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-name.cc"
+               line="206">input size of @text buffer, and output size of
+                                  text written to buffer.</doc>
+          <type name="guint" c:type="unsigned int*"/>
+        </parameter>
+        <parameter name="text"
+                   direction="out"
+                   caller-allocates="1"
+                   transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-name.cc"
+               line="208">buffer to write fetched name into.</doc>
+          <array length="3" zero-terminated="0" c:type="uint32_t*">
+            <type name="guint32" c:type="uint32_t"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ot_name_get_utf8"
+              c:identifier="hb_ot_name_get_utf8"
+              version="2.1.0">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-name.cc"
+           line="148">Fetches a font name from the OpenType 'name' table.
+If @language is #HB_LANGUAGE_INVALID, English ("en") is assumed.
+Returns string in UTF-8 encoding.</doc>
+      <source-position filename="../src/hb-ot-name.h" line="106"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-name.cc"
+             line="161">full length of the requested string, or 0 if not found.</doc>
+        <type name="guint" c:type="unsigned int"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-name.cc"
+               line="150">font face.</doc>
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+        <parameter name="name_id" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-name.cc"
+               line="151">OpenType name identifier to fetch.</doc>
+          <type name="ot_name_id_t" c:type="hb_ot_name_id_t"/>
+        </parameter>
+        <parameter name="language" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-name.cc"
+               line="152">language to fetch the name for.</doc>
+          <type name="language_t" c:type="hb_language_t"/>
+        </parameter>
+        <parameter name="text_size"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   nullable="1">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-name.cc"
+               line="153">input size of @text buffer, and output size of
+                                  text written to buffer.</doc>
+          <type name="guint" c:type="unsigned int*"/>
+        </parameter>
+        <parameter name="text"
+                   direction="out"
+                   caller-allocates="1"
+                   transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-name.cc"
+               line="155">buffer to write fetched name into.</doc>
+          <array length="3" zero-terminated="0" c:type="char*">
+            <type name="utf8" c:type="char"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ot_name_list_names"
+              c:identifier="hb_ot_name_list_names"
+              version="2.1.0">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-name.cc"
+           line="46">Enumerates all available name IDs and language combinations. Returned
+array is owned by the @face and should not be modified.  It can be
+used as long as @face is alive.</doc>
+      <source-position filename="../src/hb-ot-name.h" line="101"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-name.cc"
+             line="55">Array of available name entries.</doc>
+        <array length="1"
+               zero-terminated="0"
+               c:type="const hb_ot_name_entry_t*">
+          <type name="ot_name_entry_t" c:type="hb_ot_name_entry_t"/>
+        </array>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-name.cc"
+               line="48">font face.</doc>
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+        <parameter name="num_entries"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   optional="1"
+                   allow-none="1">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-name.cc"
+               line="49">number of returned entries.</doc>
+          <type name="guint" c:type="unsigned int*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ot_shape_glyphs_closure"
+              c:identifier="hb_ot_shape_glyphs_closure"
+              version="0.9.2">
+      <source-position filename="../src/hb-ot-shape.h" line="40"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="buffer_t" c:type="hb_buffer_t*"/>
+        </parameter>
+        <parameter name="features" transfer-ownership="none">
+          <type name="feature_t" c:type="const hb_feature_t*"/>
+        </parameter>
+        <parameter name="num_features" transfer-ownership="none">
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="glyphs" transfer-ownership="none">
+          <type name="set_t" c:type="hb_set_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ot_tag_from_language"
+              c:identifier="hb_ot_tag_from_language">
+      <source-position filename="../src/hb-ot-deprecated.h" line="68"/>
+      <return-value transfer-ownership="none">
+        <type name="tag_t" c:type="hb_tag_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="language" transfer-ownership="none">
+          <type name="language_t" c:type="hb_language_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ot_tag_to_language"
+              c:identifier="hb_ot_tag_to_language"
+              version="0.9.2">
+      <source-position filename="../src/hb-ot-layout.h" line="80"/>
+      <return-value transfer-ownership="none">
+        <type name="language_t" c:type="hb_language_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="tag" transfer-ownership="none">
+          <type name="tag_t" c:type="hb_tag_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ot_tag_to_script" c:identifier="hb_ot_tag_to_script">
+      <source-position filename="../src/hb-ot-layout.h" line="77"/>
+      <return-value transfer-ownership="none">
+        <type name="script_t" c:type="hb_script_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="tag" transfer-ownership="none">
+          <type name="tag_t" c:type="hb_tag_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ot_tags_from_script" c:identifier="hb_ot_tags_from_script">
+      <source-position filename="../src/hb-ot-deprecated.h" line="63"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="script" transfer-ownership="none">
+          <type name="script_t" c:type="hb_script_t"/>
+        </parameter>
+        <parameter name="script_tag_1" transfer-ownership="none">
+          <type name="tag_t" c:type="hb_tag_t*"/>
+        </parameter>
+        <parameter name="script_tag_2" transfer-ownership="none">
+          <type name="tag_t" c:type="hb_tag_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ot_tags_from_script_and_language"
+              c:identifier="hb_ot_tags_from_script_and_language"
+              version="2.0.0">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-tag.cc"
+           line="349">Converts an #hb_script_t and an #hb_language_t to script and language tags.</doc>
+      <source-position filename="../src/hb-ot-layout.h" line="69"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="script" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-tag.cc"
+               line="351">an #hb_script_t to convert.</doc>
+          <type name="script_t" c:type="hb_script_t"/>
+        </parameter>
+        <parameter name="language" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-tag.cc"
+               line="352">an #hb_language_t to convert.</doc>
+          <type name="language_t" c:type="hb_language_t"/>
+        </parameter>
+        <parameter name="script_count"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-tag.cc"
+               line="353">maximum number of script tags to retrieve (IN)
+and actual number of script tags retrieved (OUT)</doc>
+          <type name="guint" c:type="unsigned int*"/>
+        </parameter>
+        <parameter name="script_tags"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   optional="1"
+                   allow-none="1">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-tag.cc"
+               line="355">array of size at least @script_count to store the
+script tag results</doc>
+          <type name="tag_t" c:type="hb_tag_t*"/>
+        </parameter>
+        <parameter name="language_count"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-tag.cc"
+               line="357">maximum number of language tags to retrieve
+(IN) and actual number of language tags retrieved (OUT)</doc>
+          <type name="guint" c:type="unsigned int*"/>
+        </parameter>
+        <parameter name="language_tags"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   optional="1"
+                   allow-none="1">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-tag.cc"
+               line="359">array of size at least @language_count to store
+the language tag results</doc>
+          <type name="tag_t" c:type="hb_tag_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ot_tags_to_script_and_language"
+              c:identifier="hb_ot_tags_to_script_and_language"
+              version="2.0.0">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-tag.cc"
+           line="476">Converts a script tag and a language tag to an #hb_script_t and an
+#hb_language_t.</doc>
+      <source-position filename="../src/hb-ot-layout.h" line="83"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="script_tag" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-tag.cc"
+               line="478">a script tag</doc>
+          <type name="tag_t" c:type="hb_tag_t"/>
+        </parameter>
+        <parameter name="language_tag" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-tag.cc"
+               line="479">a language tag</doc>
+          <type name="tag_t" c:type="hb_tag_t"/>
+        </parameter>
+        <parameter name="script"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-tag.cc"
+               line="480">the #hb_script_t corresponding to @script_tag (OUT).</doc>
+          <type name="script_t" c:type="hb_script_t*"/>
+        </parameter>
+        <parameter name="language"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-tag.cc"
+               line="481">the #hb_language_t corresponding to @script_tag and
+@language_tag (OUT).</doc>
+          <type name="language_t" c:type="hb_language_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <bitfield name="ot_var_axis_flags_t"
+              version="2.2.0"
+              glib:type-name="hb_ot_var_axis_flags_t"
+              glib:get-type="hb_gobject_ot_var_axis_flags_get_type"
+              c:type="hb_ot_var_axis_flags_t">
+      <member name="hidden"
+              value="1"
+              c:identifier="HB_OT_VAR_AXIS_FLAG_HIDDEN"
+              glib:nick="hidden">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-var.h"
+             line="64">The axis should not be exposed directly in user interfaces.</doc>
+      </member>
+    </bitfield>
+    <record name="ot_var_axis_info_t"
+            c:type="hb_ot_var_axis_info_t"
+            version="2.2.0">
+      <source-position filename="../src/hb-ot-var.h" line="90"/>
+      <field name="axis_index" writable="1">
+        <type name="guint" c:type="unsigned int"/>
+      </field>
+      <field name="tag" writable="1">
+        <type name="tag_t" c:type="hb_tag_t"/>
+      </field>
+      <field name="name_id" writable="1">
+        <type name="ot_name_id_t" c:type="hb_ot_name_id_t"/>
+      </field>
+      <field name="flags" writable="1">
+        <type name="ot_var_axis_flags_t" c:type="hb_ot_var_axis_flags_t"/>
+      </field>
+      <field name="min_value" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+      <field name="default_value" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+      <field name="max_value" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+      <field name="reserved" readable="0" private="1">
+        <type name="guint" c:type="unsigned int"/>
+      </field>
+    </record>
+    <record name="ot_var_axis_t"
+            c:type="hb_ot_var_axis_t"
+            version="1.4.2"
+            deprecated="1"
+            deprecated-version="2.2.0">
+      <source-position filename="../src/hb-ot-deprecated.h" line="92"/>
+      <field name="tag" writable="1">
+        <type name="tag_t" c:type="hb_tag_t"/>
+      </field>
+      <field name="name_id" writable="1">
+        <type name="ot_name_id_t" c:type="hb_ot_name_id_t"/>
+      </field>
+      <field name="min_value" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+      <field name="default_value" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+      <field name="max_value" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+    </record>
+    <function name="ot_var_find_axis"
+              c:identifier="hb_ot_var_find_axis"
+              version="1.4.2"
+              deprecated="1"
+              deprecated-version="2.2.0">
+      <source-position filename="../src/hb-ot-deprecated.h" line="101"/>
+      <return-value transfer-ownership="none">
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+        <parameter name="axis_tag" transfer-ownership="none">
+          <type name="tag_t" c:type="hb_tag_t"/>
+        </parameter>
+        <parameter name="axis_index" transfer-ownership="none">
+          <type name="guint" c:type="unsigned int*"/>
+        </parameter>
+        <parameter name="axis_info" transfer-ownership="none">
+          <type name="ot_var_axis_t" c:type="hb_ot_var_axis_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ot_var_find_axis_info"
+              c:identifier="hb_ot_var_find_axis_info"
+              version="2.2.0">
+      <source-position filename="../src/hb-ot-var.h" line="99"/>
+      <return-value transfer-ownership="none">
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+        <parameter name="axis_tag" transfer-ownership="none">
+          <type name="tag_t" c:type="hb_tag_t"/>
+        </parameter>
+        <parameter name="axis_info" transfer-ownership="none">
+          <type name="ot_var_axis_info_t" c:type="hb_ot_var_axis_info_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ot_var_get_axes"
+              c:identifier="hb_ot_var_get_axes"
+              version="1.4.2"
+              deprecated="1"
+              deprecated-version="2.2.0">
+      <source-position filename="../src/hb-ot-deprecated.h" line="95"/>
+      <return-value transfer-ownership="none">
+        <type name="guint" c:type="unsigned int"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+        <parameter name="start_offset" transfer-ownership="none">
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="axes_count" transfer-ownership="none">
+          <type name="guint" c:type="unsigned int*"/>
+        </parameter>
+        <parameter name="axes_array" transfer-ownership="none">
+          <type name="ot_var_axis_t" c:type="hb_ot_var_axis_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ot_var_get_axis_count"
+              c:identifier="hb_ot_var_get_axis_count"
+              version="1.4.2">
+      <source-position filename="../src/hb-ot-var.h" line="60"/>
+      <return-value transfer-ownership="none">
+        <type name="guint" c:type="unsigned int"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ot_var_get_axis_infos"
+              c:identifier="hb_ot_var_get_axis_infos"
+              version="2.2.0">
+      <source-position filename="../src/hb-ot-var.h" line="93"/>
+      <return-value transfer-ownership="none">
+        <type name="guint" c:type="unsigned int"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+        <parameter name="start_offset" transfer-ownership="none">
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="axes_count" transfer-ownership="none">
+          <type name="guint" c:type="unsigned int*"/>
+        </parameter>
+        <parameter name="axes_array" transfer-ownership="none">
+          <type name="ot_var_axis_info_t" c:type="hb_ot_var_axis_info_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ot_var_get_named_instance_count"
+              c:identifier="hb_ot_var_get_named_instance_count">
+      <source-position filename="../src/hb-ot-var.h" line="109"/>
+      <return-value transfer-ownership="none">
+        <type name="guint" c:type="unsigned int"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ot_var_has_data"
+              c:identifier="hb_ot_var_has_data"
+              version="1.4.2">
+      <doc xml:space="preserve"
+           filename="../src/hb-ot-var.cc"
+           line="53">This function allows to verify the presence of OpenType variation data on the face.</doc>
+      <source-position filename="../src/hb-ot-var.h" line="51"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-ot-var.cc"
+             line="59">true if face has a `fvar' table and false otherwise</doc>
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-ot-var.cc"
+               line="55">#hb_face_t to test</doc>
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ot_var_named_instance_get_design_coords"
+              c:identifier="hb_ot_var_named_instance_get_design_coords">
+      <source-position filename="../src/hb-ot-var.h" line="120"/>
+      <return-value transfer-ownership="none">
+        <type name="guint" c:type="unsigned int"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+        <parameter name="instance_index" transfer-ownership="none">
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="coords_length" transfer-ownership="none">
+          <type name="guint" c:type="unsigned int*"/>
+        </parameter>
+        <parameter name="coords" transfer-ownership="none">
+          <type name="gfloat" c:type="float*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ot_var_named_instance_get_postscript_name_id"
+              c:identifier="hb_ot_var_named_instance_get_postscript_name_id">
+      <source-position filename="../src/hb-ot-var.h" line="116"/>
+      <return-value transfer-ownership="none">
+        <type name="ot_name_id_t" c:type="hb_ot_name_id_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+        <parameter name="instance_index" transfer-ownership="none">
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ot_var_named_instance_get_subfamily_name_id"
+              c:identifier="hb_ot_var_named_instance_get_subfamily_name_id">
+      <source-position filename="../src/hb-ot-var.h" line="112"/>
+      <return-value transfer-ownership="none">
+        <type name="ot_name_id_t" c:type="hb_ot_name_id_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+        <parameter name="instance_index" transfer-ownership="none">
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ot_var_normalize_coords"
+              c:identifier="hb_ot_var_normalize_coords"
+              version="1.4.2">
+      <source-position filename="../src/hb-ot-var.h" line="138"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+        <parameter name="coords_length" transfer-ownership="none">
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="design_coords" transfer-ownership="none">
+          <type name="gfloat" c:type="const float*"/>
+        </parameter>
+        <parameter name="normalized_coords" transfer-ownership="none">
+          <type name="gint" c:type="int*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ot_var_normalize_variations"
+              c:identifier="hb_ot_var_normalize_variations"
+              version="1.4.2">
+      <source-position filename="../src/hb-ot-var.h" line="131"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+        <parameter name="variations" transfer-ownership="none">
+          <type name="variation_t" c:type="const hb_variation_t*"/>
+        </parameter>
+        <parameter name="variations_length" transfer-ownership="none">
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="coords" transfer-ownership="none">
+          <type name="gint" c:type="int*"/>
+        </parameter>
+        <parameter name="coords_length" transfer-ownership="none">
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <callback name="reference_table_func_t" c:type="hb_reference_table_func_t">
+      <source-position filename="../src/hb-face.h" line="55"/>
+      <return-value transfer-ownership="full">
+        <type name="blob_t" c:type="hb_blob_t*"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+        <parameter name="tag" transfer-ownership="none">
+          <type name="tag_t" c:type="hb_tag_t"/>
+        </parameter>
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1"
+                   closure="2">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <function name="script_from_iso15924_tag"
+              c:identifier="hb_script_from_iso15924_tag"
+              version="0.9.2">
+      <doc xml:space="preserve"
+           filename="../src/hb-common.cc"
+           line="422">Converts an ISO 15924 script tag to a corresponding #hb_script_t.</doc>
+      <source-position filename="../src/hb-common.h" line="399"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-common.cc"
+             line="428">An #hb_script_t corresponding to the ISO 15924 tag.</doc>
+        <type name="script_t" c:type="hb_script_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="tag" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-common.cc"
+               line="424">an #hb_tag_t representing an ISO 15924 tag.</doc>
+          <type name="tag_t" c:type="hb_tag_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="script_from_string"
+              c:identifier="hb_script_from_string"
+              version="0.9.2">
+      <doc xml:space="preserve"
+           filename="../src/hb-common.cc"
+           line="467">Converts a string @str representing an ISO 15924 script tag to a
+corresponding #hb_script_t. Shorthand for hb_tag_from_string() then
+hb_script_from_iso15924_tag().</doc>
+      <source-position filename="../src/hb-common.h" line="402"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-common.cc"
+             line="477">An #hb_script_t corresponding to the ISO 15924 tag.</doc>
+        <type name="script_t" c:type="hb_script_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="str" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-common.cc"
+               line="469">a string representing an
+      ISO 15924 tag.</doc>
+          <array length="1" zero-terminated="0" c:type="const char*">
+            <type name="guint8"/>
+          </array>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-common.cc"
+               line="471">length of the @str, or -1 if it is %NULL-terminated.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="script_get_horizontal_direction"
+              c:identifier="hb_script_get_horizontal_direction"
+              version="0.9.2">
+      <source-position filename="../src/hb-common.h" line="408"/>
+      <return-value transfer-ownership="none">
+        <type name="direction_t" c:type="hb_direction_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="script" transfer-ownership="none">
+          <type name="script_t" c:type="hb_script_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <enumeration name="script_t"
+                 glib:type-name="hb_script_t"
+                 glib:get-type="hb_gobject_script_get_type"
+                 c:type="hb_script_t">
+      <member name="common"
+              value="1517910393"
+              c:identifier="HB_SCRIPT_COMMON"
+              glib:nick="common">
+      </member>
+      <member name="inherited"
+              value="1516858984"
+              c:identifier="HB_SCRIPT_INHERITED"
+              glib:nick="inherited">
+      </member>
+      <member name="unknown"
+              value="1517976186"
+              c:identifier="HB_SCRIPT_UNKNOWN"
+              glib:nick="unknown">
+      </member>
+      <member name="arabic"
+              value="1098015074"
+              c:identifier="HB_SCRIPT_ARABIC"
+              glib:nick="arabic">
+      </member>
+      <member name="armenian"
+              value="1098018158"
+              c:identifier="HB_SCRIPT_ARMENIAN"
+              glib:nick="armenian">
+      </member>
+      <member name="bengali"
+              value="1113943655"
+              c:identifier="HB_SCRIPT_BENGALI"
+              glib:nick="bengali">
+      </member>
+      <member name="cyrillic"
+              value="1132032620"
+              c:identifier="HB_SCRIPT_CYRILLIC"
+              glib:nick="cyrillic">
+      </member>
+      <member name="devanagari"
+              value="1147500129"
+              c:identifier="HB_SCRIPT_DEVANAGARI"
+              glib:nick="devanagari">
+      </member>
+      <member name="georgian"
+              value="1197830002"
+              c:identifier="HB_SCRIPT_GEORGIAN"
+              glib:nick="georgian">
+      </member>
+      <member name="greek"
+              value="1198679403"
+              c:identifier="HB_SCRIPT_GREEK"
+              glib:nick="greek">
+      </member>
+      <member name="gujarati"
+              value="1198877298"
+              c:identifier="HB_SCRIPT_GUJARATI"
+              glib:nick="gujarati">
+      </member>
+      <member name="gurmukhi"
+              value="1198879349"
+              c:identifier="HB_SCRIPT_GURMUKHI"
+              glib:nick="gurmukhi">
+      </member>
+      <member name="hangul"
+              value="1214344807"
+              c:identifier="HB_SCRIPT_HANGUL"
+              glib:nick="hangul">
+      </member>
+      <member name="han"
+              value="1214344809"
+              c:identifier="HB_SCRIPT_HAN"
+              glib:nick="han">
+      </member>
+      <member name="hebrew"
+              value="1214603890"
+              c:identifier="HB_SCRIPT_HEBREW"
+              glib:nick="hebrew">
+      </member>
+      <member name="hiragana"
+              value="1214870113"
+              c:identifier="HB_SCRIPT_HIRAGANA"
+              glib:nick="hiragana">
+      </member>
+      <member name="kannada"
+              value="1265525857"
+              c:identifier="HB_SCRIPT_KANNADA"
+              glib:nick="kannada">
+      </member>
+      <member name="katakana"
+              value="1264676449"
+              c:identifier="HB_SCRIPT_KATAKANA"
+              glib:nick="katakana">
+      </member>
+      <member name="lao"
+              value="1281453935"
+              c:identifier="HB_SCRIPT_LAO"
+              glib:nick="lao">
+      </member>
+      <member name="latin"
+              value="1281455214"
+              c:identifier="HB_SCRIPT_LATIN"
+              glib:nick="latin">
+      </member>
+      <member name="malayalam"
+              value="1298954605"
+              c:identifier="HB_SCRIPT_MALAYALAM"
+              glib:nick="malayalam">
+      </member>
+      <member name="oriya"
+              value="1332902241"
+              c:identifier="HB_SCRIPT_ORIYA"
+              glib:nick="oriya">
+      </member>
+      <member name="tamil"
+              value="1415671148"
+              c:identifier="HB_SCRIPT_TAMIL"
+              glib:nick="tamil">
+      </member>
+      <member name="telugu"
+              value="1415933045"
+              c:identifier="HB_SCRIPT_TELUGU"
+              glib:nick="telugu">
+      </member>
+      <member name="thai"
+              value="1416126825"
+              c:identifier="HB_SCRIPT_THAI"
+              glib:nick="thai">
+      </member>
+      <member name="tibetan"
+              value="1416192628"
+              c:identifier="HB_SCRIPT_TIBETAN"
+              glib:nick="tibetan">
+      </member>
+      <member name="bopomofo"
+              value="1114599535"
+              c:identifier="HB_SCRIPT_BOPOMOFO"
+              glib:nick="bopomofo">
+      </member>
+      <member name="braille"
+              value="1114792297"
+              c:identifier="HB_SCRIPT_BRAILLE"
+              glib:nick="braille">
+      </member>
+      <member name="canadian_syllabics"
+              value="1130458739"
+              c:identifier="HB_SCRIPT_CANADIAN_SYLLABICS"
+              glib:nick="canadian-syllabics">
+      </member>
+      <member name="cherokee"
+              value="1130915186"
+              c:identifier="HB_SCRIPT_CHEROKEE"
+              glib:nick="cherokee">
+      </member>
+      <member name="ethiopic"
+              value="1165256809"
+              c:identifier="HB_SCRIPT_ETHIOPIC"
+              glib:nick="ethiopic">
+      </member>
+      <member name="khmer"
+              value="1265134962"
+              c:identifier="HB_SCRIPT_KHMER"
+              glib:nick="khmer">
+      </member>
+      <member name="mongolian"
+              value="1299148391"
+              c:identifier="HB_SCRIPT_MONGOLIAN"
+              glib:nick="mongolian">
+      </member>
+      <member name="myanmar"
+              value="1299803506"
+              c:identifier="HB_SCRIPT_MYANMAR"
+              glib:nick="myanmar">
+      </member>
+      <member name="ogham"
+              value="1332175213"
+              c:identifier="HB_SCRIPT_OGHAM"
+              glib:nick="ogham">
+      </member>
+      <member name="runic"
+              value="1383427698"
+              c:identifier="HB_SCRIPT_RUNIC"
+              glib:nick="runic">
+      </member>
+      <member name="sinhala"
+              value="1399418472"
+              c:identifier="HB_SCRIPT_SINHALA"
+              glib:nick="sinhala">
+      </member>
+      <member name="syriac"
+              value="1400468067"
+              c:identifier="HB_SCRIPT_SYRIAC"
+              glib:nick="syriac">
+      </member>
+      <member name="thaana"
+              value="1416126817"
+              c:identifier="HB_SCRIPT_THAANA"
+              glib:nick="thaana">
+      </member>
+      <member name="yi"
+              value="1500080489"
+              c:identifier="HB_SCRIPT_YI"
+              glib:nick="yi">
+      </member>
+      <member name="deseret"
+              value="1148416628"
+              c:identifier="HB_SCRIPT_DESERET"
+              glib:nick="deseret">
+      </member>
+      <member name="gothic"
+              value="1198486632"
+              c:identifier="HB_SCRIPT_GOTHIC"
+              glib:nick="gothic">
+      </member>
+      <member name="old_italic"
+              value="1232363884"
+              c:identifier="HB_SCRIPT_OLD_ITALIC"
+              glib:nick="old-italic">
+      </member>
+      <member name="buhid"
+              value="1114990692"
+              c:identifier="HB_SCRIPT_BUHID"
+              glib:nick="buhid">
+      </member>
+      <member name="hanunoo"
+              value="1214344815"
+              c:identifier="HB_SCRIPT_HANUNOO"
+              glib:nick="hanunoo">
+      </member>
+      <member name="tagalog"
+              value="1416064103"
+              c:identifier="HB_SCRIPT_TAGALOG"
+              glib:nick="tagalog">
+      </member>
+      <member name="tagbanwa"
+              value="1415669602"
+              c:identifier="HB_SCRIPT_TAGBANWA"
+              glib:nick="tagbanwa">
+      </member>
+      <member name="cypriot"
+              value="1131442804"
+              c:identifier="HB_SCRIPT_CYPRIOT"
+              glib:nick="cypriot">
+      </member>
+      <member name="limbu"
+              value="1281977698"
+              c:identifier="HB_SCRIPT_LIMBU"
+              glib:nick="limbu">
+      </member>
+      <member name="linear_b"
+              value="1281977954"
+              c:identifier="HB_SCRIPT_LINEAR_B"
+              glib:nick="linear-b">
+      </member>
+      <member name="osmanya"
+              value="1332964705"
+              c:identifier="HB_SCRIPT_OSMANYA"
+              glib:nick="osmanya">
+      </member>
+      <member name="shavian"
+              value="1399349623"
+              c:identifier="HB_SCRIPT_SHAVIAN"
+              glib:nick="shavian">
+      </member>
+      <member name="tai_le"
+              value="1415670885"
+              c:identifier="HB_SCRIPT_TAI_LE"
+              glib:nick="tai-le">
+      </member>
+      <member name="ugaritic"
+              value="1432838514"
+              c:identifier="HB_SCRIPT_UGARITIC"
+              glib:nick="ugaritic">
+      </member>
+      <member name="buginese"
+              value="1114990441"
+              c:identifier="HB_SCRIPT_BUGINESE"
+              glib:nick="buginese">
+      </member>
+      <member name="coptic"
+              value="1131376756"
+              c:identifier="HB_SCRIPT_COPTIC"
+              glib:nick="coptic">
+      </member>
+      <member name="glagolitic"
+              value="1198285159"
+              c:identifier="HB_SCRIPT_GLAGOLITIC"
+              glib:nick="glagolitic">
+      </member>
+      <member name="kharoshthi"
+              value="1265131890"
+              c:identifier="HB_SCRIPT_KHAROSHTHI"
+              glib:nick="kharoshthi">
+      </member>
+      <member name="new_tai_lue"
+              value="1415670901"
+              c:identifier="HB_SCRIPT_NEW_TAI_LUE"
+              glib:nick="new-tai-lue">
+      </member>
+      <member name="old_persian"
+              value="1483761007"
+              c:identifier="HB_SCRIPT_OLD_PERSIAN"
+              glib:nick="old-persian">
+      </member>
+      <member name="syloti_nagri"
+              value="1400466543"
+              c:identifier="HB_SCRIPT_SYLOTI_NAGRI"
+              glib:nick="syloti-nagri">
+      </member>
+      <member name="tifinagh"
+              value="1415999079"
+              c:identifier="HB_SCRIPT_TIFINAGH"
+              glib:nick="tifinagh">
+      </member>
+      <member name="balinese"
+              value="1113681001"
+              c:identifier="HB_SCRIPT_BALINESE"
+              glib:nick="balinese">
+      </member>
+      <member name="cuneiform"
+              value="1483961720"
+              c:identifier="HB_SCRIPT_CUNEIFORM"
+              glib:nick="cuneiform">
+      </member>
+      <member name="nko"
+              value="1315663727"
+              c:identifier="HB_SCRIPT_NKO"
+              glib:nick="nko">
+      </member>
+      <member name="phags_pa"
+              value="1349017959"
+              c:identifier="HB_SCRIPT_PHAGS_PA"
+              glib:nick="phags-pa">
+      </member>
+      <member name="phoenician"
+              value="1349021304"
+              c:identifier="HB_SCRIPT_PHOENICIAN"
+              glib:nick="phoenician">
+      </member>
+      <member name="carian"
+              value="1130459753"
+              c:identifier="HB_SCRIPT_CARIAN"
+              glib:nick="carian">
+      </member>
+      <member name="cham"
+              value="1130914157"
+              c:identifier="HB_SCRIPT_CHAM"
+              glib:nick="cham">
+      </member>
+      <member name="kayah_li"
+              value="1264675945"
+              c:identifier="HB_SCRIPT_KAYAH_LI"
+              glib:nick="kayah-li">
+      </member>
+      <member name="lepcha"
+              value="1281716323"
+              c:identifier="HB_SCRIPT_LEPCHA"
+              glib:nick="lepcha">
+      </member>
+      <member name="lycian"
+              value="1283023721"
+              c:identifier="HB_SCRIPT_LYCIAN"
+              glib:nick="lycian">
+      </member>
+      <member name="lydian"
+              value="1283023977"
+              c:identifier="HB_SCRIPT_LYDIAN"
+              glib:nick="lydian">
+      </member>
+      <member name="ol_chiki"
+              value="1332503403"
+              c:identifier="HB_SCRIPT_OL_CHIKI"
+              glib:nick="ol-chiki">
+      </member>
+      <member name="rejang"
+              value="1382706791"
+              c:identifier="HB_SCRIPT_REJANG"
+              glib:nick="rejang">
+      </member>
+      <member name="saurashtra"
+              value="1398895986"
+              c:identifier="HB_SCRIPT_SAURASHTRA"
+              glib:nick="saurashtra">
+      </member>
+      <member name="sundanese"
+              value="1400204900"
+              c:identifier="HB_SCRIPT_SUNDANESE"
+              glib:nick="sundanese">
+      </member>
+      <member name="vai"
+              value="1449224553"
+              c:identifier="HB_SCRIPT_VAI"
+              glib:nick="vai">
+      </member>
+      <member name="avestan"
+              value="1098281844"
+              c:identifier="HB_SCRIPT_AVESTAN"
+              glib:nick="avestan">
+      </member>
+      <member name="bamum"
+              value="1113681269"
+              c:identifier="HB_SCRIPT_BAMUM"
+              glib:nick="bamum">
+      </member>
+      <member name="egyptian_hieroglyphs"
+              value="1164409200"
+              c:identifier="HB_SCRIPT_EGYPTIAN_HIEROGLYPHS"
+              glib:nick="egyptian-hieroglyphs">
+      </member>
+      <member name="imperial_aramaic"
+              value="1098018153"
+              c:identifier="HB_SCRIPT_IMPERIAL_ARAMAIC"
+              glib:nick="imperial-aramaic">
+      </member>
+      <member name="inscriptional_pahlavi"
+              value="1349020777"
+              c:identifier="HB_SCRIPT_INSCRIPTIONAL_PAHLAVI"
+              glib:nick="inscriptional-pahlavi">
+      </member>
+      <member name="inscriptional_parthian"
+              value="1349678185"
+              c:identifier="HB_SCRIPT_INSCRIPTIONAL_PARTHIAN"
+              glib:nick="inscriptional-parthian">
+      </member>
+      <member name="javanese"
+              value="1247901281"
+              c:identifier="HB_SCRIPT_JAVANESE"
+              glib:nick="javanese">
+      </member>
+      <member name="kaithi"
+              value="1265920105"
+              c:identifier="HB_SCRIPT_KAITHI"
+              glib:nick="kaithi">
+      </member>
+      <member name="lisu"
+              value="1281979253"
+              c:identifier="HB_SCRIPT_LISU"
+              glib:nick="lisu">
+      </member>
+      <member name="meetei_mayek"
+              value="1299473769"
+              c:identifier="HB_SCRIPT_MEETEI_MAYEK"
+              glib:nick="meetei-mayek">
+      </member>
+      <member name="old_south_arabian"
+              value="1398895202"
+              c:identifier="HB_SCRIPT_OLD_SOUTH_ARABIAN"
+              glib:nick="old-south-arabian">
+      </member>
+      <member name="old_turkic"
+              value="1332898664"
+              c:identifier="HB_SCRIPT_OLD_TURKIC"
+              glib:nick="old-turkic">
+      </member>
+      <member name="samaritan"
+              value="1398893938"
+              c:identifier="HB_SCRIPT_SAMARITAN"
+              glib:nick="samaritan">
+      </member>
+      <member name="tai_tham"
+              value="1281453665"
+              c:identifier="HB_SCRIPT_TAI_THAM"
+              glib:nick="tai-tham">
+      </member>
+      <member name="tai_viet"
+              value="1415673460"
+              c:identifier="HB_SCRIPT_TAI_VIET"
+              glib:nick="tai-viet">
+      </member>
+      <member name="batak"
+              value="1113683051"
+              c:identifier="HB_SCRIPT_BATAK"
+              glib:nick="batak">
+      </member>
+      <member name="brahmi"
+              value="1114792296"
+              c:identifier="HB_SCRIPT_BRAHMI"
+              glib:nick="brahmi">
+      </member>
+      <member name="mandaic"
+              value="1298230884"
+              c:identifier="HB_SCRIPT_MANDAIC"
+              glib:nick="mandaic">
+      </member>
+      <member name="chakma"
+              value="1130457965"
+              c:identifier="HB_SCRIPT_CHAKMA"
+              glib:nick="chakma">
+      </member>
+      <member name="meroitic_cursive"
+              value="1298494051"
+              c:identifier="HB_SCRIPT_MEROITIC_CURSIVE"
+              glib:nick="meroitic-cursive">
+      </member>
+      <member name="meroitic_hieroglyphs"
+              value="1298494063"
+              c:identifier="HB_SCRIPT_MEROITIC_HIEROGLYPHS"
+              glib:nick="meroitic-hieroglyphs">
+      </member>
+      <member name="miao"
+              value="1349284452"
+              c:identifier="HB_SCRIPT_MIAO"
+              glib:nick="miao">
+      </member>
+      <member name="sharada"
+              value="1399353956"
+              c:identifier="HB_SCRIPT_SHARADA"
+              glib:nick="sharada">
+      </member>
+      <member name="sora_sompeng"
+              value="1399812705"
+              c:identifier="HB_SCRIPT_SORA_SOMPENG"
+              glib:nick="sora-sompeng">
+      </member>
+      <member name="takri"
+              value="1415670642"
+              c:identifier="HB_SCRIPT_TAKRI"
+              glib:nick="takri">
+      </member>
+      <member name="bassa_vah"
+              value="1113682803"
+              c:identifier="HB_SCRIPT_BASSA_VAH"
+              glib:nick="bassa-vah">
+      </member>
+      <member name="caucasian_albanian"
+              value="1097295970"
+              c:identifier="HB_SCRIPT_CAUCASIAN_ALBANIAN"
+              glib:nick="caucasian-albanian">
+      </member>
+      <member name="duployan"
+              value="1148547180"
+              c:identifier="HB_SCRIPT_DUPLOYAN"
+              glib:nick="duployan">
+      </member>
+      <member name="elbasan"
+              value="1164730977"
+              c:identifier="HB_SCRIPT_ELBASAN"
+              glib:nick="elbasan">
+      </member>
+      <member name="grantha"
+              value="1198678382"
+              c:identifier="HB_SCRIPT_GRANTHA"
+              glib:nick="grantha">
+      </member>
+      <member name="khojki"
+              value="1265135466"
+              c:identifier="HB_SCRIPT_KHOJKI"
+              glib:nick="khojki">
+      </member>
+      <member name="khudawadi"
+              value="1399418468"
+              c:identifier="HB_SCRIPT_KHUDAWADI"
+              glib:nick="khudawadi">
+      </member>
+      <member name="linear_a"
+              value="1281977953"
+              c:identifier="HB_SCRIPT_LINEAR_A"
+              glib:nick="linear-a">
+      </member>
+      <member name="mahajani"
+              value="1298229354"
+              c:identifier="HB_SCRIPT_MAHAJANI"
+              glib:nick="mahajani">
+      </member>
+      <member name="manichaean"
+              value="1298230889"
+              c:identifier="HB_SCRIPT_MANICHAEAN"
+              glib:nick="manichaean">
+      </member>
+      <member name="mende_kikakui"
+              value="1298493028"
+              c:identifier="HB_SCRIPT_MENDE_KIKAKUI"
+              glib:nick="mende-kikakui">
+      </member>
+      <member name="modi"
+              value="1299145833"
+              c:identifier="HB_SCRIPT_MODI"
+              glib:nick="modi">
+      </member>
+      <member name="mro"
+              value="1299345263"
+              c:identifier="HB_SCRIPT_MRO"
+              glib:nick="mro">
+      </member>
+      <member name="nabataean"
+              value="1315070324"
+              c:identifier="HB_SCRIPT_NABATAEAN"
+              glib:nick="nabataean">
+      </member>
+      <member name="old_north_arabian"
+              value="1315009122"
+              c:identifier="HB_SCRIPT_OLD_NORTH_ARABIAN"
+              glib:nick="old-north-arabian">
+      </member>
+      <member name="old_permic"
+              value="1348825709"
+              c:identifier="HB_SCRIPT_OLD_PERMIC"
+              glib:nick="old-permic">
+      </member>
+      <member name="pahawh_hmong"
+              value="1215131239"
+              c:identifier="HB_SCRIPT_PAHAWH_HMONG"
+              glib:nick="pahawh-hmong">
+      </member>
+      <member name="palmyrene"
+              value="1348562029"
+              c:identifier="HB_SCRIPT_PALMYRENE"
+              glib:nick="palmyrene">
+      </member>
+      <member name="pau_cin_hau"
+              value="1348564323"
+              c:identifier="HB_SCRIPT_PAU_CIN_HAU"
+              glib:nick="pau-cin-hau">
+      </member>
+      <member name="psalter_pahlavi"
+              value="1349020784"
+              c:identifier="HB_SCRIPT_PSALTER_PAHLAVI"
+              glib:nick="psalter-pahlavi">
+      </member>
+      <member name="siddham"
+              value="1399415908"
+              c:identifier="HB_SCRIPT_SIDDHAM"
+              glib:nick="siddham">
+      </member>
+      <member name="tirhuta"
+              value="1416196712"
+              c:identifier="HB_SCRIPT_TIRHUTA"
+              glib:nick="tirhuta">
+      </member>
+      <member name="warang_citi"
+              value="1466004065"
+              c:identifier="HB_SCRIPT_WARANG_CITI"
+              glib:nick="warang-citi">
+      </member>
+      <member name="ahom"
+              value="1097363309"
+              c:identifier="HB_SCRIPT_AHOM"
+              glib:nick="ahom">
+      </member>
+      <member name="anatolian_hieroglyphs"
+              value="1215067511"
+              c:identifier="HB_SCRIPT_ANATOLIAN_HIEROGLYPHS"
+              glib:nick="anatolian-hieroglyphs">
+      </member>
+      <member name="hatran"
+              value="1214346354"
+              c:identifier="HB_SCRIPT_HATRAN"
+              glib:nick="hatran">
+      </member>
+      <member name="multani"
+              value="1299541108"
+              c:identifier="HB_SCRIPT_MULTANI"
+              glib:nick="multani">
+      </member>
+      <member name="old_hungarian"
+              value="1215655527"
+              c:identifier="HB_SCRIPT_OLD_HUNGARIAN"
+              glib:nick="old-hungarian">
+      </member>
+      <member name="signwriting"
+              value="1399287415"
+              c:identifier="HB_SCRIPT_SIGNWRITING"
+              glib:nick="signwriting">
+      </member>
+      <member name="adlam"
+              value="1097100397"
+              c:identifier="HB_SCRIPT_ADLAM"
+              glib:nick="adlam">
+      </member>
+      <member name="bhaiksuki"
+              value="1114139507"
+              c:identifier="HB_SCRIPT_BHAIKSUKI"
+              glib:nick="bhaiksuki">
+      </member>
+      <member name="marchen"
+              value="1298231907"
+              c:identifier="HB_SCRIPT_MARCHEN"
+              glib:nick="marchen">
+      </member>
+      <member name="osage"
+              value="1332963173"
+              c:identifier="HB_SCRIPT_OSAGE"
+              glib:nick="osage">
+      </member>
+      <member name="tangut"
+              value="1415671399"
+              c:identifier="HB_SCRIPT_TANGUT"
+              glib:nick="tangut">
+      </member>
+      <member name="newa"
+              value="1315272545"
+              c:identifier="HB_SCRIPT_NEWA"
+              glib:nick="newa">
+      </member>
+      <member name="masaram_gondi"
+              value="1198485101"
+              c:identifier="HB_SCRIPT_MASARAM_GONDI"
+              glib:nick="masaram-gondi">
+      </member>
+      <member name="nushu"
+              value="1316186229"
+              c:identifier="HB_SCRIPT_NUSHU"
+              glib:nick="nushu">
+      </member>
+      <member name="soyombo"
+              value="1399814511"
+              c:identifier="HB_SCRIPT_SOYOMBO"
+              glib:nick="soyombo">
+      </member>
+      <member name="zanabazar_square"
+              value="1516334690"
+              c:identifier="HB_SCRIPT_ZANABAZAR_SQUARE"
+              glib:nick="zanabazar-square">
+      </member>
+      <member name="dogra"
+              value="1148151666"
+              c:identifier="HB_SCRIPT_DOGRA"
+              glib:nick="dogra">
+      </member>
+      <member name="gunjala_gondi"
+              value="1198485095"
+              c:identifier="HB_SCRIPT_GUNJALA_GONDI"
+              glib:nick="gunjala-gondi">
+      </member>
+      <member name="hanifi_rohingya"
+              value="1383032935"
+              c:identifier="HB_SCRIPT_HANIFI_ROHINGYA"
+              glib:nick="hanifi-rohingya">
+      </member>
+      <member name="makasar"
+              value="1298230113"
+              c:identifier="HB_SCRIPT_MAKASAR"
+              glib:nick="makasar">
+      </member>
+      <member name="medefaidrin"
+              value="1298490470"
+              c:identifier="HB_SCRIPT_MEDEFAIDRIN"
+              glib:nick="medefaidrin">
+      </member>
+      <member name="old_sogdian"
+              value="1399809903"
+              c:identifier="HB_SCRIPT_OLD_SOGDIAN"
+              glib:nick="old-sogdian">
+      </member>
+      <member name="sogdian"
+              value="1399809892"
+              c:identifier="HB_SCRIPT_SOGDIAN"
+              glib:nick="sogdian">
+      </member>
+      <member name="elymaic"
+              value="1164736877"
+              c:identifier="HB_SCRIPT_ELYMAIC"
+              glib:nick="elymaic">
+      </member>
+      <member name="nandinagari"
+              value="1315008100"
+              c:identifier="HB_SCRIPT_NANDINAGARI"
+              glib:nick="nandinagari">
+      </member>
+      <member name="nyiakeng_puachue_hmong"
+              value="1215131248"
+              c:identifier="HB_SCRIPT_NYIAKENG_PUACHUE_HMONG"
+              glib:nick="nyiakeng-puachue-hmong">
+      </member>
+      <member name="wancho"
+              value="1466132591"
+              c:identifier="HB_SCRIPT_WANCHO"
+              glib:nick="wancho">
+      </member>
+      <member name="chorasmian"
+              value="1130918515"
+              c:identifier="HB_SCRIPT_CHORASMIAN"
+              glib:nick="chorasmian">
+      </member>
+      <member name="dives_akuru"
+              value="1147756907"
+              c:identifier="HB_SCRIPT_DIVES_AKURU"
+              glib:nick="dives-akuru">
+      </member>
+      <member name="khitan_small_script"
+              value="1265202291"
+              c:identifier="HB_SCRIPT_KHITAN_SMALL_SCRIPT"
+              glib:nick="khitan-small-script">
+      </member>
+      <member name="yezidi"
+              value="1499822697"
+              c:identifier="HB_SCRIPT_YEZIDI"
+              glib:nick="yezidi">
+      </member>
+      <member name="invalid"
+              value="0"
+              c:identifier="HB_SCRIPT_INVALID"
+              glib:nick="invalid">
+      </member>
+    </enumeration>
+    <function name="script_to_iso15924_tag"
+              c:identifier="hb_script_to_iso15924_tag"
+              version="0.9.2">
+      <doc xml:space="preserve"
+           filename="../src/hb-common.cc"
+           line="488">See hb_script_from_iso15924_tag().</doc>
+      <source-position filename="../src/hb-common.h" line="405"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-common.cc"
+             line="494">An #hb_tag_t representing an ISO 15924 script tag.</doc>
+        <type name="tag_t" c:type="hb_tag_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="script" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-common.cc"
+               line="490">an #hb_script_t to convert.</doc>
+          <type name="script_t" c:type="hb_script_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="segment_properties_equal"
+              c:identifier="hb_segment_properties_equal"
+              version="0.9.7">
+      <doc xml:space="preserve"
+           filename="../src/hb-buffer.cc"
+           line="45">Checks the equality of two #hb_segment_properties_t's.</doc>
+      <source-position filename="../src/hb-buffer.h" line="161"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-buffer.cc"
+             line="52">%true if all properties of @a equal those of @b, false otherwise.</doc>
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="a" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="47">first #hb_segment_properties_t to compare.</doc>
+          <type name="segment_properties_t"
+                c:type="const hb_segment_properties_t*"/>
+        </parameter>
+        <parameter name="b" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="48">second #hb_segment_properties_t to compare.</doc>
+          <type name="segment_properties_t"
+                c:type="const hb_segment_properties_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="segment_properties_hash"
+              c:identifier="hb_segment_properties_hash"
+              version="0.9.7">
+      <doc xml:space="preserve"
+           filename="../src/hb-buffer.cc"
+           line="69">Creates a hash representing @p.</doc>
+      <source-position filename="../src/hb-buffer.h" line="165"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-buffer.cc"
+             line="75">A hash of @p.</doc>
+        <type name="guint" c:type="unsigned int"/>
+      </return-value>
+      <parameters>
+        <parameter name="p" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-buffer.cc"
+               line="71">#hb_segment_properties_t to hash.</doc>
+          <type name="segment_properties_t"
+                c:type="const hb_segment_properties_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <record name="segment_properties_t"
+            c:type="hb_segment_properties_t"
+            glib:type-name="hb_segment_properties_t"
+            glib:get-type="hb_gobject_segment_properties_get_type"
+            c:symbol-prefix="gobject_segment_properties">
+      <doc xml:space="preserve"
+           filename="../src/hb-buffer.h"
+           line="135">The structure that holds various text properties of an #hb_buffer_t. Can be
+set and retrieved using hb_buffer_set_segment_properties() and
+hb_buffer_get_segment_properties(), respectively.</doc>
+      <source-position filename="../src/hb-buffer.h" line="152"/>
+      <field name="direction" writable="1">
+        <doc xml:space="preserve"
+             filename="../src/hb-buffer.h"
+             line="137">the #hb_direction_t of the buffer, see hb_buffer_set_direction().</doc>
+        <type name="direction_t" c:type="hb_direction_t"/>
+      </field>
+      <field name="script" writable="1">
+        <doc xml:space="preserve"
+             filename="../src/hb-buffer.h"
+             line="138">the #hb_script_t of the buffer, see hb_buffer_set_script().</doc>
+        <type name="script_t" c:type="hb_script_t"/>
+      </field>
+      <field name="language" writable="1">
+        <doc xml:space="preserve"
+             filename="../src/hb-buffer.h"
+             line="139">the #hb_language_t of the buffer, see hb_buffer_set_language().</doc>
+        <type name="language_t" c:type="hb_language_t"/>
+      </field>
+      <field name="reserved1" readable="0" private="1">
+        <type name="gpointer" c:type="void*"/>
+      </field>
+      <field name="reserved2" readable="0" private="1">
+        <type name="gpointer" c:type="void*"/>
+      </field>
+    </record>
+    <function name="set_add" c:identifier="hb_set_add" version="0.9.2">
+      <source-position filename="../src/hb-set.h" line="86"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="set" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-set.cc"
+               line="210">a set.</doc>
+          <type name="set_t" c:type="hb_set_t*"/>
+        </parameter>
+        <parameter name="codepoint" transfer-ownership="none">
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_add_range"
+              c:identifier="hb_set_add_range"
+              version="0.9.7">
+      <source-position filename="../src/hb-set.h" line="90"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="set" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-set.cc"
+               line="226">a set.</doc>
+          <type name="set_t" c:type="hb_set_t*"/>
+        </parameter>
+        <parameter name="first" transfer-ownership="none">
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+        <parameter name="last" transfer-ownership="none">
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_allocation_successful"
+              c:identifier="hb_set_allocation_successful"
+              version="0.9.2">
+      <source-position filename="../src/hb-set.h" line="73"/>
+      <return-value transfer-ownership="none">
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="set" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-set.cc"
+               line="146">a set.</doc>
+          <type name="set_t" c:type="const hb_set_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_clear" c:identifier="hb_set_clear" version="0.9.2">
+      <source-position filename="../src/hb-set.h" line="76"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="set" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-set.cc"
+               line="162">a set.</doc>
+          <type name="set_t" c:type="hb_set_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_create" c:identifier="hb_set_create" version="0.9.2">
+      <source-position filename="../src/hb-set.h" line="48"/>
+      <return-value transfer-ownership="full">
+        <type name="set_t" c:type="hb_set_t*"/>
+      </return-value>
+    </function>
+    <function name="set_del" c:identifier="hb_set_del" version="0.9.2">
+      <source-position filename="../src/hb-set.h" line="95"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="set" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-set.cc"
+               line="244">a set.</doc>
+          <type name="set_t" c:type="hb_set_t*"/>
+        </parameter>
+        <parameter name="codepoint" transfer-ownership="none">
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_del_range"
+              c:identifier="hb_set_del_range"
+              version="0.9.7">
+      <source-position filename="../src/hb-set.h" line="99"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="set" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-set.cc"
+               line="260">a set.</doc>
+          <type name="set_t" c:type="hb_set_t*"/>
+        </parameter>
+        <parameter name="first" transfer-ownership="none">
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+        <parameter name="last" transfer-ownership="none">
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_destroy"
+              c:identifier="hb_set_destroy"
+              version="0.9.2"
+              introspectable="0">
+      <source-position filename="../src/hb-set.h" line="57"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="set" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-set.cc"
+               line="91">a set.</doc>
+          <type name="set_t" c:type="hb_set_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_get_empty"
+              c:identifier="hb_set_get_empty"
+              version="0.9.2">
+      <source-position filename="../src/hb-set.h" line="51"/>
+      <return-value transfer-ownership="full">
+        <type name="set_t" c:type="hb_set_t*"/>
+      </return-value>
+    </function>
+    <function name="set_get_max" c:identifier="hb_set_get_max" version="0.9.7">
+      <doc xml:space="preserve"
+           filename="../src/hb-set.cc"
+           line="441">Finds the maximum number in the set.</doc>
+      <source-position filename="../src/hb-set.h" line="140"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-set.cc"
+             line="447">minimum of the set, or %HB_SET_VALUE_INVALID if set is empty.</doc>
+        <type name="codepoint_t" c:type="hb_codepoint_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="set" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-set.cc"
+               line="443">a set.</doc>
+          <type name="set_t" c:type="const hb_set_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_get_min" c:identifier="hb_set_get_min" version="0.9.7">
+      <doc xml:space="preserve"
+           filename="../src/hb-set.cc"
+           line="425">Finds the minimum number in the set.</doc>
+      <source-position filename="../src/hb-set.h" line="136"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-set.cc"
+             line="431">minimum of the set, or %HB_SET_VALUE_INVALID if set is empty.</doc>
+        <type name="codepoint_t" c:type="hb_codepoint_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="set" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-set.cc"
+               line="427">a set.</doc>
+          <type name="set_t" c:type="const hb_set_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_get_population"
+              c:identifier="hb_set_get_population"
+              version="0.9.7">
+      <doc xml:space="preserve"
+           filename="../src/hb-set.cc"
+           line="409">Returns the number of numbers in the set.</doc>
+      <source-position filename="../src/hb-set.h" line="132"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-set.cc"
+             line="415">set population.</doc>
+        <type name="guint" c:type="unsigned int"/>
+      </return-value>
+      <parameters>
+        <parameter name="set" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-set.cc"
+               line="411">a set.</doc>
+          <type name="set_t" c:type="const hb_set_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_get_user_data"
+              c:identifier="hb_set_get_user_data"
+              version="0.9.2"
+              introspectable="0">
+      <source-position filename="../src/hb-set.h" line="67"/>
+      <return-value transfer-ownership="none" nullable="1">
+        <type name="gpointer" c:type="void*"/>
+      </return-value>
+      <parameters>
+        <parameter name="set" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-set.cc"
+               line="129">a set.</doc>
+          <type name="set_t" c:type="hb_set_t*"/>
+        </parameter>
+        <parameter name="key" transfer-ownership="none">
+          <type name="user_data_key_t" c:type="hb_user_data_key_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_has" c:identifier="hb_set_has" version="0.9.2">
+      <source-position filename="../src/hb-set.h" line="82"/>
+      <return-value transfer-ownership="none">
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="set" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-set.cc"
+               line="192">a set.</doc>
+          <type name="set_t" c:type="const hb_set_t*"/>
+        </parameter>
+        <parameter name="codepoint" transfer-ownership="none">
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_intersect"
+              c:identifier="hb_set_intersect"
+              version="0.9.2">
+      <source-position filename="../src/hb-set.h" line="120"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="set" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-set.cc"
+               line="346">a set.</doc>
+          <type name="set_t" c:type="hb_set_t*"/>
+        </parameter>
+        <parameter name="other" transfer-ownership="none">
+          <type name="set_t" c:type="const hb_set_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_invert"
+              c:identifier="hb_set_invert"
+              version="0.9.10"
+              deprecated="1"
+              deprecated-version="1.6.1">
+      <source-position filename="../src/hb-deprecated.h" line="72"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="set" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-set.cc"
+               line="395">a set.</doc>
+          <type name="set_t" c:type="hb_set_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_is_empty"
+              c:identifier="hb_set_is_empty"
+              version="0.9.7">
+      <source-position filename="../src/hb-set.h" line="79"/>
+      <return-value transfer-ownership="none">
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="set" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-set.cc"
+               line="176">a set.</doc>
+          <type name="set_t" c:type="const hb_set_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_is_equal"
+              c:identifier="hb_set_is_equal"
+              version="0.9.7">
+      <source-position filename="../src/hb-set.h" line="104"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-set.cc"
+             line="283">%TRUE if the two sets are equal, %FALSE otherwise.</doc>
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="set" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-set.cc"
+               line="278">a set.</doc>
+          <type name="set_t" c:type="const hb_set_t*"/>
+        </parameter>
+        <parameter name="other" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-set.cc"
+               line="279">other set.</doc>
+          <type name="set_t" c:type="const hb_set_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_is_subset"
+              c:identifier="hb_set_is_subset"
+              version="1.8.1">
+      <source-position filename="../src/hb-set.h" line="108"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-set.cc"
+             line="301">%TRUE if the @set is a subset of (or equal to) @larger_set, %FALSE otherwise.</doc>
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="set" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-set.cc"
+               line="296">a set.</doc>
+          <type name="set_t" c:type="const hb_set_t*"/>
+        </parameter>
+        <parameter name="larger_set" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-set.cc"
+               line="297">other set.</doc>
+          <type name="set_t" c:type="const hb_set_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_next" c:identifier="hb_set_next" version="0.9.2">
+      <doc xml:space="preserve"
+           filename="../src/hb-set.cc"
+           line="457">Gets the next number in @set that is greater than current value of @codepoint.
+
+Set @codepoint to %HB_SET_VALUE_INVALID to get started.</doc>
+      <source-position filename="../src/hb-set.h" line="144"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-set.cc"
+             line="466">whether there was a next value.</doc>
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="set" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-set.cc"
+               line="459">a set.</doc>
+          <type name="set_t" c:type="const hb_set_t*"/>
+        </parameter>
+        <parameter name="codepoint"
+                   direction="inout"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <type name="codepoint_t" c:type="hb_codepoint_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_next_range"
+              c:identifier="hb_set_next_range"
+              version="0.9.7">
+      <doc xml:space="preserve"
+           filename="../src/hb-set.cc"
+           line="497">Gets the next consecutive range of numbers in @set that
+are greater than current value of @last.
+
+Set @last to %HB_SET_VALUE_INVALID to get started.</doc>
+      <source-position filename="../src/hb-set.h" line="154"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-set.cc"
+             line="508">whether there was a next range.</doc>
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="set" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-set.cc"
+               line="499">a set.</doc>
+          <type name="set_t" c:type="const hb_set_t*"/>
+        </parameter>
+        <parameter name="first"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../src/hb-set.cc"
+               line="500">output first codepoint in the range.</doc>
+          <type name="codepoint_t" c:type="hb_codepoint_t*"/>
+        </parameter>
+        <parameter name="last"
+                   direction="inout"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../src/hb-set.cc"
+               line="501">input current last and output last codepoint in the range.</doc>
+          <type name="codepoint_t" c:type="hb_codepoint_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_previous"
+              c:identifier="hb_set_previous"
+              version="1.8.0">
+      <doc xml:space="preserve"
+           filename="../src/hb-set.cc"
+           line="477">Gets the previous number in @set that is lower than current value of @codepoint.
+
+Set @codepoint to %HB_SET_VALUE_INVALID to get started.</doc>
+      <source-position filename="../src/hb-set.h" line="149"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-set.cc"
+             line="486">whether there was a previous value.</doc>
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="set" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-set.cc"
+               line="479">a set.</doc>
+          <type name="set_t" c:type="const hb_set_t*"/>
+        </parameter>
+        <parameter name="codepoint"
+                   direction="inout"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <type name="codepoint_t" c:type="hb_codepoint_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_previous_range"
+              c:identifier="hb_set_previous_range"
+              version="1.8.0">
+      <doc xml:space="preserve"
+           filename="../src/hb-set.cc"
+           line="520">Gets the previous consecutive range of numbers in @set that
+are less than current value of @first.
+
+Set @first to %HB_SET_VALUE_INVALID to get started.</doc>
+      <source-position filename="../src/hb-set.h" line="160"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-set.cc"
+             line="531">whether there was a previous range.</doc>
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="set" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-set.cc"
+               line="522">a set.</doc>
+          <type name="set_t" c:type="const hb_set_t*"/>
+        </parameter>
+        <parameter name="first"
+                   direction="inout"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../src/hb-set.cc"
+               line="523">input current first and output first codepoint in the range.</doc>
+          <type name="codepoint_t" c:type="hb_codepoint_t*"/>
+        </parameter>
+        <parameter name="last"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../src/hb-set.cc"
+               line="524">output last codepoint in the range.</doc>
+          <type name="codepoint_t" c:type="hb_codepoint_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_reference"
+              c:identifier="hb_set_reference"
+              version="0.9.2"
+              introspectable="0">
+      <source-position filename="../src/hb-set.h" line="54"/>
+      <return-value transfer-ownership="full">
+        <type name="set_t" c:type="hb_set_t*"/>
+      </return-value>
+      <parameters>
+        <parameter name="set" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-set.cc"
+               line="77">a set.</doc>
+          <type name="set_t" c:type="hb_set_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_set" c:identifier="hb_set_set" version="0.9.2">
+      <source-position filename="../src/hb-set.h" line="112"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="set" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-set.cc"
+               line="314">a set.</doc>
+          <type name="set_t" c:type="hb_set_t*"/>
+        </parameter>
+        <parameter name="other" transfer-ownership="none">
+          <type name="set_t" c:type="const hb_set_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_set_user_data"
+              c:identifier="hb_set_set_user_data"
+              version="0.9.2"
+              introspectable="0">
+      <source-position filename="../src/hb-set.h" line="60"/>
+      <return-value transfer-ownership="none">
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="set" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-set.cc"
+               line="107">a set.</doc>
+          <type name="set_t" c:type="hb_set_t*"/>
+        </parameter>
+        <parameter name="key" transfer-ownership="none">
+          <type name="user_data_key_t" c:type="hb_user_data_key_t*"/>
+        </parameter>
+        <parameter name="data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+        <parameter name="destroy" transfer-ownership="none">
+          <type name="destroy_func_t" c:type="hb_destroy_func_t"/>
+        </parameter>
+        <parameter name="replace" transfer-ownership="none">
+          <type name="bool_t" c:type="hb_bool_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_subtract"
+              c:identifier="hb_set_subtract"
+              version="0.9.2">
+      <source-position filename="../src/hb-set.h" line="124"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="set" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-set.cc"
+               line="362">a set.</doc>
+          <type name="set_t" c:type="hb_set_t*"/>
+        </parameter>
+        <parameter name="other" transfer-ownership="none">
+          <type name="set_t" c:type="const hb_set_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_symmetric_difference"
+              c:identifier="hb_set_symmetric_difference"
+              version="0.9.2">
+      <source-position filename="../src/hb-set.h" line="128"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="set" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-set.cc"
+               line="378">a set.</doc>
+          <type name="set_t" c:type="hb_set_t*"/>
+        </parameter>
+        <parameter name="other" transfer-ownership="none">
+          <type name="set_t" c:type="const hb_set_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <record name="set_t"
+            c:type="hb_set_t"
+            glib:type-name="hb_set_t"
+            glib:get-type="hb_gobject_set_get_type"
+            c:symbol-prefix="gobject_set">
+      <source-position filename="../src/hb-set.h" line="44"/>
+    </record>
+    <function name="set_union" c:identifier="hb_set_union" version="0.9.2">
+      <source-position filename="../src/hb-set.h" line="116"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="set" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-set.cc"
+               line="330">a set.</doc>
+          <type name="set_t" c:type="hb_set_t*"/>
+        </parameter>
+        <parameter name="other" transfer-ownership="none">
+          <type name="set_t" c:type="const hb_set_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="shape" c:identifier="hb_shape" version="0.9.2">
+      <doc xml:space="preserve"
+           filename="../src/hb-shape.cc"
+           line="149">Shapes @buffer using @font turning its Unicode characters content to
+positioned glyphs. If @features is not %NULL, it will be used to control the
+features applied during shaping. If two @features have the same tag but
+overlapping ranges the value of the feature with the higher index takes
+precedence.</doc>
+      <source-position filename="../src/hb-shape.h" line="44"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-shape.cc"
+               line="151">an #hb_font_t to use for shaping</doc>
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+        <parameter name="buffer" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-shape.cc"
+               line="152">an #hb_buffer_t to shape</doc>
+          <type name="buffer_t" c:type="hb_buffer_t*"/>
+        </parameter>
+        <parameter name="features"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
+          <doc xml:space="preserve"
+               filename="../src/hb-shape.cc"
+               line="153">an array of user
+   specified #hb_feature_t or %NULL</doc>
+          <array length="3" zero-terminated="0" c:type="const hb_feature_t*">
+            <type name="feature_t" c:type="hb_feature_t"/>
+          </array>
+        </parameter>
+        <parameter name="num_features" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-shape.cc"
+               line="155">the length of @features array</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="shape_full" c:identifier="hb_shape_full" version="0.9.2">
+      <doc xml:space="preserve"
+           filename="../src/hb-shape.cc"
+           line="110">See hb_shape() for details. If @shaper_list is not %NULL, the specified
+shapers will be used in the given order, otherwise the default shapers list
+will be used.</doc>
+      <source-position filename="../src/hb-shape.h" line="50"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-shape.cc"
+             line="124">false if all shapers failed, true otherwise</doc>
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-shape.cc"
+               line="112">an #hb_font_t to use for shaping</doc>
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+        <parameter name="buffer" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-shape.cc"
+               line="113">an #hb_buffer_t to shape</doc>
+          <type name="buffer_t" c:type="hb_buffer_t*"/>
+        </parameter>
+        <parameter name="features"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
+          <doc xml:space="preserve"
+               filename="../src/hb-shape.cc"
+               line="114">an array of user
+   specified #hb_feature_t or %NULL</doc>
+          <array length="3" zero-terminated="0" c:type="const hb_feature_t*">
+            <type name="feature_t" c:type="hb_feature_t"/>
+          </array>
+        </parameter>
+        <parameter name="num_features" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-shape.cc"
+               line="116">the length of @features array</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="shaper_list"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
+          <doc xml:space="preserve"
+               filename="../src/hb-shape.cc"
+               line="117">a %NULL-terminated
+   array of shapers to use or %NULL</doc>
+          <array c:type="const char* const*">
+            <type name="utf8" c:type="char*"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="shape_list_shapers"
+              c:identifier="hb_shape_list_shapers"
+              version="0.9.2">
+      <doc xml:space="preserve"
+           filename="../src/hb-shape.cc"
+           line="93">Retrieves the list of shapers supported by HarfBuzz.</doc>
+      <source-position filename="../src/hb-shape.h" line="57"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-shape.cc"
+             line="98">an array of
+   constant strings</doc>
+        <array c:type="const char**">
+          <type name="utf8"/>
+        </array>
+      </return-value>
+    </function>
+    <function name="shape_plan_create"
+              c:identifier="hb_shape_plan_create"
+              version="0.9.7">
+      <source-position filename="../src/hb-shape-plan.h" line="42"/>
+      <return-value transfer-ownership="full">
+        <type name="shape_plan_t" c:type="hb_shape_plan_t*"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+        <parameter name="props" transfer-ownership="none">
+          <type name="segment_properties_t"
+                c:type="const hb_segment_properties_t*"/>
+        </parameter>
+        <parameter name="user_features" transfer-ownership="none">
+          <array length="3" zero-terminated="0" c:type="const hb_feature_t*">
+            <type name="feature_t" c:type="hb_feature_t"/>
+          </array>
+        </parameter>
+        <parameter name="num_user_features" transfer-ownership="none">
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="shaper_list" transfer-ownership="none">
+          <array c:type="const char* const*">
+            <type name="utf8" c:type="char*"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="shape_plan_create2" c:identifier="hb_shape_plan_create2">
+      <source-position filename="../src/hb-shape-plan.h" line="56"/>
+      <return-value transfer-ownership="full">
+        <type name="shape_plan_t" c:type="hb_shape_plan_t*"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+        <parameter name="props" transfer-ownership="none">
+          <type name="segment_properties_t"
+                c:type="const hb_segment_properties_t*"/>
+        </parameter>
+        <parameter name="user_features" transfer-ownership="none">
+          <type name="feature_t" c:type="const hb_feature_t*"/>
+        </parameter>
+        <parameter name="num_user_features" transfer-ownership="none">
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="coords" transfer-ownership="none">
+          <type name="gint" c:type="const int*"/>
+        </parameter>
+        <parameter name="num_coords" transfer-ownership="none">
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="shaper_list" transfer-ownership="none">
+          <type name="utf8" c:type="const char* const*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="shape_plan_create_cached"
+              c:identifier="hb_shape_plan_create_cached"
+              version="0.9.7">
+      <source-position filename="../src/hb-shape-plan.h" line="49"/>
+      <return-value transfer-ownership="full">
+        <type name="shape_plan_t" c:type="hb_shape_plan_t*"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+        <parameter name="props" transfer-ownership="none">
+          <type name="segment_properties_t"
+                c:type="const hb_segment_properties_t*"/>
+        </parameter>
+        <parameter name="user_features" transfer-ownership="none">
+          <array length="3" zero-terminated="0" c:type="const hb_feature_t*">
+            <type name="feature_t" c:type="hb_feature_t"/>
+          </array>
+        </parameter>
+        <parameter name="num_user_features" transfer-ownership="none">
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="shaper_list" transfer-ownership="none">
+          <array c:type="const char* const*">
+            <type name="utf8" c:type="char*"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="shape_plan_create_cached2"
+              c:identifier="hb_shape_plan_create_cached2">
+      <source-position filename="../src/hb-shape-plan.h" line="65"/>
+      <return-value transfer-ownership="full">
+        <type name="shape_plan_t" c:type="hb_shape_plan_t*"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <type name="face_t" c:type="hb_face_t*"/>
+        </parameter>
+        <parameter name="props" transfer-ownership="none">
+          <type name="segment_properties_t"
+                c:type="const hb_segment_properties_t*"/>
+        </parameter>
+        <parameter name="user_features" transfer-ownership="none">
+          <type name="feature_t" c:type="const hb_feature_t*"/>
+        </parameter>
+        <parameter name="num_user_features" transfer-ownership="none">
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="coords" transfer-ownership="none">
+          <type name="gint" c:type="const int*"/>
+        </parameter>
+        <parameter name="num_coords" transfer-ownership="none">
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="shaper_list" transfer-ownership="none">
+          <type name="utf8" c:type="const char* const*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="shape_plan_destroy"
+              c:identifier="hb_shape_plan_destroy"
+              version="0.9.7"
+              introspectable="0">
+      <source-position filename="../src/hb-shape-plan.h" line="81"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="shape_plan" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-shape-plan.cc"
+               line="281">a shape plan.</doc>
+          <type name="shape_plan_t" c:type="hb_shape_plan_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="shape_plan_execute"
+              c:identifier="hb_shape_plan_execute"
+              version="0.9.7">
+      <source-position filename="../src/hb-shape-plan.h" line="96"/>
+      <return-value transfer-ownership="none">
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="shape_plan" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-shape-plan.cc"
+               line="360">a shape plan.</doc>
+          <type name="shape_plan_t" c:type="hb_shape_plan_t*"/>
+        </parameter>
+        <parameter name="font" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-shape-plan.cc"
+               line="361">a font.</doc>
+          <type name="font_t" c:type="hb_font_t*"/>
+        </parameter>
+        <parameter name="buffer" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-shape-plan.cc"
+               line="362">a buffer.</doc>
+          <type name="buffer_t" c:type="hb_buffer_t*"/>
+        </parameter>
+        <parameter name="features" transfer-ownership="none">
+          <array length="4" zero-terminated="0" c:type="const hb_feature_t*">
+            <type name="feature_t" c:type="hb_feature_t"/>
+          </array>
+        </parameter>
+        <parameter name="num_features" transfer-ownership="none">
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="shape_plan_get_empty"
+              c:identifier="hb_shape_plan_get_empty"
+              version="0.9.7">
+      <source-position filename="../src/hb-shape-plan.h" line="75"/>
+      <return-value transfer-ownership="full">
+        <type name="shape_plan_t" c:type="hb_shape_plan_t*"/>
+      </return-value>
+    </function>
+    <function name="shape_plan_get_shaper"
+              c:identifier="hb_shape_plan_get_shaper"
+              version="0.9.7">
+      <source-position filename="../src/hb-shape-plan.h" line="103"/>
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="const char*"/>
+      </return-value>
+      <parameters>
+        <parameter name="shape_plan" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-shape-plan.cc"
+               line="343">a shape plan.</doc>
+          <type name="shape_plan_t" c:type="hb_shape_plan_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="shape_plan_get_user_data"
+              c:identifier="hb_shape_plan_get_user_data"
+              version="0.9.7"
+              introspectable="0">
+      <source-position filename="../src/hb-shape-plan.h" line="91"/>
+      <return-value transfer-ownership="none" nullable="1">
+        <type name="gpointer" c:type="void*"/>
+      </return-value>
+      <parameters>
+        <parameter name="shape_plan" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-shape-plan.cc"
+               line="325">a shape plan.</doc>
+          <type name="shape_plan_t" c:type="hb_shape_plan_t*"/>
+        </parameter>
+        <parameter name="key" transfer-ownership="none">
+          <type name="user_data_key_t" c:type="hb_user_data_key_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="shape_plan_reference"
+              c:identifier="hb_shape_plan_reference"
+              version="0.9.7"
+              introspectable="0">
+      <source-position filename="../src/hb-shape-plan.h" line="78"/>
+      <return-value transfer-ownership="full">
+        <type name="shape_plan_t" c:type="hb_shape_plan_t*"/>
+      </return-value>
+      <parameters>
+        <parameter name="shape_plan" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-shape-plan.cc"
+               line="265">a shape plan.</doc>
+          <type name="shape_plan_t" c:type="hb_shape_plan_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="shape_plan_set_user_data"
+              c:identifier="hb_shape_plan_set_user_data"
+              version="0.9.7"
+              introspectable="0">
+      <source-position filename="../src/hb-shape-plan.h" line="84"/>
+      <return-value transfer-ownership="none">
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="shape_plan" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-shape-plan.cc"
+               line="301">a shape plan.</doc>
+          <type name="shape_plan_t" c:type="hb_shape_plan_t*"/>
+        </parameter>
+        <parameter name="key" transfer-ownership="none">
+          <type name="user_data_key_t" c:type="hb_user_data_key_t*"/>
+        </parameter>
+        <parameter name="data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+        <parameter name="destroy" transfer-ownership="none">
+          <type name="destroy_func_t" c:type="hb_destroy_func_t"/>
+        </parameter>
+        <parameter name="replace" transfer-ownership="none">
+          <type name="bool_t" c:type="hb_bool_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <record name="shape_plan_t"
+            c:type="hb_shape_plan_t"
+            glib:type-name="hb_shape_plan_t"
+            glib:get-type="hb_gobject_shape_plan_get_type"
+            c:symbol-prefix="gobject_shape_plan">
+      <source-position filename="../src/hb-shape-plan.h" line="39"/>
+    </record>
+    <function name="tag_from_string"
+              c:identifier="hb_tag_from_string"
+              version="0.9.2">
+      <source-position filename="../src/hb-common.h" line="121"/>
+      <return-value transfer-ownership="none">
+        <type name="tag_t" c:type="hb_tag_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="str" transfer-ownership="none">
+          <array length="1" zero-terminated="0" c:type="const char*">
+            <type name="guint8"/>
+          </array>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="gint" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="tag_to_string"
+              c:identifier="hb_tag_to_string"
+              version="0.9.5">
+      <source-position filename="../src/hb-common.h" line="125"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="tag" transfer-ownership="none">
+          <type name="tag_t" c:type="hb_tag_t"/>
+        </parameter>
+        <parameter name="buf"
+                   direction="out"
+                   caller-allocates="1"
+                   transfer-ownership="none">
+          <array zero-terminated="0" c:type="char*" fixed-size="4">
+            <type name="guint8"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unicode_combining_class"
+              c:identifier="hb_unicode_combining_class"
+              version="0.9.2">
+      <source-position filename="../src/hb-unicode.h" line="360"/>
+      <return-value transfer-ownership="none">
+        <type name="unicode_combining_class_t"
+              c:type="hb_unicode_combining_class_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="ufuncs" transfer-ownership="none">
+          <type name="unicode_funcs_t" c:type="hb_unicode_funcs_t*"/>
+        </parameter>
+        <parameter name="unicode" transfer-ownership="none">
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <callback name="unicode_combining_class_func_t"
+              c:type="hb_unicode_combining_class_func_t">
+      <source-position filename="../src/hb-unicode.h" line="230"/>
+      <return-value transfer-ownership="none">
+        <type name="unicode_combining_class_t"
+              c:type="hb_unicode_combining_class_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="ufuncs" transfer-ownership="none">
+          <type name="unicode_funcs_t" c:type="hb_unicode_funcs_t*"/>
+        </parameter>
+        <parameter name="unicode" transfer-ownership="none">
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1"
+                   closure="2">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <enumeration name="unicode_combining_class_t"
+                 glib:type-name="hb_unicode_combining_class_t"
+                 glib:get-type="hb_gobject_unicode_combining_class_get_type"
+                 c:type="hb_unicode_combining_class_t">
+      <member name="not_reordered"
+              value="0"
+              c:identifier="HB_UNICODE_COMBINING_CLASS_NOT_REORDERED"
+              glib:nick="not-reordered">
+      </member>
+      <member name="overlay"
+              value="1"
+              c:identifier="HB_UNICODE_COMBINING_CLASS_OVERLAY"
+              glib:nick="overlay">
+      </member>
+      <member name="nukta"
+              value="7"
+              c:identifier="HB_UNICODE_COMBINING_CLASS_NUKTA"
+              glib:nick="nukta">
+      </member>
+      <member name="kana_voicing"
+              value="8"
+              c:identifier="HB_UNICODE_COMBINING_CLASS_KANA_VOICING"
+              glib:nick="kana-voicing">
+      </member>
+      <member name="virama"
+              value="9"
+              c:identifier="HB_UNICODE_COMBINING_CLASS_VIRAMA"
+              glib:nick="virama">
+      </member>
+      <member name="ccc10"
+              value="10"
+              c:identifier="HB_UNICODE_COMBINING_CLASS_CCC10"
+              glib:nick="ccc10">
+      </member>
+      <member name="ccc11"
+              value="11"
+              c:identifier="HB_UNICODE_COMBINING_CLASS_CCC11"
+              glib:nick="ccc11">
+      </member>
+      <member name="ccc12"
+              value="12"
+              c:identifier="HB_UNICODE_COMBINING_CLASS_CCC12"
+              glib:nick="ccc12">
+      </member>
+      <member name="ccc13"
+              value="13"
+              c:identifier="HB_UNICODE_COMBINING_CLASS_CCC13"
+              glib:nick="ccc13">
+      </member>
+      <member name="ccc14"
+              value="14"
+              c:identifier="HB_UNICODE_COMBINING_CLASS_CCC14"
+              glib:nick="ccc14">
+      </member>
+      <member name="ccc15"
+              value="15"
+              c:identifier="HB_UNICODE_COMBINING_CLASS_CCC15"
+              glib:nick="ccc15">
+      </member>
+      <member name="ccc16"
+              value="16"
+              c:identifier="HB_UNICODE_COMBINING_CLASS_CCC16"
+              glib:nick="ccc16">
+      </member>
+      <member name="ccc17"
+              value="17"
+              c:identifier="HB_UNICODE_COMBINING_CLASS_CCC17"
+              glib:nick="ccc17">
+      </member>
+      <member name="ccc18"
+              value="18"
+              c:identifier="HB_UNICODE_COMBINING_CLASS_CCC18"
+              glib:nick="ccc18">
+      </member>
+      <member name="ccc19"
+              value="19"
+              c:identifier="HB_UNICODE_COMBINING_CLASS_CCC19"
+              glib:nick="ccc19">
+      </member>
+      <member name="ccc20"
+              value="20"
+              c:identifier="HB_UNICODE_COMBINING_CLASS_CCC20"
+              glib:nick="ccc20">
+      </member>
+      <member name="ccc21"
+              value="21"
+              c:identifier="HB_UNICODE_COMBINING_CLASS_CCC21"
+              glib:nick="ccc21">
+      </member>
+      <member name="ccc22"
+              value="22"
+              c:identifier="HB_UNICODE_COMBINING_CLASS_CCC22"
+              glib:nick="ccc22">
+      </member>
+      <member name="ccc23"
+              value="23"
+              c:identifier="HB_UNICODE_COMBINING_CLASS_CCC23"
+              glib:nick="ccc23">
+      </member>
+      <member name="ccc24"
+              value="24"
+              c:identifier="HB_UNICODE_COMBINING_CLASS_CCC24"
+              glib:nick="ccc24">
+      </member>
+      <member name="ccc25"
+              value="25"
+              c:identifier="HB_UNICODE_COMBINING_CLASS_CCC25"
+              glib:nick="ccc25">
+      </member>
+      <member name="ccc26"
+              value="26"
+              c:identifier="HB_UNICODE_COMBINING_CLASS_CCC26"
+              glib:nick="ccc26">
+      </member>
+      <member name="ccc27"
+              value="27"
+              c:identifier="HB_UNICODE_COMBINING_CLASS_CCC27"
+              glib:nick="ccc27">
+      </member>
+      <member name="ccc28"
+              value="28"
+              c:identifier="HB_UNICODE_COMBINING_CLASS_CCC28"
+              glib:nick="ccc28">
+      </member>
+      <member name="ccc29"
+              value="29"
+              c:identifier="HB_UNICODE_COMBINING_CLASS_CCC29"
+              glib:nick="ccc29">
+      </member>
+      <member name="ccc30"
+              value="30"
+              c:identifier="HB_UNICODE_COMBINING_CLASS_CCC30"
+              glib:nick="ccc30">
+      </member>
+      <member name="ccc31"
+              value="31"
+              c:identifier="HB_UNICODE_COMBINING_CLASS_CCC31"
+              glib:nick="ccc31">
+      </member>
+      <member name="ccc32"
+              value="32"
+              c:identifier="HB_UNICODE_COMBINING_CLASS_CCC32"
+              glib:nick="ccc32">
+      </member>
+      <member name="ccc33"
+              value="33"
+              c:identifier="HB_UNICODE_COMBINING_CLASS_CCC33"
+              glib:nick="ccc33">
+      </member>
+      <member name="ccc34"
+              value="34"
+              c:identifier="HB_UNICODE_COMBINING_CLASS_CCC34"
+              glib:nick="ccc34">
+      </member>
+      <member name="ccc35"
+              value="35"
+              c:identifier="HB_UNICODE_COMBINING_CLASS_CCC35"
+              glib:nick="ccc35">
+      </member>
+      <member name="ccc36"
+              value="36"
+              c:identifier="HB_UNICODE_COMBINING_CLASS_CCC36"
+              glib:nick="ccc36">
+      </member>
+      <member name="ccc84"
+              value="84"
+              c:identifier="HB_UNICODE_COMBINING_CLASS_CCC84"
+              glib:nick="ccc84">
+      </member>
+      <member name="ccc91"
+              value="91"
+              c:identifier="HB_UNICODE_COMBINING_CLASS_CCC91"
+              glib:nick="ccc91">
+      </member>
+      <member name="ccc103"
+              value="103"
+              c:identifier="HB_UNICODE_COMBINING_CLASS_CCC103"
+              glib:nick="ccc103">
+      </member>
+      <member name="ccc107"
+              value="107"
+              c:identifier="HB_UNICODE_COMBINING_CLASS_CCC107"
+              glib:nick="ccc107">
+      </member>
+      <member name="ccc118"
+              value="118"
+              c:identifier="HB_UNICODE_COMBINING_CLASS_CCC118"
+              glib:nick="ccc118">
+      </member>
+      <member name="ccc122"
+              value="122"
+              c:identifier="HB_UNICODE_COMBINING_CLASS_CCC122"
+              glib:nick="ccc122">
+      </member>
+      <member name="ccc129"
+              value="129"
+              c:identifier="HB_UNICODE_COMBINING_CLASS_CCC129"
+              glib:nick="ccc129">
+      </member>
+      <member name="ccc130"
+              value="130"
+              c:identifier="HB_UNICODE_COMBINING_CLASS_CCC130"
+              glib:nick="ccc130">
+      </member>
+      <member name="ccc133"
+              value="132"
+              c:identifier="HB_UNICODE_COMBINING_CLASS_CCC133"
+              glib:nick="ccc133">
+      </member>
+      <member name="attached_below_left"
+              value="200"
+              c:identifier="HB_UNICODE_COMBINING_CLASS_ATTACHED_BELOW_LEFT"
+              glib:nick="attached-below-left">
+      </member>
+      <member name="attached_below"
+              value="202"
+              c:identifier="HB_UNICODE_COMBINING_CLASS_ATTACHED_BELOW"
+              glib:nick="attached-below">
+      </member>
+      <member name="attached_above"
+              value="214"
+              c:identifier="HB_UNICODE_COMBINING_CLASS_ATTACHED_ABOVE"
+              glib:nick="attached-above">
+      </member>
+      <member name="attached_above_right"
+              value="216"
+              c:identifier="HB_UNICODE_COMBINING_CLASS_ATTACHED_ABOVE_RIGHT"
+              glib:nick="attached-above-right">
+      </member>
+      <member name="below_left"
+              value="218"
+              c:identifier="HB_UNICODE_COMBINING_CLASS_BELOW_LEFT"
+              glib:nick="below-left">
+      </member>
+      <member name="below"
+              value="220"
+              c:identifier="HB_UNICODE_COMBINING_CLASS_BELOW"
+              glib:nick="below">
+      </member>
+      <member name="below_right"
+              value="222"
+              c:identifier="HB_UNICODE_COMBINING_CLASS_BELOW_RIGHT"
+              glib:nick="below-right">
+      </member>
+      <member name="left"
+              value="224"
+              c:identifier="HB_UNICODE_COMBINING_CLASS_LEFT"
+              glib:nick="left">
+      </member>
+      <member name="right"
+              value="226"
+              c:identifier="HB_UNICODE_COMBINING_CLASS_RIGHT"
+              glib:nick="right">
+      </member>
+      <member name="above_left"
+              value="228"
+              c:identifier="HB_UNICODE_COMBINING_CLASS_ABOVE_LEFT"
+              glib:nick="above-left">
+      </member>
+      <member name="above"
+              value="230"
+              c:identifier="HB_UNICODE_COMBINING_CLASS_ABOVE"
+              glib:nick="above">
+      </member>
+      <member name="above_right"
+              value="232"
+              c:identifier="HB_UNICODE_COMBINING_CLASS_ABOVE_RIGHT"
+              glib:nick="above-right">
+      </member>
+      <member name="double_below"
+              value="233"
+              c:identifier="HB_UNICODE_COMBINING_CLASS_DOUBLE_BELOW"
+              glib:nick="double-below">
+      </member>
+      <member name="double_above"
+              value="234"
+              c:identifier="HB_UNICODE_COMBINING_CLASS_DOUBLE_ABOVE"
+              glib:nick="double-above">
+      </member>
+      <member name="iota_subscript"
+              value="240"
+              c:identifier="HB_UNICODE_COMBINING_CLASS_IOTA_SUBSCRIPT"
+              glib:nick="iota-subscript">
+      </member>
+      <member name="invalid"
+              value="255"
+              c:identifier="HB_UNICODE_COMBINING_CLASS_INVALID"
+              glib:nick="invalid">
+      </member>
+    </enumeration>
+    <function name="unicode_compose"
+              c:identifier="hb_unicode_compose"
+              version="0.9.2">
+      <source-position filename="../src/hb-unicode.h" line="391"/>
+      <return-value transfer-ownership="none">
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="ufuncs" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-unicode.cc"
+               line="392">Unicode functions.</doc>
+          <type name="unicode_funcs_t" c:type="hb_unicode_funcs_t*"/>
+        </parameter>
+        <parameter name="a" transfer-ownership="none">
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+        <parameter name="b" transfer-ownership="none">
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+        <parameter name="ab"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <type name="codepoint_t" c:type="hb_codepoint_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <callback name="unicode_compose_func_t" c:type="hb_unicode_compose_func_t">
+      <source-position filename="../src/hb-unicode.h" line="243"/>
+      <return-value transfer-ownership="none">
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="ufuncs" transfer-ownership="none">
+          <type name="unicode_funcs_t" c:type="hb_unicode_funcs_t*"/>
+        </parameter>
+        <parameter name="a" transfer-ownership="none">
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+        <parameter name="b" transfer-ownership="none">
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+        <parameter name="ab" transfer-ownership="none">
+          <type name="codepoint_t" c:type="hb_codepoint_t*"/>
+        </parameter>
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1"
+                   closure="4">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <function name="unicode_decompose"
+              c:identifier="hb_unicode_decompose"
+              version="0.9.2">
+      <source-position filename="../src/hb-unicode.h" line="397"/>
+      <return-value transfer-ownership="none">
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="ufuncs" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-unicode.cc"
+               line="414">Unicode functions.</doc>
+          <type name="unicode_funcs_t" c:type="hb_unicode_funcs_t*"/>
+        </parameter>
+        <parameter name="ab" transfer-ownership="none">
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+        <parameter name="a"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <type name="codepoint_t" c:type="hb_codepoint_t*"/>
+        </parameter>
+        <parameter name="b"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <type name="codepoint_t" c:type="hb_codepoint_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unicode_decompose_compatibility"
+              c:identifier="hb_unicode_decompose_compatibility"
+              version="0.9.2"
+              deprecated="1"
+              deprecated-version="2.0.0">
+      <source-position filename="../src/hb-deprecated.h" line="163"/>
+      <return-value transfer-ownership="none">
+        <type name="guint" c:type="unsigned int"/>
+      </return-value>
+      <parameters>
+        <parameter name="ufuncs" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-unicode.cc"
+               line="437">Unicode functions.</doc>
+          <type name="unicode_funcs_t" c:type="hb_unicode_funcs_t*"/>
+        </parameter>
+        <parameter name="u" transfer-ownership="none">
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+        <parameter name="decomposed"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <type name="codepoint_t" c:type="hb_codepoint_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <callback name="unicode_decompose_compatibility_func_t"
+              c:type="hb_unicode_decompose_compatibility_func_t"
+              deprecated="1"
+              deprecated-version="2.0.0">
+      <doc xml:space="preserve"
+           filename="../src/hb-deprecated.h"
+           line="111">Fully decompose @u to its Unicode compatibility decomposition. The codepoints of the decomposition will be written to @decomposed.
+The complete length of the decomposition will be returned.
+
+If @u has no compatibility decomposition, zero should be returned.
+
+The Unicode standard guarantees that a buffer of length %HB_UNICODE_MAX_DECOMPOSITION_LEN codepoints will always be sufficient for any
+compatibility decomposition plus an terminating value of 0.  Consequently, @decompose must be allocated by the caller to be at least this length.  Implementations
+of this function type must ensure that they do not write past the provided array.</doc>
+      <source-position filename="../src/hb-deprecated.h" line="131"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-deprecated.h"
+             line="127">number of codepoints in the full compatibility decomposition of @u, or 0 if no decomposition available.</doc>
+        <type name="guint" c:type="unsigned int"/>
+      </return-value>
+      <parameters>
+        <parameter name="ufuncs" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-deprecated.h"
+               line="113">a Unicode function structure</doc>
+          <type name="unicode_funcs_t" c:type="hb_unicode_funcs_t*"/>
+        </parameter>
+        <parameter name="u" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-deprecated.h"
+               line="114">codepoint to decompose</doc>
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+        <parameter name="decomposed" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-deprecated.h"
+               line="115">address of codepoint array (of length %HB_UNICODE_MAX_DECOMPOSITION_LEN) to write decomposition into</doc>
+          <type name="codepoint_t" c:type="hb_codepoint_t*"/>
+        </parameter>
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1"
+                   closure="3">
+          <doc xml:space="preserve"
+               filename="../src/hb-deprecated.h"
+               line="116">user data pointer as passed to hb_unicode_funcs_set_decompose_compatibility_func()</doc>
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="unicode_decompose_func_t"
+              c:type="hb_unicode_decompose_func_t">
+      <source-position filename="../src/hb-unicode.h" line="248"/>
+      <return-value transfer-ownership="none">
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="ufuncs" transfer-ownership="none">
+          <type name="unicode_funcs_t" c:type="hb_unicode_funcs_t*"/>
+        </parameter>
+        <parameter name="ab" transfer-ownership="none">
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+        <parameter name="a" transfer-ownership="none">
+          <type name="codepoint_t" c:type="hb_codepoint_t*"/>
+        </parameter>
+        <parameter name="b" transfer-ownership="none">
+          <type name="codepoint_t" c:type="hb_codepoint_t*"/>
+        </parameter>
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1"
+                   closure="4">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <function name="unicode_eastasian_width"
+              c:identifier="hb_unicode_eastasian_width"
+              version="0.9.2"
+              deprecated="1"
+              deprecated-version="2.0.0">
+      <source-position filename="../src/hb-deprecated.h" line="107"/>
+      <return-value transfer-ownership="none">
+        <type name="guint" c:type="unsigned int"/>
+      </return-value>
+      <parameters>
+        <parameter name="ufuncs" transfer-ownership="none">
+          <type name="unicode_funcs_t" c:type="hb_unicode_funcs_t*"/>
+        </parameter>
+        <parameter name="unicode" transfer-ownership="none">
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <callback name="unicode_eastasian_width_func_t"
+              c:type="hb_unicode_eastasian_width_func_t"
+              deprecated="1"
+              deprecated-version="2.0.0">
+      <source-position filename="../src/hb-deprecated.h" line="79"/>
+      <return-value transfer-ownership="none">
+        <type name="guint" c:type="unsigned int"/>
+      </return-value>
+      <parameters>
+        <parameter name="ufuncs" transfer-ownership="none">
+          <type name="unicode_funcs_t" c:type="hb_unicode_funcs_t*"/>
+        </parameter>
+        <parameter name="unicode" transfer-ownership="none">
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1"
+                   closure="2">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <function name="unicode_funcs_create"
+              c:identifier="hb_unicode_funcs_create"
+              version="0.9.2">
+      <source-position filename="../src/hb-unicode.h" line="190"/>
+      <return-value transfer-ownership="full">
+        <type name="unicode_funcs_t" c:type="hb_unicode_funcs_t*"/>
+      </return-value>
+      <parameters>
+        <parameter name="parent"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
+          <type name="unicode_funcs_t" c:type="hb_unicode_funcs_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unicode_funcs_destroy"
+              c:identifier="hb_unicode_funcs_destroy"
+              version="0.9.2"
+              introspectable="0">
+      <source-position filename="../src/hb-unicode.h" line="199"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="ufuncs" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-unicode.cc"
+               line="236">Unicode functions.</doc>
+          <type name="unicode_funcs_t" c:type="hb_unicode_funcs_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unicode_funcs_get_default"
+              c:identifier="hb_unicode_funcs_get_default">
+      <source-position filename="../src/hb-unicode.h" line="186"/>
+      <return-value transfer-ownership="full">
+        <type name="unicode_funcs_t" c:type="hb_unicode_funcs_t*"/>
+      </return-value>
+    </function>
+    <function name="unicode_funcs_get_empty"
+              c:identifier="hb_unicode_funcs_get_empty"
+              version="0.9.2">
+      <source-position filename="../src/hb-unicode.h" line="193"/>
+      <return-value transfer-ownership="full">
+        <type name="unicode_funcs_t" c:type="hb_unicode_funcs_t*"/>
+      </return-value>
+    </function>
+    <function name="unicode_funcs_get_parent"
+              c:identifier="hb_unicode_funcs_get_parent"
+              version="0.9.2">
+      <source-position filename="../src/hb-unicode.h" line="221"/>
+      <return-value transfer-ownership="full">
+        <type name="unicode_funcs_t" c:type="hb_unicode_funcs_t*"/>
+      </return-value>
+      <parameters>
+        <parameter name="ufuncs" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-unicode.cc"
+               line="335">Unicode functions.</doc>
+          <type name="unicode_funcs_t" c:type="hb_unicode_funcs_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unicode_funcs_get_user_data"
+              c:identifier="hb_unicode_funcs_get_user_data"
+              version="0.9.2"
+              introspectable="0">
+      <source-position filename="../src/hb-unicode.h" line="210"/>
+      <return-value transfer-ownership="none" nullable="1">
+        <type name="gpointer" c:type="void*"/>
+      </return-value>
+      <parameters>
+        <parameter name="ufuncs" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-unicode.cc"
+               line="283">Unicode functions.</doc>
+          <type name="unicode_funcs_t" c:type="hb_unicode_funcs_t*"/>
+        </parameter>
+        <parameter name="key" transfer-ownership="none">
+          <type name="user_data_key_t" c:type="hb_user_data_key_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unicode_funcs_is_immutable"
+              c:identifier="hb_unicode_funcs_is_immutable"
+              version="0.9.2">
+      <source-position filename="../src/hb-unicode.h" line="218"/>
+      <return-value transfer-ownership="none">
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="ufuncs" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-unicode.cc"
+               line="319">Unicode functions.</doc>
+          <type name="unicode_funcs_t" c:type="hb_unicode_funcs_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unicode_funcs_make_immutable"
+              c:identifier="hb_unicode_funcs_make_immutable"
+              version="0.9.2">
+      <source-position filename="../src/hb-unicode.h" line="215"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="ufuncs" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-unicode.cc"
+               line="302">Unicode functions.</doc>
+          <type name="unicode_funcs_t" c:type="hb_unicode_funcs_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unicode_funcs_reference"
+              c:identifier="hb_unicode_funcs_reference"
+              version="0.9.2"
+              introspectable="0">
+      <source-position filename="../src/hb-unicode.h" line="196"/>
+      <return-value transfer-ownership="full">
+        <type name="unicode_funcs_t" c:type="hb_unicode_funcs_t*"/>
+      </return-value>
+      <parameters>
+        <parameter name="ufuncs" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-unicode.cc"
+               line="220">Unicode functions.</doc>
+          <type name="unicode_funcs_t" c:type="hb_unicode_funcs_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unicode_funcs_set_combining_class_func"
+              c:identifier="hb_unicode_funcs_set_combining_class_func"
+              version="0.9.2">
+      <source-position filename="../src/hb-unicode.h" line="268"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="ufuncs" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-unicode.h"
+               line="258">a Unicode function structure</doc>
+          <type name="unicode_funcs_t" c:type="hb_unicode_funcs_t*"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="2"
+                   destroy="3">
+          <type name="unicode_combining_class_func_t"
+                c:type="hb_unicode_combining_class_func_t"/>
+        </parameter>
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+        <parameter name="destroy" transfer-ownership="none" scope="notified">
+          <type name="destroy_func_t" c:type="hb_destroy_func_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unicode_funcs_set_compose_func"
+              c:identifier="hb_unicode_funcs_set_compose_func"
+              version="0.9.2">
+      <source-position filename="../src/hb-unicode.h" line="332"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="ufuncs" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-unicode.h"
+               line="322">a Unicode function structure</doc>
+          <type name="unicode_funcs_t" c:type="hb_unicode_funcs_t*"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="2"
+                   destroy="3">
+          <type name="unicode_compose_func_t"
+                c:type="hb_unicode_compose_func_t"/>
+        </parameter>
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+        <parameter name="destroy" transfer-ownership="none" scope="notified">
+          <type name="destroy_func_t" c:type="hb_destroy_func_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unicode_funcs_set_decompose_compatibility_func"
+              c:identifier="hb_unicode_funcs_set_decompose_compatibility_func"
+              version="0.9.2"
+              deprecated="1"
+              deprecated-version="2.0.0">
+      <source-position filename="../src/hb-deprecated.h" line="158"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="ufuncs" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-deprecated.h"
+               line="147">a Unicode function structure</doc>
+          <type name="unicode_funcs_t" c:type="hb_unicode_funcs_t*"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="2"
+                   destroy="3">
+          <type name="unicode_decompose_compatibility_func_t"
+                c:type="hb_unicode_decompose_compatibility_func_t"/>
+        </parameter>
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+        <parameter name="destroy" transfer-ownership="none" scope="notified">
+          <type name="destroy_func_t" c:type="hb_destroy_func_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unicode_funcs_set_decompose_func"
+              c:identifier="hb_unicode_funcs_set_decompose_func"
+              version="0.9.2">
+      <source-position filename="../src/hb-unicode.h" line="348"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="ufuncs" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-unicode.h"
+               line="338">a Unicode function structure</doc>
+          <type name="unicode_funcs_t" c:type="hb_unicode_funcs_t*"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="2"
+                   destroy="3">
+          <type name="unicode_decompose_func_t"
+                c:type="hb_unicode_decompose_func_t"/>
+        </parameter>
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+        <parameter name="destroy" transfer-ownership="none" scope="notified">
+          <type name="destroy_func_t" c:type="hb_destroy_func_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unicode_funcs_set_eastasian_width_func"
+              c:identifier="hb_unicode_funcs_set_eastasian_width_func"
+              version="0.9.2"
+              deprecated="1"
+              deprecated-version="2.0.0">
+      <source-position filename="../src/hb-deprecated.h" line="96"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="ufuncs" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-deprecated.h"
+               line="85">a Unicode function structure</doc>
+          <type name="unicode_funcs_t" c:type="hb_unicode_funcs_t*"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="2"
+                   destroy="3">
+          <type name="unicode_eastasian_width_func_t"
+                c:type="hb_unicode_eastasian_width_func_t"/>
+        </parameter>
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+        <parameter name="destroy" transfer-ownership="none" scope="notified">
+          <type name="destroy_func_t" c:type="hb_destroy_func_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unicode_funcs_set_general_category_func"
+              c:identifier="hb_unicode_funcs_set_general_category_func"
+              version="0.9.2">
+      <source-position filename="../src/hb-unicode.h" line="284"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="ufuncs" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-unicode.h"
+               line="274">a Unicode function structure</doc>
+          <type name="unicode_funcs_t" c:type="hb_unicode_funcs_t*"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="2"
+                   destroy="3">
+          <type name="unicode_general_category_func_t"
+                c:type="hb_unicode_general_category_func_t"/>
+        </parameter>
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+        <parameter name="destroy" transfer-ownership="none" scope="notified">
+          <type name="destroy_func_t" c:type="hb_destroy_func_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unicode_funcs_set_mirroring_func"
+              c:identifier="hb_unicode_funcs_set_mirroring_func"
+              version="0.9.2">
+      <source-position filename="../src/hb-unicode.h" line="300"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="ufuncs" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-unicode.h"
+               line="290">a Unicode function structure</doc>
+          <type name="unicode_funcs_t" c:type="hb_unicode_funcs_t*"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="2"
+                   destroy="3">
+          <type name="unicode_mirroring_func_t"
+                c:type="hb_unicode_mirroring_func_t"/>
+        </parameter>
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+        <parameter name="destroy" transfer-ownership="none" scope="notified">
+          <type name="destroy_func_t" c:type="hb_destroy_func_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unicode_funcs_set_script_func"
+              c:identifier="hb_unicode_funcs_set_script_func"
+              version="0.9.2">
+      <source-position filename="../src/hb-unicode.h" line="316"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="ufuncs" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-unicode.h"
+               line="306">a Unicode function structure</doc>
+          <type name="unicode_funcs_t" c:type="hb_unicode_funcs_t*"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="2"
+                   destroy="3">
+          <type name="unicode_script_func_t"
+                c:type="hb_unicode_script_func_t"/>
+        </parameter>
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+        <parameter name="destroy" transfer-ownership="none" scope="notified">
+          <type name="destroy_func_t" c:type="hb_destroy_func_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unicode_funcs_set_user_data"
+              c:identifier="hb_unicode_funcs_set_user_data"
+              version="0.9.2"
+              introspectable="0">
+      <source-position filename="../src/hb-unicode.h" line="202"/>
+      <return-value transfer-ownership="none">
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="ufuncs" transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="../src/hb-unicode.cc"
+               line="259">Unicode functions.</doc>
+          <type name="unicode_funcs_t" c:type="hb_unicode_funcs_t*"/>
+        </parameter>
+        <parameter name="key" transfer-ownership="none">
+          <type name="user_data_key_t" c:type="hb_user_data_key_t*"/>
+        </parameter>
+        <parameter name="data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+        <parameter name="destroy" transfer-ownership="none">
+          <type name="destroy_func_t" c:type="hb_destroy_func_t"/>
+        </parameter>
+        <parameter name="replace" transfer-ownership="none">
+          <type name="bool_t" c:type="hb_bool_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <record name="unicode_funcs_t"
+            c:type="hb_unicode_funcs_t"
+            glib:type-name="hb_unicode_funcs_t"
+            glib:get-type="hb_gobject_unicode_funcs_get_type"
+            c:symbol-prefix="gobject_unicode_funcs">
+      <source-position filename="../src/hb-unicode.h" line="179"/>
+    </record>
+    <function name="unicode_general_category"
+              c:identifier="hb_unicode_general_category"
+              version="0.9.2">
+      <source-position filename="../src/hb-unicode.h" line="369"/>
+      <return-value transfer-ownership="none">
+        <type name="unicode_general_category_t"
+              c:type="hb_unicode_general_category_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="ufuncs" transfer-ownership="none">
+          <type name="unicode_funcs_t" c:type="hb_unicode_funcs_t*"/>
+        </parameter>
+        <parameter name="unicode" transfer-ownership="none">
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <callback name="unicode_general_category_func_t"
+              c:type="hb_unicode_general_category_func_t">
+      <source-position filename="../src/hb-unicode.h" line="233"/>
+      <return-value transfer-ownership="none">
+        <type name="unicode_general_category_t"
+              c:type="hb_unicode_general_category_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="ufuncs" transfer-ownership="none">
+          <type name="unicode_funcs_t" c:type="hb_unicode_funcs_t*"/>
+        </parameter>
+        <parameter name="unicode" transfer-ownership="none">
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1"
+                   closure="2">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <enumeration name="unicode_general_category_t"
+                 glib:type-name="hb_unicode_general_category_t"
+                 glib:get-type="hb_gobject_unicode_general_category_get_type"
+                 c:type="hb_unicode_general_category_t">
+      <member name="control"
+              value="0"
+              c:identifier="HB_UNICODE_GENERAL_CATEGORY_CONTROL"
+              glib:nick="control">
+      </member>
+      <member name="format"
+              value="1"
+              c:identifier="HB_UNICODE_GENERAL_CATEGORY_FORMAT"
+              glib:nick="format">
+      </member>
+      <member name="unassigned"
+              value="2"
+              c:identifier="HB_UNICODE_GENERAL_CATEGORY_UNASSIGNED"
+              glib:nick="unassigned">
+      </member>
+      <member name="private_use"
+              value="3"
+              c:identifier="HB_UNICODE_GENERAL_CATEGORY_PRIVATE_USE"
+              glib:nick="private-use">
+      </member>
+      <member name="surrogate"
+              value="4"
+              c:identifier="HB_UNICODE_GENERAL_CATEGORY_SURROGATE"
+              glib:nick="surrogate">
+      </member>
+      <member name="lowercase_letter"
+              value="5"
+              c:identifier="HB_UNICODE_GENERAL_CATEGORY_LOWERCASE_LETTER"
+              glib:nick="lowercase-letter">
+      </member>
+      <member name="modifier_letter"
+              value="6"
+              c:identifier="HB_UNICODE_GENERAL_CATEGORY_MODIFIER_LETTER"
+              glib:nick="modifier-letter">
+      </member>
+      <member name="other_letter"
+              value="7"
+              c:identifier="HB_UNICODE_GENERAL_CATEGORY_OTHER_LETTER"
+              glib:nick="other-letter">
+      </member>
+      <member name="titlecase_letter"
+              value="8"
+              c:identifier="HB_UNICODE_GENERAL_CATEGORY_TITLECASE_LETTER"
+              glib:nick="titlecase-letter">
+      </member>
+      <member name="uppercase_letter"
+              value="9"
+              c:identifier="HB_UNICODE_GENERAL_CATEGORY_UPPERCASE_LETTER"
+              glib:nick="uppercase-letter">
+      </member>
+      <member name="spacing_mark"
+              value="10"
+              c:identifier="HB_UNICODE_GENERAL_CATEGORY_SPACING_MARK"
+              glib:nick="spacing-mark">
+      </member>
+      <member name="enclosing_mark"
+              value="11"
+              c:identifier="HB_UNICODE_GENERAL_CATEGORY_ENCLOSING_MARK"
+              glib:nick="enclosing-mark">
+      </member>
+      <member name="non_spacing_mark"
+              value="12"
+              c:identifier="HB_UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK"
+              glib:nick="non-spacing-mark">
+      </member>
+      <member name="decimal_number"
+              value="13"
+              c:identifier="HB_UNICODE_GENERAL_CATEGORY_DECIMAL_NUMBER"
+              glib:nick="decimal-number">
+      </member>
+      <member name="letter_number"
+              value="14"
+              c:identifier="HB_UNICODE_GENERAL_CATEGORY_LETTER_NUMBER"
+              glib:nick="letter-number">
+      </member>
+      <member name="other_number"
+              value="15"
+              c:identifier="HB_UNICODE_GENERAL_CATEGORY_OTHER_NUMBER"
+              glib:nick="other-number">
+      </member>
+      <member name="connect_punctuation"
+              value="16"
+              c:identifier="HB_UNICODE_GENERAL_CATEGORY_CONNECT_PUNCTUATION"
+              glib:nick="connect-punctuation">
+      </member>
+      <member name="dash_punctuation"
+              value="17"
+              c:identifier="HB_UNICODE_GENERAL_CATEGORY_DASH_PUNCTUATION"
+              glib:nick="dash-punctuation">
+      </member>
+      <member name="close_punctuation"
+              value="18"
+              c:identifier="HB_UNICODE_GENERAL_CATEGORY_CLOSE_PUNCTUATION"
+              glib:nick="close-punctuation">
+      </member>
+      <member name="final_punctuation"
+              value="19"
+              c:identifier="HB_UNICODE_GENERAL_CATEGORY_FINAL_PUNCTUATION"
+              glib:nick="final-punctuation">
+      </member>
+      <member name="initial_punctuation"
+              value="20"
+              c:identifier="HB_UNICODE_GENERAL_CATEGORY_INITIAL_PUNCTUATION"
+              glib:nick="initial-punctuation">
+      </member>
+      <member name="other_punctuation"
+              value="21"
+              c:identifier="HB_UNICODE_GENERAL_CATEGORY_OTHER_PUNCTUATION"
+              glib:nick="other-punctuation">
+      </member>
+      <member name="open_punctuation"
+              value="22"
+              c:identifier="HB_UNICODE_GENERAL_CATEGORY_OPEN_PUNCTUATION"
+              glib:nick="open-punctuation">
+      </member>
+      <member name="currency_symbol"
+              value="23"
+              c:identifier="HB_UNICODE_GENERAL_CATEGORY_CURRENCY_SYMBOL"
+              glib:nick="currency-symbol">
+      </member>
+      <member name="modifier_symbol"
+              value="24"
+              c:identifier="HB_UNICODE_GENERAL_CATEGORY_MODIFIER_SYMBOL"
+              glib:nick="modifier-symbol">
+      </member>
+      <member name="math_symbol"
+              value="25"
+              c:identifier="HB_UNICODE_GENERAL_CATEGORY_MATH_SYMBOL"
+              glib:nick="math-symbol">
+      </member>
+      <member name="other_symbol"
+              value="26"
+              c:identifier="HB_UNICODE_GENERAL_CATEGORY_OTHER_SYMBOL"
+              glib:nick="other-symbol">
+      </member>
+      <member name="line_separator"
+              value="27"
+              c:identifier="HB_UNICODE_GENERAL_CATEGORY_LINE_SEPARATOR"
+              glib:nick="line-separator">
+      </member>
+      <member name="paragraph_separator"
+              value="28"
+              c:identifier="HB_UNICODE_GENERAL_CATEGORY_PARAGRAPH_SEPARATOR"
+              glib:nick="paragraph-separator">
+      </member>
+      <member name="space_separator"
+              value="29"
+              c:identifier="HB_UNICODE_GENERAL_CATEGORY_SPACE_SEPARATOR"
+              glib:nick="space-separator">
+      </member>
+    </enumeration>
+    <function name="unicode_mirroring"
+              c:identifier="hb_unicode_mirroring"
+              version="0.9.2">
+      <source-position filename="../src/hb-unicode.h" line="378"/>
+      <return-value transfer-ownership="none">
+        <type name="codepoint_t" c:type="hb_codepoint_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="ufuncs" transfer-ownership="none">
+          <type name="unicode_funcs_t" c:type="hb_unicode_funcs_t*"/>
+        </parameter>
+        <parameter name="unicode" transfer-ownership="none">
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <callback name="unicode_mirroring_func_t"
+              c:type="hb_unicode_mirroring_func_t">
+      <source-position filename="../src/hb-unicode.h" line="236"/>
+      <return-value transfer-ownership="none">
+        <type name="codepoint_t" c:type="hb_codepoint_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="ufuncs" transfer-ownership="none">
+          <type name="unicode_funcs_t" c:type="hb_unicode_funcs_t*"/>
+        </parameter>
+        <parameter name="unicode" transfer-ownership="none">
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1"
+                   closure="2">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <function name="unicode_script"
+              c:identifier="hb_unicode_script"
+              version="0.9.2">
+      <source-position filename="../src/hb-unicode.h" line="387"/>
+      <return-value transfer-ownership="none">
+        <type name="script_t" c:type="hb_script_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="ufuncs" transfer-ownership="none">
+          <type name="unicode_funcs_t" c:type="hb_unicode_funcs_t*"/>
+        </parameter>
+        <parameter name="unicode" transfer-ownership="none">
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <callback name="unicode_script_func_t" c:type="hb_unicode_script_func_t">
+      <source-position filename="../src/hb-unicode.h" line="239"/>
+      <return-value transfer-ownership="none">
+        <type name="script_t" c:type="hb_script_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="ufuncs" transfer-ownership="none">
+          <type name="unicode_funcs_t" c:type="hb_unicode_funcs_t*"/>
+        </parameter>
+        <parameter name="unicode" transfer-ownership="none">
+          <type name="codepoint_t" c:type="hb_codepoint_t"/>
+        </parameter>
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1"
+                   closure="2">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="user_data_key_t"
+            c:type="hb_user_data_key_t"
+            glib:type-name="hb_user_data_key_t"
+            glib:get-type="hb_gobject_user_data_key_get_type"
+            c:symbol-prefix="gobject_user_data_key">
+      <source-position filename="../src/hb-common.h" line="416"/>
+      <field name="unused" readable="0" private="1">
+        <type name="gchar" c:type="char"/>
+      </field>
+    </record>
+    <union name="var_int_t" c:type="hb_var_int_t">
+      <source-position filename="../src/hb-common.h" line="105"/>
+      <field name="u32" writable="1">
+        <type name="guint32" c:type="uint32_t"/>
+      </field>
+      <field name="i32" writable="1">
+        <type name="gint32" c:type="int32_t"/>
+      </field>
+      <field name="u16" writable="1">
+        <array zero-terminated="0" fixed-size="2">
+          <type name="guint16" c:type="uint16_t"/>
+        </array>
+      </field>
+      <field name="i16" writable="1">
+        <array zero-terminated="0" fixed-size="2">
+          <type name="gint16" c:type="int16_t"/>
+        </array>
+      </field>
+      <field name="u8" writable="1">
+        <array zero-terminated="0" fixed-size="4">
+          <type name="guint8" c:type="uint8_t"/>
+        </array>
+      </field>
+      <field name="i8" writable="1">
+        <array zero-terminated="0" fixed-size="4">
+          <type name="gint8" c:type="int8_t"/>
+        </array>
+      </field>
+    </union>
+    <function name="variation_from_string"
+              c:identifier="hb_variation_from_string"
+              version="1.4.2">
+      <source-position filename="../src/hb-common.h" line="477"/>
+      <return-value transfer-ownership="none">
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="str" transfer-ownership="none">
+          <type name="utf8" c:type="const char*"/>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="variation" transfer-ownership="none">
+          <type name="variation_t" c:type="hb_variation_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <record name="variation_t" c:type="hb_variation_t" version="1.4.2">
+      <source-position filename="../src/hb-common.h" line="474"/>
+      <field name="tag" writable="1">
+        <type name="tag_t" c:type="hb_tag_t"/>
+      </field>
+      <field name="value" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+      <method name="_string"
+              c:identifier="hb_variation_to_string"
+              moved-to="variation_to_string"
+              version="1.4.2">
+        <source-position filename="../src/hb-common.h" line="481"/>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="variation" transfer-ownership="none">
+            <type name="variation_t" c:type="hb_variation_t*"/>
+          </instance-parameter>
+          <parameter name="buf" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="guint" c:type="unsigned int"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <function name="variation_to_string"
+              c:identifier="hb_variation_to_string"
+              version="1.4.2">
+      <source-position filename="../src/hb-common.h" line="481"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="variation" transfer-ownership="none">
+          <type name="variation_t" c:type="hb_variation_t*"/>
+        </parameter>
+        <parameter name="buf" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="version" c:identifier="hb_version" version="0.9.2">
+      <doc xml:space="preserve"
+           filename="../src/hb-common.cc"
+           line="614">Returns library version as three integer components.</doc>
+      <source-position filename="../src/hb-version.h" line="51"/>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="major"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../src/hb-common.cc"
+               line="616">Library major version component.</doc>
+          <type name="guint" c:type="unsigned int*"/>
+        </parameter>
+        <parameter name="minor"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../src/hb-common.cc"
+               line="617">Library minor version component.</doc>
+          <type name="guint" c:type="unsigned int*"/>
+        </parameter>
+        <parameter name="micro"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:space="preserve"
+               filename="../src/hb-common.cc"
+               line="618">Library micro version component.</doc>
+          <type name="guint" c:type="unsigned int*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="version_atleast"
+              c:identifier="hb_version_atleast"
+              version="0.9.30">
+      <source-position filename="../src/hb-version.h" line="59"/>
+      <return-value transfer-ownership="none">
+        <type name="bool_t" c:type="hb_bool_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="major" transfer-ownership="none">
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="minor" transfer-ownership="none">
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="micro" transfer-ownership="none">
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="version_string"
+              c:identifier="hb_version_string"
+              version="0.9.2">
+      <doc xml:space="preserve"
+           filename="../src/hb-common.cc"
+           line="634">Returns library version as a string with three components.</doc>
+      <source-position filename="../src/hb-version.h" line="56"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="../src/hb-common.cc"
+             line="639">library version string.</doc>
+        <type name="utf8" c:type="const char*"/>
+      </return-value>
+    </function>
+  </namespace>
+</repository>