]> gitweb.factorcode.org Git - factor.git/blobdiff - basis/pango/Pango-1.0.gir
stomp.cli: simplify
[factor.git] / basis / pango / Pango-1.0.gir
diff --git a/basis/pango/Pango-1.0.gir b/basis/pango/Pango-1.0.gir
deleted file mode 100644 (file)
index 06ce0e3..0000000
+++ /dev/null
@@ -1,7445 +0,0 @@
-<?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.0"
-            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="GLib" version="2.0"/>
-  <include name="GObject" version="2.0"/>
-  <include name="cairo" version="1.0"/>
-  <package name="cairo"/>
-  <package name="freetype2"/>
-  <package name="gobject-2.0"/>
-  <namespace name="Pango"
-             version="1.0"
-             shared-library="libpango-1.0.so.0"
-             c:prefix="Pango">
-    <alias name="Glyph" target="uint32" c:type="PangoGlyph"/>
-    <alias name="GlyphUnit" target="int32" c:type="PangoGlyphUnit"/>
-    <alias name="LayoutRun" target="GlyphItem" c:type="PangoLayoutRun"/>
-    <constant name="ANALYSIS_FLAG_CENTERED_BASELINE" value="1">
-      <type name="int"/>
-    </constant>
-    <constant name="ATTR_INDEX_FROM_TEXT_BEGINNING" value="0">
-      <type name="int"/>
-    </constant>
-    <enumeration name="Alignment"
-                 glib:type-name="PangoAlignment"
-                 glib:get-type="pango_alignment_get_type"
-                 c:type="PangoAlignment">
-      <member name="left"
-              value="0"
-              c:identifier="PANGO_ALIGN_LEFT"
-              glib:nick="left"/>
-      <member name="center"
-              value="1"
-              c:identifier="PANGO_ALIGN_CENTER"
-              glib:nick="center"/>
-      <member name="right"
-              value="2"
-              c:identifier="PANGO_ALIGN_RIGHT"
-              glib:nick="right"/>
-    </enumeration>
-    <record name="Analysis" c:type="PangoAnalysis">
-      <field name="shape_engine" writable="1">
-        <type name="EngineShape" c:type="PangoEngineShape*"/>
-      </field>
-      <field name="lang_engine" writable="1">
-        <type name="EngineLang" c:type="PangoEngineLang*"/>
-      </field>
-      <field name="font" writable="1">
-        <type name="Font" c:type="PangoFont*"/>
-      </field>
-      <field name="level" writable="1">
-        <type name="uint8" c:type="guint8"/>
-      </field>
-      <field name="gravity" writable="1">
-        <type name="uint8" c:type="guint8"/>
-      </field>
-      <field name="flags" writable="1">
-        <type name="uint8" c:type="guint8"/>
-      </field>
-      <field name="script" writable="1">
-        <type name="uint8" c:type="guint8"/>
-      </field>
-      <field name="language" writable="1">
-        <type name="Language" c:type="PangoLanguage*"/>
-      </field>
-      <field name="extra_attrs" writable="1">
-        <type name="GLib.SList" c:type="GSList*"/>
-      </field>
-    </record>
-    <record name="AttrClass" c:type="PangoAttrClass">
-      <field name="type" writable="1">
-        <type name="AttrType" c:type="PangoAttrType"/>
-      </field>
-      <field name="copy">
-        <type name="any" c:type="pointer"/>
-      </field>
-      <field name="destroy">
-        <type name="any" c:type="pointer"/>
-      </field>
-      <field name="equal">
-        <type name="any" c:type="pointer"/>
-      </field>
-    </record>
-    <record name="AttrColor" c:type="PangoAttrColor">
-      <field name="attr" writable="1">
-        <type name="Attribute" c:type="PangoAttribute"/>
-      </field>
-      <field name="color" writable="1">
-        <type name="Color" c:type="PangoColor"/>
-      </field>
-    </record>
-    <callback name="AttrDataCopyFunc" c:type="PangoAttrDataCopyFunc">
-      <return-value transfer-ownership="none">
-        <type name="any" c:type="gpointer"/>
-      </return-value>
-      <parameters>
-        <parameter name="data" transfer-ownership="none">
-          <type name="any" c:type="gconstpointer"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <callback name="AttrFilterFunc" c:type="PangoAttrFilterFunc">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="attribute" transfer-ownership="none">
-          <type name="Attribute" c:type="PangoAttribute*"/>
-        </parameter>
-        <parameter name="data" transfer-ownership="none">
-          <type name="any" c:type="gpointer"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <record name="AttrFloat" c:type="PangoAttrFloat">
-      <field name="attr" writable="1">
-        <type name="Attribute" c:type="PangoAttribute"/>
-      </field>
-      <field name="value" writable="1">
-        <type name="double" c:type="double"/>
-      </field>
-    </record>
-    <record name="AttrFontDesc" c:type="PangoAttrFontDesc">
-      <field name="attr" writable="1">
-        <type name="Attribute" c:type="PangoAttribute"/>
-      </field>
-      <field name="desc" writable="1">
-        <type name="FontDescription" c:type="PangoFontDescription*"/>
-      </field>
-      <constructor name="new"
-                   c:identifier="pango_attr_font_desc_new"
-                   doc="Create a new font description attribute. This attribute
-allows setting family, style, weight, variant, stretch,
-and size simultaneously.
-freed with pango_attribute_destroy().">
-        <return-value transfer-ownership="full">
-          <type name="AttrFontDesc" c:type="PangoAttribute*"/>
-        </return-value>
-        <parameters>
-          <parameter name="desc" transfer-ownership="none">
-            <type name="FontDescription" c:type="PangoFontDescription*"/>
-          </parameter>
-        </parameters>
-      </constructor>
-    </record>
-    <record name="AttrInt" c:type="PangoAttrInt">
-      <field name="attr" writable="1">
-        <type name="Attribute" c:type="PangoAttribute"/>
-      </field>
-      <field name="value" writable="1">
-        <type name="int" c:type="int"/>
-      </field>
-    </record>
-    <record name="AttrIterator" c:type="PangoAttrIterator">
-      <method name="range"
-              c:identifier="pango_attr_iterator_range"
-              doc="Get the range of the current segment. Note that the
-stored return values are signed, not unsigned like
-the values in #PangoAttribute. To deal with this API
-oversight, stored return values that wouldn&apos;t fit into
-a signed integer are clamped to %G_MAXINT.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="start" direction="out" transfer-ownership="full">
-            <type name="int" c:type="gint*"/>
-          </parameter>
-          <parameter name="end" direction="out" transfer-ownership="full">
-            <type name="int" c:type="gint*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="next"
-              c:identifier="pango_attr_iterator_next"
-              doc="Advance the iterator until the next change of style.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </method>
-      <method name="copy"
-              c:identifier="pango_attr_iterator_copy"
-              doc="Copy a #PangoAttrIterator
-be freed with pango_attr_iterator_destroy().">
-        <return-value transfer-ownership="full">
-          <type name="AttrIterator" c:type="PangoAttrIterator*"/>
-        </return-value>
-      </method>
-      <method name="destroy"
-              c:identifier="pango_attr_iterator_destroy"
-              doc="Destroy a #PangoAttrIterator and free all associated memory.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="get"
-              c:identifier="pango_attr_iterator_get"
-              doc="Find the current attribute of a particular type at the iterator
-location. When multiple attributes of the same type overlap,
-the attribute whose range starts closest to the current location
-is used.
-if no attribute of that type applies to the current
-location.">
-        <return-value transfer-ownership="full">
-          <type name="Attribute" c:type="PangoAttribute*"/>
-        </return-value>
-        <parameters>
-          <parameter name="type" transfer-ownership="none">
-            <type name="AttrType" c:type="PangoAttrType"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_font"
-              c:identifier="pango_attr_iterator_get_font"
-              doc="The family name in this structure will be set using
-pango_font_description_set_family_static() using values from
-an attribute in the #PangoAttrList associated with the iterator,
-so if you plan to keep it around, you must call:
-&lt;literal&gt;pango_font_description_set_family (desc, pango_font_description_get_family (desc))&lt;/literal&gt;.
-if none is found.
-location in which to store a list of non-font
-attributes at the the current position; only the highest priority
-value of each attribute will be added to this list. In order
-to free this value, you must call pango_attribute_destroy() on
-each member.
-Get the font and other attributes at the current iterator position.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="desc" transfer-ownership="none">
-            <type name="FontDescription" c:type="PangoFontDescription*"/>
-          </parameter>
-          <parameter name="language" transfer-ownership="none">
-            <type name="Language" c:type="PangoLanguage**"/>
-          </parameter>
-          <parameter name="extra_attrs"
-                     transfer-ownership="full"
-                     doc="if non-%NULL,">
-            <type name="GLib.SList" c:type="GSList**"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_attrs"
-              c:identifier="pango_attr_iterator_get_attrs"
-              doc="Gets a list of all attributes at the current position of the
-iterator.
-all attributes for the current range.
-To free this value, call pango_attribute_destroy() on
-each value and g_slist_free() on the list."
-              version="1.2">
-        <return-value transfer-ownership="full" doc="a list of">
-          <type name="GLib.SList" c:type="GSList*">
-            <type name="Pango.Attribute"/>
-          </type>
-        </return-value>
-      </method>
-    </record>
-    <record name="AttrLanguage" c:type="PangoAttrLanguage">
-      <field name="attr" writable="1">
-        <type name="Attribute" c:type="PangoAttribute"/>
-      </field>
-      <field name="value" writable="1">
-        <type name="Language" c:type="PangoLanguage*"/>
-      </field>
-      <constructor name="new"
-                   c:identifier="pango_attr_language_new"
-                   doc="Create a new language tag attribute.
-freed with pango_attribute_destroy().">
-        <return-value transfer-ownership="full">
-          <type name="AttrLanguage" c:type="PangoAttribute*"/>
-        </return-value>
-        <parameters>
-          <parameter name="language" transfer-ownership="none">
-            <type name="Language" c:type="PangoLanguage*"/>
-          </parameter>
-        </parameters>
-      </constructor>
-    </record>
-    <record name="AttrList"
-            c:type="PangoAttrList"
-            glib:type-name="PangoAttrList"
-            glib:get-type="pango_attr_list_get_type">
-      <constructor name="new"
-                   c:identifier="pango_attr_list_new"
-                   doc="Create a new empty attribute list with a reference count of one.
-be freed with pango_attr_list_unref().">
-        <return-value transfer-ownership="full">
-          <type name="AttrList" c:type="PangoAttrList*"/>
-        </return-value>
-      </constructor>
-      <method name="ref"
-              c:identifier="pango_attr_list_ref"
-              doc="Increase the reference count of the given attribute list by one."
-              version="1.10">
-        <return-value transfer-ownership="full">
-          <type name="AttrList" c:type="PangoAttrList*"/>
-        </return-value>
-      </method>
-      <method name="unref"
-              c:identifier="pango_attr_list_unref"
-              doc="Decrease the reference count of the given attribute list by one.
-If the result is zero, free the attribute list and the attributes
-it contains.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="copy"
-              c:identifier="pango_attr_list_copy"
-              doc="Copy @list and return an identical new list.
-reference count of one, which should
-be freed with pango_attr_list_unref().
-Returns %NULL if @list was %NULL.">
-        <return-value transfer-ownership="full">
-          <type name="AttrList" c:type="PangoAttrList*"/>
-        </return-value>
-      </method>
-      <method name="insert"
-              c:identifier="pango_attr_list_insert"
-              doc="assumed by the list.
-Insert the given attribute into the #PangoAttrList. It will
-be inserted after all other attributes with a matching">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="attr" transfer-ownership="none">
-            <type name="Attribute" c:type="PangoAttribute*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="insert_before"
-              c:identifier="pango_attr_list_insert_before"
-              doc="assumed by the list.
-Insert the given attribute into the #PangoAttrList. It will
-be inserted before all other attributes with a matching">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="attr" transfer-ownership="none">
-            <type name="Attribute" c:type="PangoAttribute*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="change"
-              c:identifier="pango_attr_list_change"
-              doc="assumed by the list.
-Insert the given attribute into the #PangoAttrList. It will
-replace any attributes of the same type on that segment
-and be merged with any adjoining attributes that are identical.
-This function is slower than pango_attr_list_insert() for
-creating a attribute list in order (potentially much slower
-for large lists). However, pango_attr_list_insert() is not
-suitable for continually changing a set of attributes
-since it never removes or combines existing attributes.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="attr" transfer-ownership="none">
-            <type name="Attribute" c:type="PangoAttribute*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="splice"
-              c:identifier="pango_attr_list_splice"
-              doc="must be specified since the attributes in @other
-may only be present at some subsection of this range)
-This function opens up a hole in @list, fills it in with attributes from
-the left, and then merges @other on top of the hole.
-This operation is equivalent to stretching every attribute
-that applies at position @pos in @list by an amount @len,
-and then calling pango_attr_list_change() with a copy
-of each attribute in @other in sequence (offset in position by @pos).
-This operation proves useful for, for instance, inserting
-a pre-edit string in the middle of an edit buffer.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="other" transfer-ownership="none">
-            <type name="AttrList" c:type="PangoAttrList*"/>
-          </parameter>
-          <parameter name="pos" transfer-ownership="none">
-            <type name="int" c:type="gint"/>
-          </parameter>
-          <parameter name="len" transfer-ownership="none">
-            <type name="int" c:type="gint"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="filter"
-              c:identifier="pango_attr_list_filter"
-              doc="should be filtered out.
-Given a #PangoAttrList and callback function, removes any elements
-of @list for which @func returns %TRUE and inserts them into
-a new list.
-no attributes of the given types were found."
-              version="1.2">
-        <return-value transfer-ownership="full">
-          <type name="AttrList" c:type="PangoAttrList*"/>
-        </return-value>
-        <parameters>
-          <parameter name="func"
-                     transfer-ownership="none"
-                     scope="call"
-                     closure="2">
-            <type name="AttrFilterFunc" c:type="PangoAttrFilterFunc"/>
-          </parameter>
-          <parameter name="data" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_iterator"
-              c:identifier="pango_attr_list_get_iterator"
-              doc="Create a iterator initialized to the beginning of the list.
-be freed with pango_attr_iterator_destroy().">
-        <return-value transfer-ownership="full">
-          <type name="AttrIterator" c:type="PangoAttrIterator*"/>
-        </return-value>
-      </method>
-    </record>
-    <record name="AttrShape" c:type="PangoAttrShape">
-      <field name="attr" writable="1">
-        <type name="Attribute" c:type="PangoAttribute"/>
-      </field>
-      <field name="ink_rect" writable="1">
-        <type name="Rectangle" c:type="PangoRectangle"/>
-      </field>
-      <field name="logical_rect" writable="1">
-        <type name="Rectangle" c:type="PangoRectangle"/>
-      </field>
-      <field name="data" writable="1">
-        <type name="any" c:type="gpointer"/>
-      </field>
-      <field name="copy_func" writable="1">
-        <type name="AttrDataCopyFunc" c:type="PangoAttrDataCopyFunc"/>
-      </field>
-      <field name="destroy_func" writable="1">
-        <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
-      </field>
-      <constructor name="new"
-                   c:identifier="pango_attr_shape_new"
-                   doc="Create a new shape attribute. A shape is used to impose a
-particular ink and logical rectangle on the result of shaping a
-particular glyph. This might be used, for instance, for
-embedding a picture or a widget inside a #PangoLayout.
-freed with pango_attribute_destroy().">
-        <return-value transfer-ownership="full">
-          <type name="AttrShape" c:type="PangoAttribute*"/>
-        </return-value>
-        <parameters>
-          <parameter name="ink_rect" transfer-ownership="none">
-            <type name="Rectangle" c:type="PangoRectangle*"/>
-          </parameter>
-          <parameter name="logical_rect" transfer-ownership="none">
-            <type name="Rectangle" c:type="PangoRectangle*"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_with_data"
-                   c:identifier="pango_attr_shape_new_with_data"
-                   doc="is copied. If %NULL, @data is simply copied
-as a pointer.
-is freed, or %NULL
-Like pango_attr_shape_new(), but a user data pointer is also
-provided; this pointer can be accessed when later
-rendering the glyph.
-freed with pango_attribute_destroy()."
-                   version="1.8">
-        <return-value transfer-ownership="full">
-          <type name="AttrShape" c:type="PangoAttribute*"/>
-        </return-value>
-        <parameters>
-          <parameter name="ink_rect" transfer-ownership="none">
-            <type name="Rectangle" c:type="PangoRectangle*"/>
-          </parameter>
-          <parameter name="logical_rect" transfer-ownership="none">
-            <type name="Rectangle" c:type="PangoRectangle*"/>
-          </parameter>
-          <parameter name="data" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-          <parameter name="copy_func"
-                     transfer-ownership="none"
-                     scope="call"
-                     destroy="4">
-            <type name="AttrDataCopyFunc" c:type="PangoAttrDataCopyFunc"/>
-          </parameter>
-          <parameter name="destroy_func"
-                     transfer-ownership="none"
-                     scope="call">
-            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
-          </parameter>
-        </parameters>
-      </constructor>
-    </record>
-    <record name="AttrSize" c:type="PangoAttrSize">
-      <field name="attr" writable="1">
-        <type name="Attribute" c:type="PangoAttribute"/>
-      </field>
-      <field name="size" writable="1">
-        <type name="int" c:type="int"/>
-      </field>
-      <field name="absolute" writable="1" bits="1">
-        <type name="uint" c:type="guint"/>
-      </field>
-      <constructor name="new"
-                   c:identifier="pango_attr_size_new"
-                   doc="Create a new font-size attribute in fractional points.
-freed with pango_attribute_destroy().">
-        <return-value transfer-ownership="full">
-          <type name="AttrSize" c:type="PangoAttribute*"/>
-        </return-value>
-        <parameters>
-          <parameter name="size" transfer-ownership="none">
-            <type name="int" c:type="int"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_absolute"
-                   c:identifier="pango_attr_size_new_absolute"
-                   doc="Create a new font-size attribute in device units.
-freed with pango_attribute_destroy()."
-                   version="1.8">
-        <return-value transfer-ownership="full">
-          <type name="AttrSize" c:type="PangoAttribute*"/>
-        </return-value>
-        <parameters>
-          <parameter name="size" transfer-ownership="none">
-            <type name="int" c:type="int"/>
-          </parameter>
-        </parameters>
-      </constructor>
-    </record>
-    <record name="AttrString" c:type="PangoAttrString">
-      <field name="attr" writable="1">
-        <type name="Attribute" c:type="PangoAttribute"/>
-      </field>
-      <field name="value" writable="1">
-        <type name="utf8" c:type="char*"/>
-      </field>
-    </record>
-    <enumeration name="AttrType"
-                 glib:type-name="PangoAttrType"
-                 glib:get-type="pango_attr_type_get_type"
-                 c:type="PangoAttrType">
-      <member name="invalid"
-              value="0"
-              c:identifier="PANGO_ATTR_INVALID"
-              glib:nick="invalid"/>
-      <member name="language"
-              value="1"
-              c:identifier="PANGO_ATTR_LANGUAGE"
-              glib:nick="language"/>
-      <member name="family"
-              value="2"
-              c:identifier="PANGO_ATTR_FAMILY"
-              glib:nick="family"/>
-      <member name="style"
-              value="3"
-              c:identifier="PANGO_ATTR_STYLE"
-              glib:nick="style"/>
-      <member name="weight"
-              value="4"
-              c:identifier="PANGO_ATTR_WEIGHT"
-              glib:nick="weight"/>
-      <member name="variant"
-              value="5"
-              c:identifier="PANGO_ATTR_VARIANT"
-              glib:nick="variant"/>
-      <member name="stretch"
-              value="6"
-              c:identifier="PANGO_ATTR_STRETCH"
-              glib:nick="stretch"/>
-      <member name="size"
-              value="7"
-              c:identifier="PANGO_ATTR_SIZE"
-              glib:nick="size"/>
-      <member name="font_desc"
-              value="8"
-              c:identifier="PANGO_ATTR_FONT_DESC"
-              glib:nick="font-desc"/>
-      <member name="foreground"
-              value="9"
-              c:identifier="PANGO_ATTR_FOREGROUND"
-              glib:nick="foreground"/>
-      <member name="background"
-              value="10"
-              c:identifier="PANGO_ATTR_BACKGROUND"
-              glib:nick="background"/>
-      <member name="underline"
-              value="11"
-              c:identifier="PANGO_ATTR_UNDERLINE"
-              glib:nick="underline"/>
-      <member name="strikethrough"
-              value="12"
-              c:identifier="PANGO_ATTR_STRIKETHROUGH"
-              glib:nick="strikethrough"/>
-      <member name="rise"
-              value="13"
-              c:identifier="PANGO_ATTR_RISE"
-              glib:nick="rise"/>
-      <member name="shape"
-              value="14"
-              c:identifier="PANGO_ATTR_SHAPE"
-              glib:nick="shape"/>
-      <member name="scale"
-              value="15"
-              c:identifier="PANGO_ATTR_SCALE"
-              glib:nick="scale"/>
-      <member name="fallback"
-              value="16"
-              c:identifier="PANGO_ATTR_FALLBACK"
-              glib:nick="fallback"/>
-      <member name="letter_spacing"
-              value="17"
-              c:identifier="PANGO_ATTR_LETTER_SPACING"
-              glib:nick="letter-spacing"/>
-      <member name="underline_color"
-              value="18"
-              c:identifier="PANGO_ATTR_UNDERLINE_COLOR"
-              glib:nick="underline-color"/>
-      <member name="strikethrough_color"
-              value="19"
-              c:identifier="PANGO_ATTR_STRIKETHROUGH_COLOR"
-              glib:nick="strikethrough-color"/>
-      <member name="absolute_size"
-              value="20"
-              c:identifier="PANGO_ATTR_ABSOLUTE_SIZE"
-              glib:nick="absolute-size"/>
-      <member name="gravity"
-              value="21"
-              c:identifier="PANGO_ATTR_GRAVITY"
-              glib:nick="gravity"/>
-      <member name="gravity_hint"
-              value="22"
-              c:identifier="PANGO_ATTR_GRAVITY_HINT"
-              glib:nick="gravity-hint"/>
-    </enumeration>
-    <record name="Attribute" c:type="PangoAttribute">
-      <field name="klass" writable="1">
-        <type name="AttrClass" c:type="PangoAttrClass*"/>
-      </field>
-      <field name="start_index" writable="1">
-        <type name="uint" c:type="guint"/>
-      </field>
-      <field name="end_index" writable="1">
-        <type name="uint" c:type="guint"/>
-      </field>
-      <method name="init"
-              c:identifier="pango_attribute_init"
-              doc="Initializes @attr&apos;s klass to @klass,
-it&apos;s start_index to %PANGO_ATTR_INDEX_FROM_TEXT_BEGINNING
-and end_index to %PANGO_ATTR_INDEX_TO_TEXT_END
-such that the attribute applies
-to the entire text by default."
-              version="1.20">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="klass" transfer-ownership="none">
-            <type name="AttrClass" c:type="PangoAttrClass*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="copy"
-              c:identifier="pango_attribute_copy"
-              doc="Make a copy of an attribute.
-freed with pango_attribute_destroy().">
-        <return-value transfer-ownership="full">
-          <type name="Attribute" c:type="PangoAttribute*"/>
-        </return-value>
-      </method>
-      <method name="destroy"
-              c:identifier="pango_attribute_destroy"
-              doc="Destroy a #PangoAttribute and free all associated memory.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="equal"
-              c:identifier="pango_attribute_equal"
-              doc="Compare two attributes for equality. This compares only the
-actual value of the two attributes and not the ranges that the
-attributes apply to.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="attr2" transfer-ownership="none">
-            <type name="Attribute" c:type="PangoAttribute*"/>
-          </parameter>
-        </parameters>
-      </method>
-    </record>
-    <enumeration name="BidiType"
-                 doc="The #PangoBidiType type represents the bidirectional character
-type of a Unicode character as specified by the
-&lt;ulink url=&quot;http://www.unicode.org/reports/tr9/&quot;&gt;Unicode bidirectional algorithm&lt;/ulink&gt;."
-                 version="1.22"
-                 glib:type-name="PangoBidiType"
-                 glib:get-type="pango_bidi_type_get_type"
-                 c:type="PangoBidiType">
-      <member name="l"
-              value="0"
-              c:identifier="PANGO_BIDI_TYPE_L"
-              glib:nick="l"/>
-      <member name="lre"
-              value="1"
-              c:identifier="PANGO_BIDI_TYPE_LRE"
-              glib:nick="lre"/>
-      <member name="lro"
-              value="2"
-              c:identifier="PANGO_BIDI_TYPE_LRO"
-              glib:nick="lro"/>
-      <member name="r"
-              value="3"
-              c:identifier="PANGO_BIDI_TYPE_R"
-              glib:nick="r"/>
-      <member name="al"
-              value="4"
-              c:identifier="PANGO_BIDI_TYPE_AL"
-              glib:nick="al"/>
-      <member name="rle"
-              value="5"
-              c:identifier="PANGO_BIDI_TYPE_RLE"
-              glib:nick="rle"/>
-      <member name="rlo"
-              value="6"
-              c:identifier="PANGO_BIDI_TYPE_RLO"
-              glib:nick="rlo"/>
-      <member name="pdf"
-              value="7"
-              c:identifier="PANGO_BIDI_TYPE_PDF"
-              glib:nick="pdf"/>
-      <member name="en"
-              value="8"
-              c:identifier="PANGO_BIDI_TYPE_EN"
-              glib:nick="en"/>
-      <member name="es"
-              value="9"
-              c:identifier="PANGO_BIDI_TYPE_ES"
-              glib:nick="es"/>
-      <member name="et"
-              value="10"
-              c:identifier="PANGO_BIDI_TYPE_ET"
-              glib:nick="et"/>
-      <member name="an"
-              value="11"
-              c:identifier="PANGO_BIDI_TYPE_AN"
-              glib:nick="an"/>
-      <member name="cs"
-              value="12"
-              c:identifier="PANGO_BIDI_TYPE_CS"
-              glib:nick="cs"/>
-      <member name="nsm"
-              value="13"
-              c:identifier="PANGO_BIDI_TYPE_NSM"
-              glib:nick="nsm"/>
-      <member name="bn"
-              value="14"
-              c:identifier="PANGO_BIDI_TYPE_BN"
-              glib:nick="bn"/>
-      <member name="b"
-              value="15"
-              c:identifier="PANGO_BIDI_TYPE_B"
-              glib:nick="b"/>
-      <member name="s"
-              value="16"
-              c:identifier="PANGO_BIDI_TYPE_S"
-              glib:nick="s"/>
-      <member name="ws"
-              value="17"
-              c:identifier="PANGO_BIDI_TYPE_WS"
-              glib:nick="ws"/>
-      <member name="on"
-              value="18"
-              c:identifier="PANGO_BIDI_TYPE_ON"
-              glib:nick="on"/>
-    </enumeration>
-    <record name="Color"
-            c:type="PangoColor"
-            glib:type-name="PangoColor"
-            glib:get-type="pango_color_get_type">
-      <field name="red" writable="1">
-        <type name="uint16" c:type="guint16"/>
-      </field>
-      <field name="green" writable="1">
-        <type name="uint16" c:type="guint16"/>
-      </field>
-      <field name="blue" writable="1">
-        <type name="uint16" c:type="guint16"/>
-      </field>
-      <method name="copy"
-              c:identifier="pango_color_copy"
-              doc="Creates a copy of @src, which should be freed with
-pango_color_free(). Primarily used by language bindings,
-not that useful otherwise (since colors can just be copied
-by assignment in C).
-be freed with pango_color_free(), or %NULL
-if @src was %NULL.">
-        <return-value transfer-ownership="full">
-          <type name="Color" c:type="PangoColor*"/>
-        </return-value>
-      </method>
-      <method name="free"
-              c:identifier="pango_color_free"
-              doc="Frees a color allocated by pango_color_copy().">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="parse"
-              c:identifier="pango_color_parse"
-              doc="Fill in the fields of a color from a string specification. The
-string can either one of a large set of standard names. (Taken
-from the X11 &lt;filename&gt;rgb.txt&lt;/filename&gt; file), or it can be a hex value in the
-form &apos;&amp;num;rgb&apos; &apos;&amp;num;rrggbb&apos; &apos;&amp;num;rrrgggbbb&apos; or &apos;&amp;num;rrrrggggbbbb&apos; where
-&apos;r&apos;, &apos;g&apos; and &apos;b&apos; are hex digits of the red, green, and blue
-components of the color, respectively. (White in the four
-forms is &apos;&amp;num;fff&apos; &apos;&amp;num;ffffff&apos; &apos;&amp;num;fffffffff&apos; and &apos;&amp;num;ffffffffffff&apos;)
-otherwise false.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="spec" transfer-ownership="none">
-            <type name="utf8" c:type="char*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="to_string"
-              c:identifier="pango_color_to_string"
-              doc="Returns a textual specification of @color in the hexadecimal form
-&lt;literal&gt;&amp;num;rrrrggggbbbb&lt;/literal&gt;, where &lt;literal&gt;r&lt;/literal&gt;,
-&lt;literal&gt;g&lt;/literal&gt; and &lt;literal&gt;b&lt;/literal&gt; are hex digits representing
-the red, green, and blue components respectively."
-              version="1.16">
-        <return-value transfer-ownership="full">
-          <type name="utf8" c:type="gchar*"/>
-        </return-value>
-      </method>
-    </record>
-    <class name="Context"
-           c:type="PangoContext"
-           parent="GObject.Object"
-           glib:type-name="PangoContext"
-           glib:get-type="pango_context_get_type"
-           glib:type-struct="ContextClass">
-      <constructor name="new"
-                   c:identifier="pango_context_new"
-                   doc="Creates a new #PangoContext initialized to default values.
-This function is not particularly useful as it should always
-be followed by a pango_context_set_font_map() call, and the
-function pango_font_map_create_context() does these two steps
-together and hence users are recommended to use that.
-If you are using Pango as part of a higher-level system,
-that system may have it&apos;s own way of create a #PangoContext.
-For instance, the GTK+ toolkit has, among others,
-gdk_pango_context_get_for_screen(), and
-gtk_widget_get_pango_context().  Use those instead.
-be freed with g_object_unref().">
-        <return-value transfer-ownership="full">
-          <type name="Context" c:type="PangoContext*"/>
-        </return-value>
-      </constructor>
-      <method name="set_font_map"
-              c:identifier="pango_context_set_font_map"
-              doc="Sets the font map to be searched when fonts are looked-up in this context.
-This is only for internal use by Pango backends, a #PangoContext obtained
-via one of the recommended methods should already have a suitable font map.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="font_map" transfer-ownership="none">
-            <type name="FontMap" c:type="PangoFontMap*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_font_map"
-              c:identifier="pango_context_get_font_map"
-              doc="Gets the #PangoFontmap used to look up fonts for this context.
-is owned by Pango and should not be unreferenced."
-              version="1.6">
-        <return-value transfer-ownership="full">
-          <type name="FontMap" c:type="PangoFontMap*"/>
-        </return-value>
-      </method>
-      <method name="list_families"
-              c:identifier="pango_context_list_families"
-              doc="This array should be freed with g_free().
-List all families for a context.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="families" transfer-ownership="none">
-            <type name="FontFamily" c:type="PangoFontFamily***"/>
-          </parameter>
-          <parameter name="n_families"
-                     direction="out"
-                     transfer-ownership="full">
-            <type name="int" c:type="int*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="load_font"
-              c:identifier="pango_context_load_font"
-              doc="Loads the font in one of the fontmaps in the context
-that is the closest match for @desc.">
-        <return-value transfer-ownership="full">
-          <type name="Font" c:type="PangoFont*"/>
-        </return-value>
-        <parameters>
-          <parameter name="desc" transfer-ownership="none">
-            <type name="FontDescription" c:type="PangoFontDescription*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="load_fontset"
-              c:identifier="pango_context_load_fontset"
-              doc="Load a set of fonts in the context that can be used to render
-a font matching @desc.">
-        <return-value transfer-ownership="full">
-          <type name="Fontset" c:type="PangoFontset*"/>
-        </return-value>
-        <parameters>
-          <parameter name="desc" transfer-ownership="none">
-            <type name="FontDescription" c:type="PangoFontDescription*"/>
-          </parameter>
-          <parameter name="language" transfer-ownership="none">
-            <type name="Language" c:type="PangoLanguage*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_metrics"
-              c:identifier="pango_context_get_metrics"
-              doc="description from the context will be used.
-for. %NULL means that the language tag from the context will
-be used. If no language tag is set on the context, metrics
-for the default language (as determined by
-pango_language_get_default()) will be returned.
-Get overall metric information for a particular font
-description.  Since the metrics may be substantially different for
-different scripts, a language tag can be provided to indicate that
-the metrics should be retrieved that correspond to the script(s)
-used by that language.
-The #PangoFontDescription is interpreted in the same way as
-by pango_itemize(), and the family name may be a comma separated
-list of figures. If characters from multiple of these families
-would be used to render the string, then the returned fonts would
-be a composite of the metrics for the fonts loaded for the
-individual families.
-when finished using the object.">
-        <return-value transfer-ownership="full">
-          <type name="FontMetrics" c:type="PangoFontMetrics*"/>
-        </return-value>
-        <parameters>
-          <parameter name="desc" transfer-ownership="none">
-            <type name="FontDescription" c:type="PangoFontDescription*"/>
-          </parameter>
-          <parameter name="language" transfer-ownership="none">
-            <type name="Language" c:type="PangoLanguage*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_font_description"
-              c:identifier="pango_context_set_font_description"
-              doc="Set the default font description for the context">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="desc" transfer-ownership="none">
-            <type name="FontDescription" c:type="PangoFontDescription*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_font_description"
-              c:identifier="pango_context_get_font_description"
-              doc="Retrieve the default font description for the context.
-This value must not be modified or freed.">
-        <return-value transfer-ownership="full">
-          <type name="FontDescription" c:type="PangoFontDescription*"/>
-        </return-value>
-      </method>
-      <method name="get_language"
-              c:identifier="pango_context_get_language"
-              doc="Retrieves the global language tag for the context.">
-        <return-value transfer-ownership="full">
-          <type name="Language" c:type="PangoLanguage*"/>
-        </return-value>
-      </method>
-      <method name="set_language"
-              c:identifier="pango_context_set_language"
-              doc="Sets the global language tag for the context.  The default language
-for the locale of the running process can be found using
-pango_language_get_default().">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="language" transfer-ownership="none">
-            <type name="Language" c:type="PangoLanguage*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_base_dir"
-              c:identifier="pango_context_set_base_dir"
-              doc="Sets the base direction for the context.
-The base direction is used in applying the Unicode bidirectional
-algorithm; if the @direction is %PANGO_DIRECTION_LTR or
-%PANGO_DIRECTION_RTL, then the value will be used as the paragraph
-direction in the Unicode bidirectional algorithm.  A value of
-%PANGO_DIRECTION_WEAK_LTR or %PANGO_DIRECTION_WEAK_RTL is used only
-for paragraphs that do not contain any strong characters themselves.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="direction" transfer-ownership="none">
-            <type name="Direction" c:type="PangoDirection"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_base_dir"
-              c:identifier="pango_context_get_base_dir"
-              doc="Retrieves the base direction for the context. See
-pango_context_set_base_dir().">
-        <return-value transfer-ownership="full">
-          <type name="Direction" c:type="PangoDirection"/>
-        </return-value>
-      </method>
-      <method name="set_base_gravity"
-              c:identifier="pango_context_set_base_gravity"
-              doc="Sets the base gravity for the context.
-The base gravity is used in laying vertical text out."
-              version="1.16">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="gravity" transfer-ownership="none">
-            <type name="Gravity" c:type="PangoGravity"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_base_gravity"
-              c:identifier="pango_context_get_base_gravity"
-              doc="Retrieves the base gravity for the context. See
-pango_context_set_base_gravity()."
-              version="1.16">
-        <return-value transfer-ownership="full">
-          <type name="Gravity" c:type="PangoGravity"/>
-        </return-value>
-      </method>
-      <method name="get_gravity"
-              c:identifier="pango_context_get_gravity"
-              doc="Retrieves the gravity for the context. This is similar to
-pango_context_get_base_gravity(), except for when the base gravity
-is %PANGO_GRAVITY_AUTO for which pango_gravity_get_for_matrix() is used
-to return the gravity from the current context matrix."
-              version="1.16">
-        <return-value transfer-ownership="full">
-          <type name="Gravity" c:type="PangoGravity"/>
-        </return-value>
-      </method>
-      <method name="set_gravity_hint"
-              c:identifier="pango_context_set_gravity_hint"
-              doc="Sets the gravity hint for the context.
-The gravity hint is used in laying vertical text out, and is only relevant
-if gravity of the context as returned by pango_context_get_gravity()
-is set %PANGO_GRAVITY_EAST or %PANGO_GRAVITY_WEST."
-              version="1.16">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="hint" transfer-ownership="none">
-            <type name="GravityHint" c:type="PangoGravityHint"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_gravity_hint"
-              c:identifier="pango_context_get_gravity_hint"
-              doc="Retrieves the gravity hint for the context. See
-pango_context_set_gravity_hint() for details."
-              version="1.16">
-        <return-value transfer-ownership="full">
-          <type name="GravityHint" c:type="PangoGravityHint"/>
-        </return-value>
-      </method>
-      <method name="set_matrix"
-              c:identifier="pango_context_set_matrix"
-              doc="(No matrix set is the same as setting the identity matrix.)
-Sets the transformation matrix that will be applied when rendering
-with this context. Note that reported metrics are in the user space
-coordinates before the application of the matrix, not device-space
-coordinates after the application of the matrix. So, they don&apos;t scale
-with the matrix, though they may change slightly for different
-matrices, depending on how the text is fit to the pixel grid."
-              version="1.6">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="matrix" transfer-ownership="none">
-            <type name="Matrix" c:type="PangoMatrix*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_matrix"
-              c:identifier="pango_context_get_matrix"
-              doc="Gets the transformation matrix that will be applied when
-rendering with this context. See pango_context_set_matrix().
-(which is the same as the identity matrix). The returned
-matrix is owned by Pango and must not be modified or
-freed."
-              version="1.6">
-        <return-value transfer-ownership="none">
-          <type name="Matrix" c:type="PangoMatrix*"/>
-        </return-value>
-      </method>
-    </class>
-    <record name="ContextClass"
-            c:type="PangoContextClass"
-            glib:is-gtype-struct-for="Context">
-    </record>
-    <record name="Coverage" c:type="PangoCoverage">
-      <constructor name="new"
-                   c:identifier="pango_coverage_new"
-                   doc="Create a new #PangoCoverage
-initialized to %PANGO_COVERAGE_NONE
-with a reference count of one, which
-should be freed with pango_coverage_unref().">
-        <return-value transfer-ownership="full">
-          <type name="Coverage" c:type="PangoCoverage*"/>
-        </return-value>
-      </constructor>
-      <method name="ref"
-              c:identifier="pango_coverage_ref"
-              doc="Increase the reference count on the #PangoCoverage by one">
-        <return-value transfer-ownership="full">
-          <type name="Coverage" c:type="PangoCoverage*"/>
-        </return-value>
-      </method>
-      <method name="unref"
-              c:identifier="pango_coverage_unref"
-              doc="Decrease the reference count on the #PangoCoverage by one.
-If the result is zero, free the coverage and all associated memory.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="copy"
-              c:identifier="pango_coverage_copy"
-              doc="Copy an existing #PangoCoverage. (This function may now be unnecessary
-since we refcount the structure. File a bug if you use it.)
-with a reference count of one, which
-should be freed with pango_coverage_unref().">
-        <return-value transfer-ownership="full">
-          <type name="Coverage" c:type="PangoCoverage*"/>
-        </return-value>
-      </method>
-      <method name="get"
-              c:identifier="pango_coverage_get"
-              doc="Determine whether a particular index is covered by @coverage">
-        <return-value transfer-ownership="full">
-          <type name="CoverageLevel" c:type="PangoCoverageLevel"/>
-        </return-value>
-        <parameters>
-          <parameter name="index_" transfer-ownership="none">
-            <type name="int" c:type="int"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set"
-              c:identifier="pango_coverage_set"
-              doc="Modify a particular index within @coverage">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="index_" transfer-ownership="none">
-            <type name="int" c:type="int"/>
-          </parameter>
-          <parameter name="level" transfer-ownership="none">
-            <type name="CoverageLevel" c:type="PangoCoverageLevel"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="max"
-              c:identifier="pango_coverage_max"
-              doc="Set the coverage for each index in @coverage to be the max (better)
-value of the current coverage for the index and the coverage for
-the corresponding index in @other.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="other" transfer-ownership="none">
-            <type name="Coverage" c:type="PangoCoverage*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="to_bytes"
-              c:identifier="pango_coverage_to_bytes"
-              doc="Convert a #PangoCoverage structure into a flat binary format">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="bytes" direction="out" transfer-ownership="full">
-            <type name="uint8" c:type="guchar**"/>
-          </parameter>
-          <parameter name="n_bytes" direction="out" transfer-ownership="full">
-            <type name="int" c:type="int*"/>
-          </parameter>
-        </parameters>
-      </method>
-    </record>
-    <enumeration name="CoverageLevel"
-                 glib:type-name="PangoCoverageLevel"
-                 glib:get-type="pango_coverage_level_get_type"
-                 c:type="PangoCoverageLevel">
-      <member name="none"
-              value="0"
-              c:identifier="PANGO_COVERAGE_NONE"
-              glib:nick="none"/>
-      <member name="fallback"
-              value="1"
-              c:identifier="PANGO_COVERAGE_FALLBACK"
-              glib:nick="fallback"/>
-      <member name="approximate"
-              value="2"
-              c:identifier="PANGO_COVERAGE_APPROXIMATE"
-              glib:nick="approximate"/>
-      <member name="exact"
-              value="3"
-              c:identifier="PANGO_COVERAGE_EXACT"
-              glib:nick="exact"/>
-    </enumeration>
-    <enumeration name="Direction"
-                 doc="same as %PANGO_DIRECTION_RTL.
-same as %PANGO_DIRECTION_LTR
-The #PangoDirection type represents a direction in the
-Unicode bidirectional algorithm; not every value in this
-enumeration makes sense for every usage of #PangoDirection;
-for example, the return value of pango_unichar_direction()
-and pango_find_base_dir() cannot be %PANGO_DIRECTION_WEAK_LTR
-or %PANGO_DIRECTION_WEAK_RTL, since every character is either
-neutral or has a strong direction; on the other hand
-%PANGO_DIRECTION_NEUTRAL doesn&apos;t make sense to pass
-to pango_itemize_with_base_dir().
-The %PANGO_DIRECTION_TTB_LTR, %PANGO_DIRECTION_TTB_RTL
-values come from an earlier interpretation of this
-enumeration as the writing direction of a block of
-text and are no longer used; See #PangoGravity for how
-vertical text is handled in Pango."
-                 glib:type-name="PangoDirection"
-                 glib:get-type="pango_direction_get_type"
-                 c:type="PangoDirection">
-      <member name="ltr"
-              value="0"
-              c:identifier="PANGO_DIRECTION_LTR"
-              glib:nick="ltr"/>
-      <member name="rtl"
-              value="1"
-              c:identifier="PANGO_DIRECTION_RTL"
-              glib:nick="rtl"/>
-      <member name="ttb_ltr"
-              value="2"
-              c:identifier="PANGO_DIRECTION_TTB_LTR"
-              glib:nick="ttb-ltr"/>
-      <member name="ttb_rtl"
-              value="3"
-              c:identifier="PANGO_DIRECTION_TTB_RTL"
-              glib:nick="ttb-rtl"/>
-      <member name="weak_ltr"
-              value="4"
-              c:identifier="PANGO_DIRECTION_WEAK_LTR"
-              glib:nick="weak-ltr"/>
-      <member name="weak_rtl"
-              value="5"
-              c:identifier="PANGO_DIRECTION_WEAK_RTL"
-              glib:nick="weak-rtl"/>
-      <member name="neutral"
-              value="6"
-              c:identifier="PANGO_DIRECTION_NEUTRAL"
-              glib:nick="neutral"/>
-    </enumeration>
-    <constant name="ENGINE_TYPE_LANG" value="PangoEngineLang">
-      <type name="utf8"/>
-    </constant>
-    <constant name="ENGINE_TYPE_SHAPE" value="PangoEngineShape">
-      <type name="utf8"/>
-    </constant>
-    <enumeration name="EllipsizeMode"
-                 glib:type-name="PangoEllipsizeMode"
-                 glib:get-type="pango_ellipsize_mode_get_type"
-                 c:type="PangoEllipsizeMode">
-      <member name="none"
-              value="0"
-              c:identifier="PANGO_ELLIPSIZE_NONE"
-              glib:nick="none"/>
-      <member name="start"
-              value="1"
-              c:identifier="PANGO_ELLIPSIZE_START"
-              glib:nick="start"/>
-      <member name="middle"
-              value="2"
-              c:identifier="PANGO_ELLIPSIZE_MIDDLE"
-              glib:nick="middle"/>
-      <member name="end"
-              value="3"
-              c:identifier="PANGO_ELLIPSIZE_END"
-              glib:nick="end"/>
-    </enumeration>
-    <record name="EngineLang" c:type="PangoEngineLang">
-    </record>
-    <record name="EngineShape" c:type="PangoEngineShape">
-    </record>
-    <class name="Font"
-           c:type="PangoFont"
-           parent="GObject.Object"
-           abstract="1"
-           glib:type-name="PangoFont"
-           glib:get-type="pango_font_get_type">
-      <function name="description_from_string"
-                c:identifier="pango_font_description_from_string"
-                doc="Creates a new font description from a string representation in the
-form &quot;[FAMILY-LIST] [STYLE-OPTIONS] [SIZE]&quot;, where FAMILY-LIST is a
-comma separated list of families optionally terminated by a comma,
-STYLE_OPTIONS is a whitespace separated list of words where each WORD
-describes one of style, variant, weight, stretch, or gravity, and SIZE
-is a decimal number (size in points) or optionally followed by the
-unit modifier &quot;px&quot; for absolute size. Any one of the options may
-be absent.  If FAMILY-LIST is absent, then the family_name field of
-the resulting font description will be initialized to %NULL.  If
-STYLE-OPTIONS is missing, then all style options will be set to the
-default values. If SIZE is missing, the size in the resulting font
-description will be set to 0.">
-        <return-value transfer-ownership="full">
-          <type name="FontDescription" c:type="PangoFontDescription*"/>
-        </return-value>
-        <parameters>
-          <parameter name="str" transfer-ownership="none">
-            <type name="utf8" c:type="char*"/>
-          </parameter>
-        </parameters>
-      </function>
-      <method name="describe"
-              c:identifier="pango_font_describe"
-              doc="Returns a description of the font, with font size set in points.
-Use pango_font_describe_with_absolute_size() if you want the font
-size in device units.">
-        <return-value transfer-ownership="full">
-          <type name="FontDescription" c:type="PangoFontDescription*"/>
-        </return-value>
-      </method>
-      <method name="describe_with_absolute_size"
-              c:identifier="pango_font_describe_with_absolute_size"
-              doc="Returns a description of the font, with absolute font size set
-(in device units). Use pango_font_describe() if you want the font
-size in points."
-              version="1.14">
-        <return-value transfer-ownership="full">
-          <type name="FontDescription" c:type="PangoFontDescription*"/>
-        </return-value>
-      </method>
-      <method name="get_coverage"
-              c:identifier="pango_font_get_coverage"
-              doc="Computes the coverage map for a given font and language tag.">
-        <return-value transfer-ownership="full">
-          <type name="Coverage" c:type="PangoCoverage*"/>
-        </return-value>
-        <parameters>
-          <parameter name="language" transfer-ownership="none">
-            <type name="Language" c:type="PangoLanguage*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="find_shaper"
-              c:identifier="pango_font_find_shaper"
-              doc="Finds the best matching shaper for a font for a particular
-language tag and character point.">
-        <return-value transfer-ownership="full">
-          <type name="EngineShape" c:type="PangoEngineShape*"/>
-        </return-value>
-        <parameters>
-          <parameter name="language" transfer-ownership="none">
-            <type name="Language" c:type="PangoLanguage*"/>
-          </parameter>
-          <parameter name="ch" transfer-ownership="none">
-            <type name="uint32" c:type="guint32"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_metrics"
-              c:identifier="pango_font_get_metrics"
-              doc="for, or %NULL to indicate to get the metrics for the entire
-font.
-Gets overall metric information for a font. Since the metrics may be
-substantially different for different scripts, a language tag can
-be provided to indicate that the metrics should be retrieved that
-correspond to the script(s) used by that language.
-If @font is %NULL, this function gracefully sets some sane values in the
-output variables and returns.
-when finished using the object.">
-        <return-value transfer-ownership="full">
-          <type name="FontMetrics" c:type="PangoFontMetrics*"/>
-        </return-value>
-        <parameters>
-          <parameter name="language" transfer-ownership="none">
-            <type name="Language" c:type="PangoLanguage*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_glyph_extents"
-              c:identifier="pango_font_get_glyph_extents"
-              doc="or %NULL to indicate that the result is not needed.
-or %NULL to indicate that the result is not needed.
-Gets the logical and ink extents of a glyph within a font. The
-coordinate system for each rectangle has its origin at the
-base line and horizontal origin of the character with increasing
-coordinates extending to the right and down. The macros PANGO_ASCENT(),
-PANGO_DESCENT(), PANGO_LBEARING(), and PANGO_RBEARING() can be used to convert
-from the extents rectangle to more traditional font metrics. The units
-of the rectangles are in 1/PANGO_SCALE of a device unit.
-If @font is %NULL, this function gracefully sets some sane values in the
-output variables and returns.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="glyph" transfer-ownership="none">
-            <type name="Glyph" c:type="PangoGlyph"/>
-          </parameter>
-          <parameter name="ink_rect" transfer-ownership="none">
-            <type name="Rectangle" c:type="PangoRectangle*"/>
-          </parameter>
-          <parameter name="logical_rect" transfer-ownership="none">
-            <type name="Rectangle" c:type="PangoRectangle*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_font_map"
-              c:identifier="pango_font_get_font_map"
-              doc="Gets the font map for which the font was created.
-Note that the font maintains a &lt;firstterm&gt;weak&lt;/firstterm&gt; reference
-to the font map, so if all references to font map are dropped, the font
-map will be finalized even if there are fonts created with the font
-map that are still alive.  In that case this function will return %NULL.
-It is the responsibility of the user to ensure that the font map is kept
-alive.  In most uses this is not an issue as a #PangoContext holds
-a reference to the font map."
-              version="1.10">
-        <return-value transfer-ownership="full">
-          <type name="FontMap" c:type="PangoFontMap*"/>
-        </return-value>
-      </method>
-    </class>
-    <record name="FontDescription"
-            c:type="PangoFontDescription"
-            glib:type-name="PangoFontDescription"
-            glib:get-type="pango_font_description_get_type">
-      <constructor name="new"
-                   c:identifier="pango_font_description_new"
-                   doc="Creates a new font description structure with all fields unset.
-should be freed using pango_font_description_free().">
-        <return-value transfer-ownership="full">
-          <type name="FontDescription" c:type="PangoFontDescription*"/>
-        </return-value>
-      </constructor>
-      <method name="copy"
-              c:identifier="pango_font_description_copy"
-              doc="Make a copy of a #PangoFontDescription.
-be freed with pango_font_description_free(), or %NULL
-if @desc was %NULL.">
-        <return-value transfer-ownership="full">
-          <type name="FontDescription" c:type="PangoFontDescription*"/>
-        </return-value>
-      </method>
-      <method name="copy_static"
-              c:identifier="pango_font_description_copy_static"
-              doc="Like pango_font_description_copy(), but only a shallow copy is made
-of the family name and other allocated fields. The result can only
-be used until @desc is modified or freed. This is meant to be used
-when the copy is only needed temporarily.
-be freed with pango_font_description_free(), or %NULL
-if @desc was %NULL.">
-        <return-value transfer-ownership="full">
-          <type name="FontDescription" c:type="PangoFontDescription*"/>
-        </return-value>
-      </method>
-      <method name="hash"
-              c:identifier="pango_font_description_hash"
-              doc="Computes a hash of a #PangoFontDescription structure suitable
-to be used, for example, as an argument to g_hash_table_new().
-The hash value is independent of @desc-&gt;mask.">
-        <return-value transfer-ownership="none">
-          <type name="uint" c:type="guint"/>
-        </return-value>
-      </method>
-      <method name="equal"
-              c:identifier="pango_font_description_equal"
-              doc="Compares two font descriptions for equality. Two font descriptions
-are considered equal if the fonts they describe are provably identical.
-This means that their masks do not have to match, as long as other fields
-are all the same. (Two font descriptions may result in identical fonts
-being loaded, but still compare %FALSE.)
-%FALSE otherwise.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="desc2" transfer-ownership="none">
-            <type name="FontDescription" c:type="PangoFontDescription*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="free"
-              c:identifier="pango_font_description_free"
-              doc="Frees a font description.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="_free"
-              c:identifier="pango_font_descriptions_free"
-              doc="Frees an array of font descriptions.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="n_descs" transfer-ownership="none">
-            <type name="int" c:type="int"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_family"
-              c:identifier="pango_font_description_set_family"
-              doc="Sets the family name field of a font description. The family
-name represents a family of related font styles, and will
-resolve to a particular #PangoFontFamily. In some uses of
-#PangoFontDescription, it is also possible to use a comma
-separated list of family names for this field.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="family" transfer-ownership="none">
-            <type name="utf8" c:type="char*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_family_static"
-              c:identifier="pango_font_description_set_family_static"
-              doc="Like pango_font_description_set_family(), except that no
-copy of @family is made. The caller must make sure that the
-string passed in stays around until @desc has been freed
-or the name is set again. This function can be used if
-if @desc is only needed temporarily.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="family" transfer-ownership="none">
-            <type name="utf8" c:type="char*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_family"
-              c:identifier="pango_font_description_get_family"
-              doc="Gets the family name field of a font description. See
-pango_font_description_set_family().
-%NULL if not previously set.  This has the same life-time
-as the font description itself and should not be freed.">
-        <return-value transfer-ownership="none">
-          <type name="utf8" c:type="char*"/>
-        </return-value>
-      </method>
-      <method name="set_style"
-              c:identifier="pango_font_description_set_style"
-              doc="Sets the style field of a #PangoFontDescription. The
-#PangoStyle enumeration describes whether the font is slanted and
-the manner in which it is slanted; it can be either
-#PANGO_STYLE_NORMAL, #PANGO_STYLE_ITALIC, or #PANGO_STYLE_OBLIQUE.
-Most fonts will either have a italic style or an oblique
-style, but not both, and font matching in Pango will
-match italic specifications with oblique fonts and vice-versa
-if an exact match is not found.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="style" transfer-ownership="none">
-            <type name="Style" c:type="PangoStyle"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_style"
-              c:identifier="pango_font_description_get_style"
-              doc="Gets the style field of a #PangoFontDescription. See
-pango_font_description_set_style().
-Use pango_font_description_get_set_fields() to find out if
-the field was explicitly set or not.">
-        <return-value transfer-ownership="full">
-          <type name="Style" c:type="PangoStyle"/>
-        </return-value>
-      </method>
-      <method name="set_variant"
-              c:identifier="pango_font_description_set_variant"
-              doc="Sets the variant field of a font description. The #PangoVariant
-can either be %PANGO_VARIANT_NORMAL or %PANGO_VARIANT_SMALL_CAPS.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="variant" transfer-ownership="none">
-            <type name="Variant" c:type="PangoVariant"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_variant"
-              c:identifier="pango_font_description_get_variant"
-              doc="Gets the variant field of a #PangoFontDescription. See
-pango_font_description_set_variant().
-pango_font_description_get_set_fields() to find out if
-the field was explicitly set or not.">
-        <return-value transfer-ownership="full">
-          <type name="Variant" c:type="PangoVariant"/>
-        </return-value>
-      </method>
-      <method name="set_weight"
-              c:identifier="pango_font_description_set_weight"
-              doc="Sets the weight field of a font description. The weight field
-specifies how bold or light the font should be. In addition
-to the values of the #PangoWeight enumeration, other intermediate
-numeric values are possible.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="weight" transfer-ownership="none">
-            <type name="Weight" c:type="PangoWeight"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_weight"
-              c:identifier="pango_font_description_get_weight"
-              doc="Gets the weight field of a font description. See
-pango_font_description_set_weight().
-pango_font_description_get_set_fields() to find out if
-the field was explicitly set or not.">
-        <return-value transfer-ownership="full">
-          <type name="Weight" c:type="PangoWeight"/>
-        </return-value>
-      </method>
-      <method name="set_stretch"
-              c:identifier="pango_font_description_set_stretch"
-              doc="Sets the stretch field of a font description. The stretch field
-specifies how narrow or wide the font should be.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="stretch" transfer-ownership="none">
-            <type name="Stretch" c:type="PangoStretch"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_stretch"
-              c:identifier="pango_font_description_get_stretch"
-              doc="Gets the stretch field of a font description.
-See pango_font_description_set_stretch().
-pango_font_description_get_set_fields() to find out if
-the field was explicitly set or not.">
-        <return-value transfer-ownership="full">
-          <type name="Stretch" c:type="PangoStretch"/>
-        </return-value>
-      </method>
-      <method name="set_size"
-              c:identifier="pango_font_description_set_size"
-              doc="a @size value of 10 * PANGO_SCALE is a 10 point font. The conversion
-factor between points and device units depends on system configuration
-and the output device. For screen display, a logical DPI of 96 is
-common, in which case a 10 point font corresponds to a 10 * (96 / 72) = 13.3
-pixel font. Use pango_font_description_set_absolute_size() if you need
-a particular size in device units.
-Sets the size field of a font description in fractional points. This is mutually
-exclusive with pango_font_description_set_absolute_size().">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="size" transfer-ownership="none">
-            <type name="int" c:type="gint"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_size"
-              c:identifier="pango_font_description_get_size"
-              doc="Gets the size field of a font description.
-See pango_font_description_set_size().
-You must call pango_font_description_get_size_is_absolute()
-to find out which is the case. Returns 0 if the size field has not
-previously been set or it has been set to 0 explicitly.
-Use pango_font_description_get_set_fields() to
-find out if the field was explicitly set or not.">
-        <return-value transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </return-value>
-      </method>
-      <method name="set_absolute_size"
-              c:identifier="pango_font_description_set_absolute_size"
-              doc="device unit. For an output backend where a device unit is a pixel, a @size
-value of 10 * PANGO_SCALE gives a 10 pixel font.
-Sets the size field of a font description, in device units. This is mutually
-exclusive with pango_font_description_set_size() which sets the font size
-in points."
-              version="1.8">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="size" transfer-ownership="none">
-            <type name="double" c:type="double"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_size_is_absolute"
-              c:identifier="pango_font_description_get_size_is_absolute"
-              doc="Determines whether the size of the font is in points (not absolute) or device units (absolute).
-See pango_font_description_set_size() and pango_font_description_set_absolute_size().
-points or device units.  Use pango_font_description_get_set_fields() to
-find out if the size field of the font description was explicitly set or not."
-              version="1.8">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </method>
-      <method name="set_gravity"
-              c:identifier="pango_font_description_set_gravity"
-              doc="Sets the gravity field of a font description. The gravity field
-specifies how the glyphs should be rotated.  If @gravity is
-%PANGO_GRAVITY_AUTO, this actually unsets the gravity mask on
-the font description.
-This function is seldom useful to the user.  Gravity should normally
-be set on a #PangoContext."
-              version="1.16">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="gravity" transfer-ownership="none">
-            <type name="Gravity" c:type="PangoGravity"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_gravity"
-              c:identifier="pango_font_description_get_gravity"
-              doc="Gets the gravity field of a font description. See
-pango_font_description_set_gravity().
-pango_font_description_get_set_fields() to find out if
-the field was explicitly set or not."
-              version="1.16">
-        <return-value transfer-ownership="full">
-          <type name="Gravity" c:type="PangoGravity"/>
-        </return-value>
-      </method>
-      <method name="get_set_fields"
-              c:identifier="pango_font_description_get_set_fields"
-              doc="Determines which fields in a font description have been set.
-fields in @desc that have been set.">
-        <return-value transfer-ownership="full">
-          <type name="FontMask" c:type="PangoFontMask"/>
-        </return-value>
-      </method>
-      <method name="unset_fields"
-              c:identifier="pango_font_description_unset_fields"
-              doc="Unsets some of the fields in a #PangoFontDescription.  The unset
-fields will get back to their default values.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="to_unset" transfer-ownership="none">
-            <type name="FontMask" c:type="PangoFontMask"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="merge"
-              c:identifier="pango_font_description_merge"
-              doc="corresponding values from @desc_to_merge, even if they
-are already exist.
-Merges the fields that are set in @desc_to_merge into the fields in
-are not already set are affected. If %TRUE, then fields that are
-already set will be replaced as well.
-If @desc_to_merge is %NULL, this function performs nothing.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="desc_to_merge" transfer-ownership="none">
-            <type name="FontDescription" c:type="PangoFontDescription*"/>
-          </parameter>
-          <parameter name="replace_existing" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="merge_static"
-              c:identifier="pango_font_description_merge_static"
-              doc="corresponding values from @desc_to_merge, even if they
-are already exist.
-Like pango_font_description_merge(), but only a shallow copy is made
-of the family name and other allocated fields. @desc can only be
-used until @desc_to_merge is modified or freed. This is meant
-to be used when the merged font description is only needed temporarily.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="desc_to_merge" transfer-ownership="none">
-            <type name="FontDescription" c:type="PangoFontDescription*"/>
-          </parameter>
-          <parameter name="replace_existing" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="better_match"
-              c:identifier="pango_font_description_better_match"
-              doc="Determines if the style attributes of @new_match are a closer match
-for @desc than those of @old_match are, or if @old_match is %NULL,
-determines if @new_match is a match at all.
-Approximate matching is done for
-weight and style; other style attributes must match exactly.
-Style attributes are all attributes other than family and size-related
-attributes.  Approximate matching for style considers PANGO_STYLE_OBLIQUE
-and PANGO_STYLE_ITALIC as matches, but not as good a match as when the
-styles are equal.
-Note that @old_match must match @desc.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="old_match" transfer-ownership="none">
-            <type name="FontDescription" c:type="PangoFontDescription*"/>
-          </parameter>
-          <parameter name="new_match" transfer-ownership="none">
-            <type name="FontDescription" c:type="PangoFontDescription*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="to_string"
-              c:identifier="pango_font_description_to_string"
-              doc="Creates a string representation of a font description. See
-pango_font_description_from_string() for a description of the
-format of the string representation. The family list in the
-string description will only have a terminating comma if the
-last word of the list is a valid style option.">
-        <return-value transfer-ownership="full">
-          <type name="utf8" c:type="char*"/>
-        </return-value>
-      </method>
-      <method name="to_filename"
-              c:identifier="pango_font_description_to_filename"
-              doc="Creates a filename representation of a font description. The
-filename is identical to the result from calling
-pango_font_description_to_string(), but with underscores instead of
-characters that are untypical in filenames, and in lower case only.">
-        <return-value transfer-ownership="full">
-          <type name="utf8" c:type="char*"/>
-        </return-value>
-      </method>
-    </record>
-    <class name="FontFace"
-           c:type="PangoFontFace"
-           parent="GObject.Object"
-           abstract="1"
-           glib:type-name="PangoFontFace"
-           glib:get-type="pango_font_face_get_type">
-      <method name="describe"
-              c:identifier="pango_font_face_describe"
-              doc="Returns the family, style, variant, weight and stretch of
-a #PangoFontFace. The size field of the resulting font description
-will be unset.
-holding the description of the face. Use pango_font_description_free()
-to free the result.">
-        <return-value transfer-ownership="full">
-          <type name="FontDescription" c:type="PangoFontDescription*"/>
-        </return-value>
-      </method>
-      <method name="get_face_name"
-              c:identifier="pango_font_face_get_face_name"
-              doc="Gets a name representing the style of this face among the
-different faces in the #PangoFontFamily for the face. This
-name is unique among all faces in the family and is suitable
-for displaying to users.
-owned by the face object and must not be modified or freed.">
-        <return-value transfer-ownership="none">
-          <type name="utf8" c:type="char*"/>
-        </return-value>
-      </method>
-      <method name="list_sizes"
-              c:identifier="pango_font_face_list_sizes"
-              doc="should be freed with g_free().
-List the available sizes for a font. This is only applicable to bitmap
-fonts. For scalable fonts, stores %NULL at the location pointed to by
-are in Pango units and are sorted in ascending order."
-              version="1.4">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="sizes" direction="out" transfer-ownership="full">
-            <type name="int" c:type="int**"/>
-          </parameter>
-          <parameter name="n_sizes" direction="out" transfer-ownership="full">
-            <type name="int" c:type="int*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="is_synthesized"
-              c:identifier="pango_font_face_is_synthesized"
-              doc="Returns whether a #PangoFontFace is synthesized by the underlying
-font rendering engine from another face, perhaps by shearing, emboldening,
-or lightening it."
-              version="1.18">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </method>
-    </class>
-    <class name="FontFamily"
-           c:type="PangoFontFamily"
-           parent="GObject.Object"
-           abstract="1"
-           glib:type-name="PangoFontFamily"
-           glib:get-type="pango_font_family_get_type">
-      <method name="list_faces"
-              c:identifier="pango_font_family_list_faces"
-              doc="objects, or %NULL. This array should be freed with g_free()
-when it is no longer needed.
-Lists the different font faces that make up @family. The faces
-in a family share a common design, but differ in slant, weight,
-width and other aspects.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="faces" transfer-ownership="none">
-            <type name="FontFace" c:type="PangoFontFace***"/>
-          </parameter>
-          <parameter name="n_faces" direction="out" transfer-ownership="full">
-            <type name="int" c:type="int*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_name"
-              c:identifier="pango_font_family_get_name"
-              doc="Gets the name of the family. The name is unique among all
-fonts for the font backend and can be used in a #PangoFontDescription
-to specify that a face from this family is desired.
-by the family object and must not be modified or freed.">
-        <return-value transfer-ownership="none">
-          <type name="utf8" c:type="char*"/>
-        </return-value>
-      </method>
-      <method name="is_monospace"
-              c:identifier="pango_font_family_is_monospace"
-              doc="A monospace font is a font designed for text display where the the
-characters form a regular grid. For Western languages this would
-mean that the advance width of all characters are the same, but
-this categorization also includes Asian fonts which include
-g_unichar_iswide() returns a result that indicates whether a
-character is typically double-width in a monospace font.
-The best way to find out the grid-cell size is to call
-pango_font_metrics_get_approximate_digit_width(), since the results
-of pango_font_metrics_get_approximate_char_width() may be affected
-by double-width characters."
-              version="1.4">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </method>
-    </class>
-    <class name="FontMap"
-           c:type="PangoFontMap"
-           parent="GObject.Object"
-           abstract="1"
-           glib:type-name="PangoFontMap"
-           glib:get-type="pango_font_map_get_type">
-      <method name="create_context"
-              c:identifier="pango_font_map_create_context"
-              doc="Creates a #PangoContext connected to @fontmap.  This is equivalent
-to pango_context_new() followed by pango_context_set_font_map().
-If you are using Pango as part of a higher-level system,
-that system may have it&apos;s own way of create a #PangoContext.
-For instance, the GTK+ toolkit has, among others,
-gdk_pango_context_get_for_screen(), and
-gtk_widget_get_pango_context().  Use those instead.
-be freed with g_object_unref()."
-              version="1.22">
-        <return-value transfer-ownership="full">
-          <type name="Context" c:type="PangoContext*"/>
-        </return-value>
-      </method>
-      <method name="load_font"
-              c:identifier="pango_font_map_load_font"
-              doc="Load the font in the fontmap that is the closest match for @desc.">
-        <return-value transfer-ownership="full">
-          <type name="Font" c:type="PangoFont*"/>
-        </return-value>
-        <parameters>
-          <parameter name="context" transfer-ownership="none">
-            <type name="Context" c:type="PangoContext*"/>
-          </parameter>
-          <parameter name="desc" transfer-ownership="none">
-            <type name="FontDescription" c:type="PangoFontDescription*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="load_fontset"
-              c:identifier="pango_font_map_load_fontset"
-              doc="Load a set of fonts in the fontmap that can be used to render
-a font matching @desc.">
-        <return-value transfer-ownership="full">
-          <type name="Fontset" c:type="PangoFontset*"/>
-        </return-value>
-        <parameters>
-          <parameter name="context" transfer-ownership="none">
-            <type name="Context" c:type="PangoContext*"/>
-          </parameter>
-          <parameter name="desc" transfer-ownership="none">
-            <type name="FontDescription" c:type="PangoFontDescription*"/>
-          </parameter>
-          <parameter name="language" transfer-ownership="none">
-            <type name="Language" c:type="PangoLanguage*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="list_families"
-              c:identifier="pango_font_map_list_families"
-              doc="This array should be freed with g_free().
-List all families for a fontmap.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="families" transfer-ownership="none">
-            <type name="FontFamily" c:type="PangoFontFamily***"/>
-          </parameter>
-          <parameter name="n_families"
-                     direction="out"
-                     transfer-ownership="full">
-            <type name="int" c:type="int*"/>
-          </parameter>
-        </parameters>
-      </method>
-    </class>
-    <bitfield name="FontMask"
-              glib:type-name="PangoFontMask"
-              glib:get-type="pango_font_mask_get_type"
-              c:type="PangoFontMask">
-      <member name="family"
-              value="1"
-              c:identifier="PANGO_FONT_MASK_FAMILY"
-              glib:nick="family"/>
-      <member name="style"
-              value="2"
-              c:identifier="PANGO_FONT_MASK_STYLE"
-              glib:nick="style"/>
-      <member name="variant"
-              value="4"
-              c:identifier="PANGO_FONT_MASK_VARIANT"
-              glib:nick="variant"/>
-      <member name="weight"
-              value="8"
-              c:identifier="PANGO_FONT_MASK_WEIGHT"
-              glib:nick="weight"/>
-      <member name="stretch"
-              value="16"
-              c:identifier="PANGO_FONT_MASK_STRETCH"
-              glib:nick="stretch"/>
-      <member name="size"
-              value="32"
-              c:identifier="PANGO_FONT_MASK_SIZE"
-              glib:nick="size"/>
-      <member name="gravity"
-              value="64"
-              c:identifier="PANGO_FONT_MASK_GRAVITY"
-              glib:nick="gravity"/>
-    </bitfield>
-    <record name="FontMetrics"
-            c:type="PangoFontMetrics"
-            glib:type-name="PangoFontMetrics"
-            glib:get-type="pango_font_metrics_get_type">
-      <method name="ref"
-              c:identifier="pango_font_metrics_ref"
-              doc="Increase the reference count of a font metrics structure by one.">
-        <return-value transfer-ownership="full">
-          <type name="FontMetrics" c:type="PangoFontMetrics*"/>
-        </return-value>
-      </method>
-      <method name="unref"
-              c:identifier="pango_font_metrics_unref"
-              doc="Decrease the reference count of a font metrics structure by one. If
-the result is zero, frees the structure and any associated
-memory.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="get_ascent"
-              c:identifier="pango_font_metrics_get_ascent"
-              doc="Gets the ascent from a font metrics structure. The ascent is
-the distance from the baseline to the logical top of a line
-of text. (The logical top may be above or below the top of the
-actual drawn ink. It is necessary to lay out the text to figure
-where the ink will be.)">
-        <return-value transfer-ownership="none">
-          <type name="int" c:type="int"/>
-        </return-value>
-      </method>
-      <method name="get_descent"
-              c:identifier="pango_font_metrics_get_descent"
-              doc="Gets the descent from a font metrics structure. The descent is
-the distance from the baseline to the logical bottom of a line
-of text. (The logical bottom may be above or below the bottom of the
-actual drawn ink. It is necessary to lay out the text to figure
-where the ink will be.)">
-        <return-value transfer-ownership="none">
-          <type name="int" c:type="int"/>
-        </return-value>
-      </method>
-      <method name="get_approximate_char_width"
-              c:identifier="pango_font_metrics_get_approximate_char_width"
-              doc="Gets the approximate character width for a font metrics structure.
-This is merely a representative value useful, for example, for
-determining the initial size for a window. Actual characters in
-text will be wider and narrower than this.">
-        <return-value transfer-ownership="none">
-          <type name="int" c:type="int"/>
-        </return-value>
-      </method>
-      <method name="get_approximate_digit_width"
-              c:identifier="pango_font_metrics_get_approximate_digit_width"
-              doc="Gets the approximate digit width for a font metrics structure.
-This is merely a representative value useful, for example, for
-determining the initial size for a window. Actual digits in
-text can be wider or narrower than this, though this value
-is generally somewhat more accurate than the result of
-pango_font_metrics_get_approximate_char_width() for digits.">
-        <return-value transfer-ownership="none">
-          <type name="int" c:type="int"/>
-        </return-value>
-      </method>
-      <method name="get_underline_position"
-              c:identifier="pango_font_metrics_get_underline_position"
-              doc="Gets the suggested position to draw the underline.
-The value returned is the distance &lt;emphasis&gt;above&lt;/emphasis&gt; the
-baseline of the top of the underline. Since most fonts have
-underline positions beneath the baseline, this value is typically
-negative."
-              version="1.6">
-        <return-value transfer-ownership="none">
-          <type name="int" c:type="int"/>
-        </return-value>
-      </method>
-      <method name="get_underline_thickness"
-              c:identifier="pango_font_metrics_get_underline_thickness"
-              doc="Gets the suggested thickness to draw for the underline."
-              version="1.6">
-        <return-value transfer-ownership="none">
-          <type name="int" c:type="int"/>
-        </return-value>
-      </method>
-      <method name="get_strikethrough_position"
-              c:identifier="pango_font_metrics_get_strikethrough_position"
-              doc="Gets the suggested position to draw the strikethrough.
-The value returned is the distance &lt;emphasis&gt;above&lt;/emphasis&gt; the
-baseline of the top of the strikethrough."
-              version="1.6">
-        <return-value transfer-ownership="none">
-          <type name="int" c:type="int"/>
-        </return-value>
-      </method>
-      <method name="get_strikethrough_thickness"
-              c:identifier="pango_font_metrics_get_strikethrough_thickness"
-              doc="Gets the suggested thickness to draw for the strikethrough."
-              version="1.6">
-        <return-value transfer-ownership="none">
-          <type name="int" c:type="int"/>
-        </return-value>
-      </method>
-    </record>
-    <class name="Fontset"
-           c:type="PangoFontset"
-           parent="GObject.Object"
-           abstract="1"
-           glib:type-name="PangoFontset"
-           glib:get-type="pango_fontset_get_type">
-      <method name="get_font"
-              c:identifier="pango_fontset_get_font"
-              doc="Returns the font in the fontset that contains the best glyph for the
-Unicode character @wc.
-with the font.">
-        <return-value transfer-ownership="full">
-          <type name="Font" c:type="PangoFont*"/>
-        </return-value>
-        <parameters>
-          <parameter name="wc" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_metrics"
-              c:identifier="pango_fontset_get_metrics"
-              doc="Get overall metric information for the fonts in the fontset.
-when finished using the object.">
-        <return-value transfer-ownership="full">
-          <type name="FontMetrics" c:type="PangoFontMetrics*"/>
-        </return-value>
-      </method>
-      <method name="foreach"
-              c:identifier="pango_fontset_foreach"
-              doc="Iterates through all the fonts in a fontset, calling @func for
-each one. If @func returns %TRUE, that stops the iteration."
-              version="1.4">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="func"
-                     transfer-ownership="none"
-                     scope="call"
-                     closure="2">
-            <type name="FontsetForeachFunc" c:type="PangoFontsetForeachFunc"/>
-          </parameter>
-          <parameter name="data" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </method>
-    </class>
-    <callback name="FontsetForeachFunc" c:type="PangoFontsetForeachFunc">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="fontset" transfer-ownership="none">
-          <type name="Fontset" c:type="PangoFontset*"/>
-        </parameter>
-        <parameter name="font" transfer-ownership="none">
-          <type name="Font" c:type="PangoFont*"/>
-        </parameter>
-        <parameter name="data" transfer-ownership="none">
-          <type name="any" c:type="gpointer"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <record name="GlyphGeometry" c:type="PangoGlyphGeometry">
-      <field name="width" writable="1">
-        <type name="GlyphUnit" c:type="PangoGlyphUnit"/>
-      </field>
-      <field name="x_offset" writable="1">
-        <type name="GlyphUnit" c:type="PangoGlyphUnit"/>
-      </field>
-      <field name="y_offset" writable="1">
-        <type name="GlyphUnit" c:type="PangoGlyphUnit"/>
-      </field>
-    </record>
-    <record name="GlyphInfo" c:type="PangoGlyphInfo">
-      <field name="glyph" writable="1">
-        <type name="Glyph" c:type="PangoGlyph"/>
-      </field>
-      <field name="geometry" writable="1">
-        <type name="GlyphGeometry" c:type="PangoGlyphGeometry"/>
-      </field>
-      <field name="attr" writable="1">
-        <type name="GlyphVisAttr" c:type="PangoGlyphVisAttr"/>
-      </field>
-    </record>
-    <record name="GlyphItem"
-            c:type="PangoGlyphItem"
-            glib:type-name="PangoGlyphItem"
-            glib:get-type="pango_glyph_item_get_type">
-      <field name="item" writable="1">
-        <type name="Item" c:type="PangoItem*"/>
-      </field>
-      <field name="glyphs" writable="1">
-        <type name="GlyphString" c:type="PangoGlyphString*"/>
-      </field>
-      <method name="split"
-              c:identifier="pango_glyph_item_split"
-              doc="Modifies @orig to cover only the text after @split_index, and
-returns a new item that covers the text before @split_index that
-used to be in @orig. You can think of @split_index as the length of
-the returned item. @split_index may not be 0, and it may not be
-greater than or equal to the length of @orig (that is, there must
-be at least one byte assigned to each item, you can&apos;t create a
-zero-length item).
-This function is similar in function to pango_item_split() (and uses
-it internally.)
-with pango_glyph_item_free()."
-              version="1.2">
-        <return-value transfer-ownership="full">
-          <type name="GlyphItem" c:type="PangoGlyphItem*"/>
-        </return-value>
-        <parameters>
-          <parameter name="text" transfer-ownership="none">
-            <type name="utf8" c:type="char*"/>
-          </parameter>
-          <parameter name="split_index" transfer-ownership="none">
-            <type name="int" c:type="int"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="copy"
-              c:identifier="pango_glyph_item_copy"
-              doc="Make a deep copy of an existing #PangoGlyphItem structure.
-be freed with pango_glyph_item_free(), or %NULL
-if @orig was %NULL."
-              version="1.20">
-        <return-value transfer-ownership="full">
-          <type name="GlyphItem" c:type="PangoGlyphItem*"/>
-        </return-value>
-      </method>
-      <method name="free"
-              c:identifier="pango_glyph_item_free"
-              doc="Frees a #PangoGlyphItem and resources to which it points."
-              version="1.6">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="apply_attrs"
-              c:identifier="pango_glyph_item_apply_attrs"
-              doc="Splits a shaped item (PangoGlyphItem) into multiple items based
-on an attribute list. The idea is that if you have attributes
-that don&apos;t affect shaping, such as color or underline, to avoid
-affecting shaping, you filter them out (pango_attr_list_filter()),
-apply the shaping process and then reapply them to the result using
-this function.
-All attributes that start or end inside a cluster are applied
-to that cluster; for instance, if half of a cluster is underlined
-and the other-half strikethrough, then the cluster will end
-up with both underline and strikethrough attributes. In these
-cases, it may happen that item-&gt;extra_attrs for some of the
-result items can have multiple attributes of the same type.
-This function takes ownership of @glyph_item; it will be reused
-as one of the elements in the list.
-the list using g_slist_free()."
-              version="1.2">
-        <return-value transfer-ownership="full">
-          <type name="GLib.SList" c:type="GSList*"/>
-        </return-value>
-        <parameters>
-          <parameter name="text" transfer-ownership="none">
-            <type name="utf8" c:type="char*"/>
-          </parameter>
-          <parameter name="list" transfer-ownership="none">
-            <type name="AttrList" c:type="PangoAttrList*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="letter_space"
-              c:identifier="pango_glyph_item_letter_space"
-              doc="(glyph_item-&gt;item-&gt;offset is an offset from the
-start of @text)
-first logical attribute refers to the position
-before the first character in the item)
-in Pango units. May be negative, though too large
-negative values will give ugly results.
-Adds spacing between the graphemes of @glyph_item to
-give the effect of typographic letter spacing."
-              version="1.6">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="text" transfer-ownership="none">
-            <type name="utf8" c:type="char*"/>
-          </parameter>
-          <parameter name="log_attrs" transfer-ownership="none">
-            <type name="LogAttr" c:type="PangoLogAttr*"/>
-          </parameter>
-          <parameter name="letter_spacing" transfer-ownership="none">
-            <type name="int" c:type="int"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_logical_widths"
-              c:identifier="pango_glyph_item_get_logical_widths"
-              doc="(glyph_item-&gt;item-&gt;offset is an offset from the
-start of @text)
-glyph_item (equal to glyph_item-&gt;item-&gt;num_chars)
-to be filled in with the resulting character widths.
-Given a #PangoGlyphItem and the corresponding
-text, determine the screen width corresponding to each character. When
-multiple characters compose a single cluster, the width of the entire
-cluster is divided equally among the characters.
-See also pango_glyph_string_get_logical_widths()."
-              version="1.26">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="text" transfer-ownership="none">
-            <type name="utf8" c:type="char*"/>
-          </parameter>
-          <parameter name="logical_widths"
-                     direction="out"
-                     transfer-ownership="full">
-            <type name="int" c:type="int*"/>
-          </parameter>
-        </parameters>
-      </method>
-    </record>
-    <record name="GlyphItemIter"
-            c:type="PangoGlyphItemIter"
-            glib:type-name="PangoGlyphItemIter"
-            glib:get-type="pango_glyph_item_iter_get_type">
-      <field name="glyph_item" writable="1">
-        <type name="GlyphItem" c:type="PangoGlyphItem*"/>
-      </field>
-      <field name="text" writable="1">
-        <type name="utf8" c:type="gchar*"/>
-      </field>
-      <field name="start_glyph" writable="1">
-        <type name="int" c:type="int"/>
-      </field>
-      <field name="start_index" writable="1">
-        <type name="int" c:type="int"/>
-      </field>
-      <field name="start_char" writable="1">
-        <type name="int" c:type="int"/>
-      </field>
-      <field name="end_glyph" writable="1">
-        <type name="int" c:type="int"/>
-      </field>
-      <field name="end_index" writable="1">
-        <type name="int" c:type="int"/>
-      </field>
-      <field name="end_char" writable="1">
-        <type name="int" c:type="int"/>
-      </field>
-      <method name="copy"
-              c:identifier="pango_glyph_item_iter_copy"
-              doc="Make a shallow copy of an existing #PangoGlyphItemIter structure.
-be freed with pango_glyph_item_iter_free(), or %NULL
-if @orig was %NULL."
-              version="1.22">
-        <return-value transfer-ownership="full">
-          <type name="GlyphItemIter" c:type="PangoGlyphItemIter*"/>
-        </return-value>
-      </method>
-      <method name="free"
-              c:identifier="pango_glyph_item_iter_free"
-              doc="Frees a #PangoGlyphItemIter created by pango_glyph_item_iter_copy()."
-              version="1.22">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="init_start"
-              c:identifier="pango_glyph_item_iter_init_start"
-              doc="Initializes a #PangoGlyphItemIter structure to point to the
-first cluster in a glyph item.
-See #PangoGlyphItemIter for details of cluster orders."
-              version="1.22">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="glyph_item" transfer-ownership="none">
-            <type name="GlyphItem" c:type="PangoGlyphItem*"/>
-          </parameter>
-          <parameter name="text" transfer-ownership="none">
-            <type name="utf8" c:type="char*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="init_end"
-              c:identifier="pango_glyph_item_iter_init_end"
-              doc="Initializes a #PangoGlyphItemIter structure to point to the
-last cluster in a glyph item.
-See #PangoGlyphItemIter for details of cluster orders."
-              version="1.22">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="glyph_item" transfer-ownership="none">
-            <type name="GlyphItem" c:type="PangoGlyphItem*"/>
-          </parameter>
-          <parameter name="text" transfer-ownership="none">
-            <type name="utf8" c:type="char*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="next_cluster"
-              c:identifier="pango_glyph_item_iter_next_cluster"
-              doc="Advances the iterator to the next cluster in the glyph item.
-See #PangoGlyphItemIter for details of cluster orders.
-last cluster."
-              version="1.22">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </method>
-      <method name="prev_cluster"
-              c:identifier="pango_glyph_item_iter_prev_cluster"
-              doc="Moves the iterator to the preceding cluster in the glyph item.
-See #PangoGlyphItemIter for details of cluster orders.
-first cluster."
-              version="1.22">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </method>
-    </record>
-    <record name="GlyphString"
-            c:type="PangoGlyphString"
-            glib:type-name="PangoGlyphString"
-            glib:get-type="pango_glyph_string_get_type">
-      <field name="num_glyphs" writable="1">
-        <type name="int" c:type="gint"/>
-      </field>
-      <field name="glyphs" writable="1">
-        <type name="GlyphInfo" c:type="PangoGlyphInfo*"/>
-      </field>
-      <field name="log_clusters" writable="1">
-        <type name="any" c:type="gint*"/>
-      </field>
-      <field name="space" writable="1">
-        <type name="int" c:type="gint"/>
-      </field>
-      <constructor name="new"
-                   c:identifier="pango_glyph_string_new"
-                   doc="Create a new #PangoGlyphString.
-should be freed with pango_glyph_string_free().">
-        <return-value transfer-ownership="full">
-          <type name="GlyphString" c:type="PangoGlyphString*"/>
-        </return-value>
-      </constructor>
-      <method name="set_size"
-              c:identifier="pango_glyph_string_set_size"
-              doc="Resize a glyph string to the given length.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="new_len" transfer-ownership="none">
-            <type name="int" c:type="gint"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="copy"
-              c:identifier="pango_glyph_string_copy"
-              doc="Copy a glyph string and associated storage.
-should be freed with pango_glyph_string_free(),
-or %NULL if @string was %NULL.">
-        <return-value transfer-ownership="full">
-          <type name="GlyphString" c:type="PangoGlyphString*"/>
-        </return-value>
-      </method>
-      <method name="free"
-              c:identifier="pango_glyph_string_free"
-              doc="Free a glyph string and associated storage.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="extents"
-              c:identifier="pango_glyph_string_extents"
-              doc="or %NULL to indicate that the result is not needed.
-or %NULL to indicate that the result is not needed.
-Compute the logical and ink extents of a glyph string. See the documentation
-for pango_font_get_glyph_extents() for details about the interpretation
-of the rectangles.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="font" transfer-ownership="none">
-            <type name="Font" c:type="PangoFont*"/>
-          </parameter>
-          <parameter name="ink_rect" transfer-ownership="none">
-            <type name="Rectangle" c:type="PangoRectangle*"/>
-          </parameter>
-          <parameter name="logical_rect" transfer-ownership="none">
-            <type name="Rectangle" c:type="PangoRectangle*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_width"
-              c:identifier="pango_glyph_string_get_width"
-              doc="Computes the logical width of the glyph string as can also be computed
-using pango_glyph_string_extents().  However, since this only computes the
-width, it&apos;s much faster.  This is in fact only a convenience function that
-computes the sum of geometry.width for each glyph in the @glyphs."
-              version="1.14">
-        <return-value transfer-ownership="none">
-          <type name="int" c:type="int"/>
-        </return-value>
-      </method>
-      <method name="extents_range"
-              c:identifier="pango_glyph_string_extents_range"
-              doc="dices such that start &lt;= index &lt; end)
-or %NULL to indicate that the result is not needed.
-or %NULL to indicate that the result is not needed.
-Computes the extents of a sub-portion of a glyph string. The extents are
-relative to the start of the glyph string range (the origin of their
-coordinate system is at the start of the range, not at the start of the entire
-glyph string).">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="start" transfer-ownership="none">
-            <type name="int" c:type="int"/>
-          </parameter>
-          <parameter name="end" transfer-ownership="none">
-            <type name="int" c:type="int"/>
-          </parameter>
-          <parameter name="font" transfer-ownership="none">
-            <type name="Font" c:type="PangoFont*"/>
-          </parameter>
-          <parameter name="ink_rect" transfer-ownership="none">
-            <type name="Rectangle" c:type="PangoRectangle*"/>
-          </parameter>
-          <parameter name="logical_rect" transfer-ownership="none">
-            <type name="Rectangle" c:type="PangoRectangle*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_logical_widths"
-              c:identifier="pango_glyph_string_get_logical_widths"
-              doc="text (equal to g_utf8_strlen (text, length) unless
-text has NUL bytes)
-to be filled in with the resulting character widths.
-Given a #PangoGlyphString resulting from pango_shape() and the corresponding
-text, determine the screen width corresponding to each character. When
-multiple characters compose a single cluster, the width of the entire
-cluster is divided equally among the characters.
-See also pango_glyph_item_get_logical_widths().">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="text" transfer-ownership="none">
-            <type name="utf8" c:type="char*"/>
-          </parameter>
-          <parameter name="length" transfer-ownership="none">
-            <type name="int" c:type="int"/>
-          </parameter>
-          <parameter name="embedding_level" transfer-ownership="none">
-            <type name="int" c:type="int"/>
-          </parameter>
-          <parameter name="logical_widths"
-                     direction="out"
-                     transfer-ownership="full">
-            <type name="int" c:type="int*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="index_to_x"
-              c:identifier="pango_glyph_string_index_to_x"
-              doc="or end (%TRUE) of the character.
-Converts from character position to x position. (X position
-is measured from the left edge of the run). Character positions
-are computed by dividing up each cluster into equal portions.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="text" transfer-ownership="full">
-            <type name="utf8" c:type="char*"/>
-          </parameter>
-          <parameter name="length" transfer-ownership="none" doc="in @text.">
-            <type name="int" c:type="int"/>
-          </parameter>
-          <parameter name="analysis" transfer-ownership="none">
-            <type name="Analysis" c:type="PangoAnalysis*"/>
-          </parameter>
-          <parameter name="index_" transfer-ownership="none">
-            <type name="int" c:type="int"/>
-          </parameter>
-          <parameter name="trailing" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-          <parameter name="x_pos" direction="out" transfer-ownership="full">
-            <type name="int" c:type="int*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="x_to_index"
-              c:identifier="pango_glyph_string_x_to_index"
-              doc="whether the user clicked on the leading or trailing
-edge of the character.
-Convert from x offset to character position. Character positions
-are computed by dividing up each cluster into equal portions.
-In scripts where positioning within a cluster is not allowed
-(such as Thai), the returned value may not be a valid cursor
-position; the caller must combine the result with the logical
-attributes for the text to compute the valid cursor position.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="text" transfer-ownership="full">
-            <type name="utf8" c:type="char*"/>
-          </parameter>
-          <parameter name="length" transfer-ownership="none" doc="in text.">
-            <type name="int" c:type="int"/>
-          </parameter>
-          <parameter name="analysis" transfer-ownership="none">
-            <type name="Analysis" c:type="PangoAnalysis*"/>
-          </parameter>
-          <parameter name="x_pos" transfer-ownership="none">
-            <type name="int" c:type="int"/>
-          </parameter>
-          <parameter name="index_" direction="out" transfer-ownership="full">
-            <type name="int" c:type="int*"/>
-          </parameter>
-          <parameter name="trailing" direction="out" transfer-ownership="full">
-            <type name="int" c:type="int*"/>
-          </parameter>
-        </parameters>
-      </method>
-    </record>
-    <record name="GlyphVisAttr" c:type="PangoGlyphVisAttr">
-      <field name="is_cluster_start" writable="1" bits="1">
-        <type name="uint" c:type="guint"/>
-      </field>
-    </record>
-    <enumeration name="Gravity"
-                 doc="The #PangoGravity type represents the orientation of glyphs in a segment
-of text.  This is useful when rendering vertical text layouts.  In
-those situations, the layout is rotated using a non-identity PangoMatrix,
-and then glyph orientation is controlled using #PangoGravity.
-Not every value in this enumeration makes sense for every usage of
-#PangoGravity; for example, %PANGO_GRAVITY_AUTO only can be passed to
-pango_context_set_base_gravity() and can only be returned by
-pango_context_get_base_gravity()."
-                 version="1.16"
-                 glib:type-name="PangoGravity"
-                 glib:get-type="pango_gravity_get_type"
-                 c:type="PangoGravity">
-      <member name="south"
-              value="0"
-              c:identifier="PANGO_GRAVITY_SOUTH"
-              glib:nick="south"/>
-      <member name="east"
-              value="1"
-              c:identifier="PANGO_GRAVITY_EAST"
-              glib:nick="east"/>
-      <member name="north"
-              value="2"
-              c:identifier="PANGO_GRAVITY_NORTH"
-              glib:nick="north"/>
-      <member name="west"
-              value="3"
-              c:identifier="PANGO_GRAVITY_WEST"
-              glib:nick="west"/>
-      <member name="auto"
-              value="4"
-              c:identifier="PANGO_GRAVITY_AUTO"
-              glib:nick="auto"/>
-    </enumeration>
-    <enumeration name="GravityHint"
-                 doc="on the base gravity and the script.  This is the default.
-the script.
-Latin in East gravity), choose per-script gravity such that every script
-respects the line progression.  This means, Latin and Arabic will take
-opposite gravities and both flow top-to-bottom for example.
-The #PangoGravityHint defines how horizontal scripts should behave in a
-vertical context.  That is, English excerpt in a vertical paragraph for
-example.
-See #PangoGravity."
-                 version="1.16"
-                 glib:type-name="PangoGravityHint"
-                 glib:get-type="pango_gravity_hint_get_type"
-                 c:type="PangoGravityHint">
-      <member name="natural"
-              value="0"
-              c:identifier="PANGO_GRAVITY_HINT_NATURAL"
-              glib:nick="natural"/>
-      <member name="strong"
-              value="1"
-              c:identifier="PANGO_GRAVITY_HINT_STRONG"
-              glib:nick="strong"/>
-      <member name="line"
-              value="2"
-              c:identifier="PANGO_GRAVITY_HINT_LINE"
-              glib:nick="line"/>
-    </enumeration>
-    <record name="Item"
-            c:type="PangoItem"
-            glib:type-name="PangoItem"
-            glib:get-type="pango_item_get_type">
-      <field name="offset" writable="1">
-        <type name="int" c:type="gint"/>
-      </field>
-      <field name="length" writable="1">
-        <type name="int" c:type="gint"/>
-      </field>
-      <field name="num_chars" writable="1">
-        <type name="int" c:type="gint"/>
-      </field>
-      <field name="analysis" writable="1">
-        <type name="Analysis" c:type="PangoAnalysis"/>
-      </field>
-      <constructor name="new"
-                   c:identifier="pango_item_new"
-                   doc="Creates a new #PangoItem structure initialized to default values.
-be freed with pango_item_free().">
-        <return-value transfer-ownership="full">
-          <type name="Item" c:type="PangoItem*"/>
-        </return-value>
-      </constructor>
-      <method name="copy"
-              c:identifier="pango_item_copy"
-              doc="Copy an existing #PangoItem structure.
-be freed with pango_item_free(), or %NULL if">
-        <return-value transfer-ownership="full">
-          <type name="Item" c:type="PangoItem*"/>
-        </return-value>
-      </method>
-      <method name="free"
-              c:identifier="pango_item_free"
-              doc="Free a #PangoItem and all associated memory.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="split"
-              c:identifier="pango_item_split"
-              doc="Modifies @orig to cover only the text after @split_index, and
-returns a new item that covers the text before @split_index that
-used to be in @orig. You can think of @split_index as the length of
-the returned item. @split_index may not be 0, and it may not be
-greater than or equal to the length of @orig (that is, there must
-be at least one byte assigned to each item, you can&apos;t create a
-zero-length item). @split_offset is the length of the first item in
-chars, and must be provided because the text used to generate the
-item isn&apos;t available, so pango_item_split() can&apos;t count the char
-length of the split items itself.
-should be freed with pango_item_free().">
-        <return-value transfer-ownership="full">
-          <type name="Item" c:type="PangoItem*"/>
-        </return-value>
-        <parameters>
-          <parameter name="split_index" transfer-ownership="none">
-            <type name="int" c:type="int"/>
-          </parameter>
-          <parameter name="split_offset" transfer-ownership="none">
-            <type name="int" c:type="int"/>
-          </parameter>
-        </parameters>
-      </method>
-    </record>
-    <record name="Language"
-            c:type="PangoLanguage"
-            glib:type-name="PangoLanguage"
-            glib:get-type="pango_language_get_type">
-      <method name="to_string"
-              c:identifier="pango_language_to_string"
-              doc="Gets the RFC-3066 format string representing the given language tag.
-Pango and should not be freed.">
-        <return-value transfer-ownership="none">
-          <type name="utf8" c:type="char*"/>
-        </return-value>
-      </method>
-      <method name="get_sample_string"
-              c:identifier="pango_language_get_sample_string"
-              doc="Get a string that is representative of the characters needed to
-render a particular language.
-The sample text may be a pangram, but is not necessarily.  It is chosen to
-be demonstrative of normal text in the language, as well as exposing font
-feature requirements unique to the language.  It is suitable for use
-as sample text in a font selection dialog.
-If @language is %NULL, the default language as found by
-pango_language_get_default() is used.
-If Pango does not have a sample string for @language, the classic
-&quot;The quick brown fox...&quot; is returned.  This can be detected by
-comparing the returned pointer value to that returned for (non-existent)
-language code &quot;xx&quot;.  That is, compare to:
-&lt;informalexample&gt;&lt;programlisting&gt;
-pango_language_get_sample_string (pango_language_from_string (&quot;xx&quot;))
-&lt;/programlisting&gt;&lt;/informalexample&gt;
-and should not be freed.">
-        <return-value transfer-ownership="none">
-          <type name="utf8" c:type="char*"/>
-        </return-value>
-      </method>
-      <method name="matches"
-              c:identifier="pango_language_matches"
-              doc="%NULL is allowed and matches nothing but &apos;*&apos;
-&apos;,&apos;, or space characters.
-Each element must either be &apos;*&apos;, or a RFC 3066 language range
-canonicalized as by pango_language_from_string()
-Checks if a language tag matches one of the elements in a list of
-language ranges. A language tag is considered to match a range
-in the list if the range is &apos;*&apos;, the range is exactly the tag,
-or the range is a prefix of the tag, and the character after it
-in the tag is &apos;-&apos;.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="range_list" transfer-ownership="none">
-            <type name="utf8" c:type="char*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="includes_script"
-              c:identifier="pango_language_includes_script"
-              doc="Determines if @script is one of the scripts used to
-write @language. The returned value is conservative;
-if nothing is known about the language tag @language,
-%TRUE will be returned, since, as far as Pango knows,
-This routine is used in Pango&apos;s itemization process when
-determining if a supplied language tag is relevant to
-a particular section of text. It probably is not useful for
-applications in most circumstances.
-This function uses pango_language_get_scripts() internally.
-to write @language or if nothing is known about @language
-(including the case that @language is %NULL),
-%FALSE otherwise."
-              version="1.4">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="script" transfer-ownership="none">
-            <type name="Script" c:type="PangoScript"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_scripts"
-              c:identifier="pango_language_get_scripts"
-              doc="Determines the scripts used to to write @language.
-If nothing is known about the language tag @language,
-or if @language is %NULL, then %NULL is returned.
-The list of scripts returned starts with the script that the
-language uses most and continues to the one it uses least.
-The value @num_script points at will be set to the number
-of scripts in the returned array (or zero if %NULL is returned).
-Most languages use only one script for writing, but there are
-some that use two (Latin and Cyrillic for example), and a few
-use three (Japanese for example).  Applications should not make
-any assumptions on the maximum number of scripts returned
-though, except that it is positive if the return value is not
-%NULL, and it is a small number.
-The pango_language_includes_script() function uses this function
-internally.
-number of entries in the array stored in @num_scripts, or
-%NULL if Pango does not have any information about this
-particular language tag (also the case if @language is %NULL).
-The returned array is owned by Pango and should not be modified
-or freed."
-              version="1.22">
-        <return-value transfer-ownership="none">
-          <type name="Script" c:type="PangoScript*"/>
-        </return-value>
-        <parameters>
-          <parameter name="num_scripts"
-                     direction="out"
-                     transfer-ownership="full">
-            <type name="int" c:type="int*"/>
-          </parameter>
-        </parameters>
-      </method>
-    </record>
-    <class name="Layout"
-           c:type="PangoLayout"
-           parent="GObject.Object"
-           glib:type-name="PangoLayout"
-           glib:get-type="pango_layout_get_type"
-           glib:type-struct="LayoutClass">
-      <constructor name="new"
-                   c:identifier="pango_layout_new"
-                   doc="Create a new #PangoLayout object with attributes initialized to
-default values for a particular #PangoContext.
-count of one, which should be freed with
-g_object_unref().">
-        <return-value transfer-ownership="full">
-          <type name="Layout" c:type="PangoLayout*"/>
-        </return-value>
-        <parameters>
-          <parameter name="context" transfer-ownership="none">
-            <type name="Context" c:type="PangoContext*"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <method name="copy"
-              c:identifier="pango_layout_copy"
-              doc="Does a deep copy-by-value of the @src layout. The attribute list,
-tab array, and text from the original layout are all copied by
-value.
-count of one, which should be freed with
-g_object_unref().">
-        <return-value transfer-ownership="full">
-          <type name="Layout" c:type="PangoLayout*"/>
-        </return-value>
-      </method>
-      <method name="get_context"
-              c:identifier="pango_layout_get_context"
-              doc="Retrieves the #PangoContext used for this layout.
-have an additional refcount added, so if you want to keep
-a copy of this around, you must reference it yourself.">
-        <return-value transfer-ownership="full">
-          <type name="Context" c:type="PangoContext*"/>
-        </return-value>
-      </method>
-      <method name="set_attributes"
-              c:identifier="pango_layout_set_attributes"
-              doc="Sets the text attributes for a layout object.
-References @attrs, so the caller can unref its reference.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="attrs" transfer-ownership="none">
-            <type name="AttrList" c:type="PangoAttrList*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_attributes"
-              c:identifier="pango_layout_get_attributes"
-              doc="Gets the attribute list for the layout, if any.">
-        <return-value transfer-ownership="full">
-          <type name="AttrList" c:type="PangoAttrList*"/>
-        </return-value>
-      </method>
-      <method name="set_text"
-              c:identifier="pango_layout_set_text"
-              doc="the string is nul-terminated and the length should be
-calculated.  The text will also be truncated on
-encountering a nul-termination even when @length is
-positive.
-Sets the text of the layout.
-Note that if you have used
-pango_layout_set_markup() or pango_layout_set_markup_with_accel() on
-the attributes set on the layout from the markup as this function does not
-clear attributes.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="text" transfer-ownership="none">
-            <type name="utf8" c:type="char*"/>
-          </parameter>
-          <parameter name="length" transfer-ownership="none">
-            <type name="int" c:type="int"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_text"
-              c:identifier="pango_layout_get_text"
-              doc="Gets the text in the layout. The returned text should not
-be freed or modified.">
-        <return-value transfer-ownership="none">
-          <type name="utf8" c:type="char*"/>
-        </return-value>
-      </method>
-      <method name="set_markup"
-              c:identifier="pango_layout_set_markup"
-              doc="nul-terminated
-Same as pango_layout_set_markup_with_accel(), but
-the markup text isn&apos;t scanned for accelerators.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="markup" transfer-ownership="none">
-            <type name="utf8" c:type="char*"/>
-          </parameter>
-          <parameter name="length" transfer-ownership="none">
-            <type name="int" c:type="int"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_markup_with_accel"
-              c:identifier="pango_layout_set_markup_with_accel"
-              doc="(see &lt;link linkend=&quot;PangoMarkupFormat&quot;&gt;markup format&lt;/link&gt;)
-nul-terminated
-Sets the layout text and attribute list from marked-up text (see
-&lt;link linkend=&quot;PangoMarkupFormat&quot;&gt;markup format&lt;/link&gt;). Replaces
-the current text and attribute list.
-If @accel_marker is nonzero, the given character will mark the
-character following it as an accelerator. For example, @accel_marker
-might be an ampersand or underscore. All characters marked
-as an accelerator will receive a %PANGO_UNDERLINE_LOW attribute,
-and the first character so marked will be returned in @accel_char.
-Two @accel_marker characters following each other produce a single
-literal @accel_marker character.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="markup" transfer-ownership="none">
-            <type name="utf8" c:type="char*"/>
-          </parameter>
-          <parameter name="length" transfer-ownership="none">
-            <type name="int" c:type="int"/>
-          </parameter>
-          <parameter name="accel_marker" transfer-ownership="none">
-            <type name="GLib.unichar" c:type="gunichar"/>
-          </parameter>
-          <parameter name="accel_char" transfer-ownership="none">
-            <type name="GLib.unichar" c:type="gunichar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_font_description"
-              c:identifier="pango_layout_set_font_description"
-              doc="current font description
-Sets the default font description for the layout. If no font
-description is set on the layout, the font description from
-the layout&apos;s context is used.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="desc" transfer-ownership="none">
-            <type name="FontDescription" c:type="PangoFontDescription*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_font_description"
-              c:identifier="pango_layout_get_font_description"
-              doc="Gets the font description for the layout, if any.
-or %NULL if the font description from the layout&apos;s
-context is inherited. This value is owned by the layout
-and must not be modified or freed."
-              version="1.8">
-        <return-value transfer-ownership="none">
-          <type name="FontDescription" c:type="PangoFontDescription*"/>
-        </return-value>
-      </method>
-      <method name="set_width"
-              c:identifier="pango_layout_set_width"
-              doc="wrapping or ellipsization should be performed.
-Sets the width to which the lines of the #PangoLayout should wrap or">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="width" transfer-ownership="none">
-            <type name="int" c:type="int"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_width"
-              c:identifier="pango_layout_get_width"
-              doc="Gets the width to which the lines of the #PangoLayout should wrap.">
-        <return-value transfer-ownership="none">
-          <type name="int" c:type="int"/>
-        </return-value>
-      </method>
-      <method name="set_height"
-              c:identifier="pango_layout_set_height"
-              doc="or desired number of lines if negative.
-Sets the height to which the #PangoLayout should be ellipsized at.  There
-are two different behaviors, based on whether @height is positive or
-negative.
-If @height is positive, it will be the maximum height of the layout.  Only
-lines would be shown that would fit, and if there is any text omitted,
-an ellipsis added.  At least one line is included in each paragraph regardless
-of how small the height value is.  A value of zero will render exactly one
-line for the entire layout.
-If @height is negative, it will be the (negative of) maximum number of lines per
-paragraph.  That is, the total number of lines shown may well be more than
-this value if the layout contains multiple paragraphs of text.
-The default value of -1 means that first line of each paragraph is ellipsized.
-This behvaior may be changed in the future to act per layout instead of per
-paragraph.  File a bug against pango at &lt;ulink
-url=&quot;http://bugzilla.gnome.org/&quot;&gt;http://bugzilla.gnome.org/&lt;/ulink&gt; if your
-code relies on this behavior.
-Height setting only has effect if a positive width is set on
-The behavior is undefined if a height other than -1 is set and
-ellipsization mode is set to %PANGO_ELLIPSIZE_NONE, and may change in the
-future."
-              version="1.20">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="height" transfer-ownership="none">
-            <type name="int" c:type="int"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_height"
-              c:identifier="pango_layout_get_height"
-              doc="Gets the height of layout used for ellipsization.  See
-pango_layout_set_height() for details.
-number of lines if negative."
-              version="1.20">
-        <return-value transfer-ownership="none">
-          <type name="int" c:type="int"/>
-        </return-value>
-      </method>
-      <method name="set_wrap"
-              c:identifier="pango_layout_set_wrap"
-              doc="Sets the wrap mode; the wrap mode only has effect if a width
-is set on the layout with pango_layout_set_width().
-To turn off wrapping, set the width to -1.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="wrap" transfer-ownership="none">
-            <type name="WrapMode" c:type="PangoWrapMode"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_wrap"
-              c:identifier="pango_layout_get_wrap"
-              doc="Gets the wrap mode for the layout.
-Use pango_layout_is_wrapped() to query whether any paragraphs
-were actually wrapped.">
-        <return-value transfer-ownership="full">
-          <type name="WrapMode" c:type="PangoWrapMode"/>
-        </return-value>
-      </method>
-      <method name="is_wrapped"
-              c:identifier="pango_layout_is_wrapped"
-              doc="Queries whether the layout had to wrap any paragraphs.
-This returns %TRUE if a positive width is set on @layout,
-ellipsization mode of @layout is set to %PANGO_ELLIPSIZE_NONE,
-and there are paragraphs exceeding the layout width that have
-to be wrapped.
-otherwise."
-              version="1.16">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </method>
-      <method name="set_indent" c:identifier="pango_layout_set_indent">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="indent" transfer-ownership="none">
-            <type name="int" c:type="int"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_indent"
-              c:identifier="pango_layout_get_indent"
-              doc="Gets the paragraph indent width in Pango units. A negative value
-indicates a hanging indentation.">
-        <return-value transfer-ownership="none">
-          <type name="int" c:type="int"/>
-        </return-value>
-      </method>
-      <method name="set_spacing"
-              c:identifier="pango_layout_set_spacing"
-              doc="Sets the amount of spacing in Pango unit between the lines of the
-layout.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="spacing" transfer-ownership="none">
-            <type name="int" c:type="int"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_spacing"
-              c:identifier="pango_layout_get_spacing"
-              doc="Gets the amount of spacing between the lines of the layout.">
-        <return-value transfer-ownership="none">
-          <type name="int" c:type="int"/>
-        </return-value>
-      </method>
-      <method name="set_justify"
-              c:identifier="pango_layout_set_justify"
-              doc="Sets whether each complete line should be stretched to
-fill the entire width of the layout. This stretching is typically
-done by adding whitespace, but for some scripts (such as Arabic),
-the justification may be done in more complex ways, like extending
-the characters.
-Note that this setting is not implemented and so is ignored in Pango
-older than 1.18.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="justify" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_justify"
-              c:identifier="pango_layout_get_justify"
-              doc="Gets whether each complete line should be stretched to fill the entire
-width of the layout.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </method>
-      <method name="set_auto_dir"
-              c:identifier="pango_layout_set_auto_dir"
-              doc="from the layout&apos;s contents.
-Sets whether to calculate the bidirectional base direction
-for the layout according to the contents of the layout;
-when this flag is on (the default), then paragraphs in
-ayout that begin with strong right-to-left characters
-(Arabic and Hebrew principally), will have right-to-left
-layout, paragraphs with letters from other scripts will
-have left-to-right layout. Paragraphs with only neutral
-characters get their direction from the surrounding paragraphs.
-When %FALSE, the choice between left-to-right and
-right-to-left layout is done according to the base direction
-of the layout&apos;s #PangoContext. (See pango_context_set_base_dir()).
-When the auto-computed direction of a paragraph differs from the
-base direction of the context, the interpretation of
-%PANGO_ALIGN_LEFT and %PANGO_ALIGN_RIGHT are swapped."
-              version="1.4">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="auto_dir" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_auto_dir"
-              c:identifier="pango_layout_get_auto_dir"
-              doc="Gets whether to calculate the bidirectional base direction
-for the layout according to the contents of the layout.
-See pango_layout_set_auto_dir().
-is computed from the layout&apos;s contents, %FALSE otherwise."
-              version="1.4">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </method>
-      <method name="set_alignment"
-              c:identifier="pango_layout_set_alignment"
-              doc="positioned within the horizontal space available.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="alignment" transfer-ownership="none">
-            <type name="Alignment" c:type="PangoAlignment"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_alignment"
-              c:identifier="pango_layout_get_alignment"
-              doc="positioned within the horizontal space available.">
-        <return-value transfer-ownership="full">
-          <type name="Alignment" c:type="PangoAlignment"/>
-        </return-value>
-      </method>
-      <method name="set_tabs"
-              c:identifier="pango_layout_set_tabs"
-              doc="Sets the tabs to use for @layout, overriding the default tabs
-(by default, tabs are every 8 spaces). If @tabs is %NULL, the default
-tabs are reinstated. @tabs is copied into the layout; you must
-free your copy of @tabs yourself.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="tabs" transfer-ownership="none">
-            <type name="TabArray" c:type="PangoTabArray*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_tabs"
-              c:identifier="pango_layout_get_tabs"
-              doc="Gets the current #PangoTabArray used by this layout. If no
-#PangoTabArray has been set, then the default tabs are in use
-and %NULL is returned. Default tabs are every 8 spaces.
-The return value should be freed with pango_tab_array_free().">
-        <return-value transfer-ownership="full">
-          <type name="TabArray" c:type="PangoTabArray*"/>
-        </return-value>
-      </method>
-      <method name="set_single_paragraph_mode"
-              c:identifier="pango_layout_set_single_paragraph_mode"
-              doc="If @setting is %TRUE, do not treat newlines and similar characters
-as paragraph separators; instead, keep all text in a single paragraph,
-and display a glyph for paragraph separator characters. Used when
-you want to allow editing of newlines on a single text line.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="setting" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_single_paragraph_mode"
-              c:identifier="pango_layout_get_single_paragraph_mode"
-              doc="Obtains the value set by pango_layout_set_single_paragraph_mode().
-paragraph separator characters, %FALSE otherwise.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </method>
-      <method name="set_ellipsize"
-              c:identifier="pango_layout_set_ellipsize"
-              doc="Sets the type of ellipsization being performed for @layout.
-Depending on the ellipsization mode @ellipsize text is
-removed from the start, middle, or end of text so they
-fit within the width and height of layout set with
-pango_layout_set_width() and pango_layout_set_height().
-If the layout contains characters such as newlines that
-force it to be layed out in multiple paragraphs, then whether
-each paragraph is ellipsized separately or the entire layout
-is ellipsized as a whole depends on the set height of the layout.
-See pango_layout_set_height() for details."
-              version="1.6">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="ellipsize" transfer-ownership="none">
-            <type name="EllipsizeMode" c:type="PangoEllipsizeMode"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_ellipsize"
-              c:identifier="pango_layout_get_ellipsize"
-              doc="Gets the type of ellipsization being performed for @layout.
-See pango_layout_set_ellipsize()
-Use pango_layout_is_ellipsized() to query whether any paragraphs
-were actually ellipsized."
-              version="1.6">
-        <return-value transfer-ownership="full">
-          <type name="EllipsizeMode" c:type="PangoEllipsizeMode"/>
-        </return-value>
-      </method>
-      <method name="is_ellipsized"
-              c:identifier="pango_layout_is_ellipsized"
-              doc="Queries whether the layout had to ellipsize any paragraphs.
-This returns %TRUE if the ellipsization mode for @layout
-is not %PANGO_ELLIPSIZE_NONE, a positive width is set on @layout,
-and there are paragraphs exceeding that width that have to be
-ellipsized.
-otherwise."
-              version="1.16">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </method>
-      <method name="get_unknown_glyphs_count"
-              c:identifier="pango_layout_get_unknown_glyphs_count"
-              doc="Counts the number unknown glyphs in @layout.  That is, zero if
-glyphs for all characters in the layout text were found, or more
-than zero otherwise.
-This function can be used to determine if there are any fonts
-available to render all characters in a certain string, or when
-used in combination with %PANGO_ATTR_FALLBACK, to check if a
-certain font supports all the characters in the string."
-              version="1.16">
-        <return-value transfer-ownership="none">
-          <type name="int" c:type="int"/>
-        </return-value>
-      </method>
-      <method name="context_changed"
-              c:identifier="pango_layout_context_changed"
-              doc="Forces recomputation of any state in the #PangoLayout that
-might depend on the layout&apos;s context. This function should
-be called if you make changes to the context subsequent
-to creating the layout.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="get_log_attrs"
-              c:identifier="pango_layout_get_log_attrs"
-              doc="This value must be freed with g_free().
-array. (The stored value will be one more than the total number
-of characters in the layout, since there need to be attributes
-corresponding to both the position before the first character
-and the position after the last character.)
-Retrieves an array of logical attributes for each character in
-the @layout.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="attrs" transfer-ownership="none">
-            <type name="LogAttr" c:type="PangoLogAttr**"/>
-          </parameter>
-          <parameter name="n_attrs" direction="out" transfer-ownership="full">
-            <type name="int" c:type="gint*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="index_to_pos"
-              c:identifier="pango_layout_index_to_pos"
-              doc="Converts from an index within a #PangoLayout to the onscreen position
-corresponding to the grapheme at that index, which is represented
-as rectangle.  Note that &lt;literal&gt;pos-&gt;x&lt;/literal&gt; is always the leading
-edge of the grapheme and &lt;literal&gt;pos-&gt;x + pos-&gt;width&lt;/literal&gt; the trailing
-edge of the grapheme. If the directionality of the grapheme is right-to-left,
-then &lt;literal&gt;pos-&gt;width&lt;/literal&gt; will be negative.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="index_" transfer-ownership="none">
-            <type name="int" c:type="int"/>
-          </parameter>
-          <parameter name="pos" transfer-ownership="none">
-            <type name="Rectangle" c:type="PangoRectangle*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="index_to_line_x"
-              c:identifier="pango_layout_index_to_line_x"
-              doc="position of. If 0, the trailing edge of the grapheme, if &gt; 0,
-the leading of the grapheme.
-between 0 and pango_layout_get_line_count(layout) - 1)
-(%PANGO_SCALE units per device unit)
-Converts from byte @index_ within the @layout to line and X position.
-(X position is measured from the left edge of the line)">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="index_" transfer-ownership="none">
-            <type name="int" c:type="int"/>
-          </parameter>
-          <parameter name="trailing" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-          <parameter name="line" direction="out" transfer-ownership="full">
-            <type name="int" c:type="int*"/>
-          </parameter>
-          <parameter name="x_pos" direction="out" transfer-ownership="full">
-            <type name="int" c:type="int*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_cursor_pos"
-              c:identifier="pango_layout_get_cursor_pos"
-              doc="Given an index within a layout, determines the positions that of the
-strong and weak cursors if the insertion point is at that
-index. The position of each cursor is stored as a zero-width
-rectangle. The strong cursor location is the location where
-characters of the directionality equal to the base direction of the
-layout are inserted.  The weak cursor location is the location
-where characters of the directionality opposite to the base
-direction of the layout are inserted.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="index_" transfer-ownership="none">
-            <type name="int" c:type="int"/>
-          </parameter>
-          <parameter name="strong_pos" transfer-ownership="none">
-            <type name="Rectangle" c:type="PangoRectangle*"/>
-          </parameter>
-          <parameter name="weak_pos" transfer-ownership="none">
-            <type name="Rectangle" c:type="PangoRectangle*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="move_cursor_visually"
-              c:identifier="pango_layout_move_cursor_visually"
-              doc="weak cursor. The strong cursor is the cursor corresponding
-to text insertion in the base direction for the layout.
-grapheme indicated by @old_index, if &gt; 0, the cursor
-was at the leading edge.
-value indicates motion to the left.
-indicates that the cursor has been moved off the beginning
-of the layout. A value of %G_MAXINT indicates that
-the cursor has been moved off the end of the layout.
-for @new_index to get the position where the cursor should
-be displayed. This allows distinguishing the position at
-the beginning of one line from the position at the end
-of the preceding line. @new_index is always on the line
-where the cursor should be displayed.
-Computes a new cursor position from an old position and
-a count of positions to move visually. If @direction is positive,
-then the new strong cursor position will be one position
-to the right of the old cursor position. If @direction is negative,
-then the new strong cursor position will be one position
-to the left of the old cursor position.
-In the presence of bidirectional text, the correspondence
-between logical and visual order will depend on the direction
-of the current run, and there may be jumps when the cursor
-is moved off of the end of a run.
-Motion here is in cursor positions, not in characters, so a
-single call to pango_layout_move_cursor_visually() may move the
-cursor over multiple characters when multiple characters combine
-to form a single grapheme.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="strong" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-          <parameter name="old_index" transfer-ownership="none">
-            <type name="int" c:type="int"/>
-          </parameter>
-          <parameter name="old_trailing" transfer-ownership="none">
-            <type name="int" c:type="int"/>
-          </parameter>
-          <parameter name="direction" transfer-ownership="none">
-            <type name="int" c:type="int"/>
-          </parameter>
-          <parameter name="new_index"
-                     direction="out"
-                     transfer-ownership="full">
-            <type name="int" c:type="int*"/>
-          </parameter>
-          <parameter name="new_trailing"
-                     direction="out"
-                     transfer-ownership="full">
-            <type name="int" c:type="int*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="xy_to_index"
-              c:identifier="pango_layout_xy_to_index"
-              doc="from the left edge of the layout.
-from the top edge of the layout
-in the grapheme the user clicked. It will either
-be zero, or the number of characters in the
-grapheme. 0 represents the trailing edge of the grapheme.
-Converts from X and Y position within a layout to the byte
-index to the character at that logical position. If the
-Y position is not inside the layout, the closest position is chosen
-(the position will be clamped inside the layout). If the
-X position is not within the layout, then the start or the
-end of the line is chosen as  described for pango_layout_x_to_index().
-If either the X or Y positions were not inside the layout, then the
-function returns %FALSE; on an exact hit, it returns %TRUE.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="x" transfer-ownership="none">
-            <type name="int" c:type="int"/>
-          </parameter>
-          <parameter name="y" transfer-ownership="none">
-            <type name="int" c:type="int"/>
-          </parameter>
-          <parameter name="index_" direction="out" transfer-ownership="full">
-            <type name="int" c:type="int*"/>
-          </parameter>
-          <parameter name="trailing" direction="out" transfer-ownership="full">
-            <type name="int" c:type="int*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_extents"
-              c:identifier="pango_layout_get_extents"
-              doc="or %NULL to indicate that the result is not needed.
-%NULL to indicate that the result is not needed.
-Computes the logical and ink extents of @layout. Logical extents
-are usually what you want for positioning things.  Note that both extents
-may have non-zero x and y.  You may want to use those to offset where you
-render the layout.  Not doing that is a very typical bug that shows up as
-right-to-left layouts not being correctly positioned in a layout with
-a set width.
-The extents are given in layout coordinates and in Pango units; layout
-coordinates begin at the top left corner of the layout.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="ink_rect" transfer-ownership="none">
-            <type name="Rectangle" c:type="PangoRectangle*"/>
-          </parameter>
-          <parameter name="logical_rect" transfer-ownership="none">
-            <type name="Rectangle" c:type="PangoRectangle*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_pixel_extents"
-              c:identifier="pango_layout_get_pixel_extents"
-              doc="or %NULL to indicate that the result is not needed.
-layout or %NULL to indicate that the result is not needed.
-Computes the logical and ink extents of @layout in device units.
-This function just calls pango_layout_get_extents() followed by
-two pango_extents_to_pixels() calls, rounding @ink_rect and @logical_rect
-such that the rounded rectangles fully contain the unrounded one (that is,
-passes them as first argument to pango_extents_to_pixels()).">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="ink_rect" transfer-ownership="none">
-            <type name="Rectangle" c:type="PangoRectangle*"/>
-          </parameter>
-          <parameter name="logical_rect" transfer-ownership="none">
-            <type name="Rectangle" c:type="PangoRectangle*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_size"
-              c:identifier="pango_layout_get_size"
-              doc="Determines the logical width and height of a #PangoLayout
-in Pango units (device units scaled by %PANGO_SCALE). This
-is simply a convenience function around pango_layout_get_extents().">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="width" direction="out" transfer-ownership="full">
-            <type name="int" c:type="int*"/>
-          </parameter>
-          <parameter name="height" direction="out" transfer-ownership="full">
-            <type name="int" c:type="int*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_pixel_size"
-              c:identifier="pango_layout_get_pixel_size"
-              doc="Determines the logical width and height of a #PangoLayout
-in device units. (pango_layout_get_size() returns the width
-and height scaled by %PANGO_SCALE.) This
-is simply a convenience function around
-pango_layout_get_pixel_extents().">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="width" direction="out" transfer-ownership="full">
-            <type name="int" c:type="int*"/>
-          </parameter>
-          <parameter name="height" direction="out" transfer-ownership="full">
-            <type name="int" c:type="int*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_baseline"
-              c:identifier="pango_layout_get_baseline"
-              doc="Gets the Y position of baseline of the first line in @layout."
-              version="1.22">
-        <return-value transfer-ownership="none">
-          <type name="int" c:type="int"/>
-        </return-value>
-      </method>
-      <method name="get_line_count"
-              c:identifier="pango_layout_get_line_count"
-              doc="Retrieves the count of lines for the @layout.">
-        <return-value transfer-ownership="none">
-          <type name="int" c:type="int"/>
-        </return-value>
-      </method>
-      <method name="get_line"
-              c:identifier="pango_layout_get_line"
-              doc="&lt;literal&gt;pango_layout_get_line_count(layout) - 1&lt;/literal&gt;, inclusive.
-Retrieves a particular line from a #PangoLayout.
-Use the faster pango_layout_get_line_readonly() if you do not plan
-to modify the contents of the line (glyphs, glyph widths, etc.).
-index is out of range. This layout line can
-be ref&apos;ed and retained, but will become invalid
-if changes are made to the #PangoLayout.">
-        <return-value transfer-ownership="full">
-          <type name="LayoutLine" c:type="PangoLayoutLine*"/>
-        </return-value>
-        <parameters>
-          <parameter name="line" transfer-ownership="none">
-            <type name="int" c:type="int"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_line_readonly"
-              c:identifier="pango_layout_get_line_readonly"
-              doc="&lt;literal&gt;pango_layout_get_line_count(layout) - 1&lt;/literal&gt;, inclusive.
-Retrieves a particular line from a #PangoLayout.
-This is a faster alternative to pango_layout_get_line(),
-but the user is not expected
-to modify the contents of the line (glyphs, glyph widths, etc.).
-index is out of range. This layout line can
-be ref&apos;ed and retained, but will become invalid
-if changes are made to the #PangoLayout.
-No changes should be made to the line."
-              version="1.16">
-        <return-value transfer-ownership="full">
-          <type name="LayoutLine" c:type="PangoLayoutLine*"/>
-        </return-value>
-        <parameters>
-          <parameter name="line" transfer-ownership="none">
-            <type name="int" c:type="int"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_lines"
-              c:identifier="pango_layout_get_lines"
-              doc="Returns the lines of the @layout as a list.
-Use the faster pango_layout_get_lines_readonly() if you do not plan
-to modify the contents of the lines (glyphs, glyph widths, etc.).
-the lines in the layout. This points to internal data of the #PangoLayout
-and must be used with care. It will become invalid on any change to the layout&apos;s
-text or properties.">
-        <return-value transfer-ownership="none" doc="a #GSList containing">
-          <type name="GLib.SList" c:type="GSList*">
-            <type name="Pango.LayoutLine"/>
-          </type>
-        </return-value>
-      </method>
-      <method name="get_lines_readonly"
-              c:identifier="pango_layout_get_lines_readonly"
-              doc="Returns the lines of the @layout as a list.
-This is a faster alternative to pango_layout_get_lines(),
-but the user is not expected
-to modify the contents of the lines (glyphs, glyph widths, etc.).
-the lines in the layout. This points to internal data of the #PangoLayout and
-must be used with care. It will become invalid on any change to the layout&apos;s
-text or properties.  No changes should be made to the lines."
-              version="1.16">
-        <return-value transfer-ownership="none" doc="a #GSList containing">
-          <type name="GLib.SList" c:type="GSList*">
-            <type name="Pango.LayoutLine"/>
-          </type>
-        </return-value>
-      </method>
-      <method name="get_iter"
-              c:identifier="pango_layout_get_iter"
-              doc="Returns an iterator to iterate over the visual extents of the layout.
-pango_layout_iter_free().">
-        <return-value transfer-ownership="full">
-          <type name="LayoutIter" c:type="PangoLayoutIter*"/>
-        </return-value>
-      </method>
-      <field name="parent_instance">
-        <type name="GObject.Object" c:type="GObject"/>
-      </field>
-      <field name="context">
-        <type name="Context" c:type="PangoContext*"/>
-      </field>
-      <field name="attrs">
-        <type name="AttrList" c:type="PangoAttrList*"/>
-      </field>
-      <field name="font_desc">
-        <type name="FontDescription" c:type="PangoFontDescription*"/>
-      </field>
-      <field name="tabs">
-        <type name="TabArray" c:type="PangoTabArray*"/>
-      </field>
-      <field name="text">
-        <type name="utf8" c:type="gchar*"/>
-      </field>
-      <field name="copy_begin">
-        <type name="int" c:type="int"/>
-      </field>
-      <field name="length">
-        <type name="int" c:type="int"/>
-      </field>
-      <field name="n_chars">
-        <type name="int" c:type="int"/>
-      </field>
-      <field name="width">
-        <type name="int" c:type="int"/>
-      </field>
-      <field name="height">
-        <type name="int" c:type="int"/>
-      </field>
-      <field name="indent">
-        <type name="int" c:type="int"/>
-      </field>
-      <field name="spacing">
-        <type name="int" c:type="int"/>
-      </field>
-      <field name="justify" bits="1">
-        <type name="uint" c:type="guint"/>
-      </field>
-      <field name="alignment" bits="2">
-        <type name="uint" c:type="guint"/>
-      </field>
-      <field name="single_paragraph" bits="1">
-        <type name="uint" c:type="guint"/>
-      </field>
-      <field name="auto_dir" bits="1">
-        <type name="uint" c:type="guint"/>
-      </field>
-      <field name="wrap" bits="2">
-        <type name="uint" c:type="guint"/>
-      </field>
-      <field name="is_wrapped" bits="1">
-        <type name="uint" c:type="guint"/>
-      </field>
-      <field name="ellipsize" bits="2">
-        <type name="uint" c:type="guint"/>
-      </field>
-      <field name="is_ellipsized" bits="1">
-        <type name="uint" c:type="guint"/>
-      </field>
-      <field name="unknown_glyphs_count">
-        <type name="int" c:type="int"/>
-      </field>
-      <field name="logical_rect_cached" bits="1">
-        <type name="uint" c:type="guint"/>
-      </field>
-      <field name="ink_rect_cached" bits="1">
-        <type name="uint" c:type="guint"/>
-      </field>
-      <field name="logical_rect">
-        <type name="Rectangle" c:type="PangoRectangle"/>
-      </field>
-      <field name="ink_rect">
-        <type name="Rectangle" c:type="PangoRectangle"/>
-      </field>
-      <field name="tab_width">
-        <type name="int" c:type="int"/>
-      </field>
-      <field name="copy_end">
-        <type name="int" c:type="int"/>
-      </field>
-      <field name="log_attrs">
-        <type name="LogAttr" c:type="PangoLogAttr*"/>
-      </field>
-      <field name="lines">
-        <type name="GLib.SList" c:type="GSList*"/>
-      </field>
-      <field name="line_count">
-        <type name="uint" c:type="guint"/>
-      </field>
-    </class>
-    <record name="LayoutClass"
-            c:type="PangoLayoutClass"
-            glib:is-gtype-struct-for="Layout">
-    </record>
-    <record name="LayoutIter"
-            c:type="PangoLayoutIter"
-            glib:type-name="PangoLayoutIter"
-            glib:get-type="pango_layout_iter_get_type">
-      <method name="copy"
-              c:identifier="pango_layout_iter_copy"
-              doc="Copies a #PangLayoutIter.
-be freed with pango_layout_iter_free(), or %NULL if"
-              version="1.20">
-        <return-value transfer-ownership="full">
-          <type name="LayoutIter" c:type="PangoLayoutIter*"/>
-        </return-value>
-      </method>
-      <method name="free"
-              c:identifier="pango_layout_iter_free"
-              doc="Frees an iterator that&apos;s no longer in use.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="get_index"
-              c:identifier="pango_layout_iter_get_index"
-              doc="Gets the current byte index. Note that iterating forward by char
-moves in visual order, not logical order, so indexes may not be
-sequential. Also, the index may be equal to the length of the text
-in the layout, if on the %NULL run (see pango_layout_iter_get_run()).">
-        <return-value transfer-ownership="none">
-          <type name="int" c:type="int"/>
-        </return-value>
-      </method>
-      <method name="get_run"
-              c:identifier="pango_layout_iter_get_run"
-              doc="Gets the current run. When iterating by run, at the end of each
-line, there&apos;s a position with a %NULL run, so this function can return
-%NULL. The %NULL run at the end of each line ensures that all lines have
-at least one run, even lines consisting of only a newline.
-Use the faster pango_layout_iter_get_run_readonly() if you do not plan
-to modify the contents of the run (glyphs, glyph widths, etc.).">
-        <return-value transfer-ownership="full">
-          <type name="LayoutRun" c:type="PangoLayoutRun*"/>
-        </return-value>
-      </method>
-      <method name="get_run_readonly"
-              c:identifier="pango_layout_iter_get_run_readonly"
-              doc="Gets the current run. When iterating by run, at the end of each
-line, there&apos;s a position with a %NULL run, so this function can return
-%NULL. The %NULL run at the end of each line ensures that all lines have
-at least one run, even lines consisting of only a newline.
-This is a faster alternative to pango_layout_iter_get_run(),
-but the user is not expected
-to modify the contents of the run (glyphs, glyph widths, etc.)."
-              version="1.16">
-        <return-value transfer-ownership="full">
-          <type name="LayoutRun" c:type="PangoLayoutRun*"/>
-        </return-value>
-      </method>
-      <method name="get_line"
-              c:identifier="pango_layout_iter_get_line"
-              doc="Gets the current line.
-Use the faster pango_layout_iter_get_line_readonly() if you do not plan
-to modify the contents of the line (glyphs, glyph widths, etc.).">
-        <return-value transfer-ownership="full">
-          <type name="LayoutLine" c:type="PangoLayoutLine*"/>
-        </return-value>
-      </method>
-      <method name="get_line_readonly"
-              c:identifier="pango_layout_iter_get_line_readonly"
-              doc="Gets the current line for read-only access.
-This is a faster alternative to pango_layout_iter_get_line(),
-but the user is not expected
-to modify the contents of the line (glyphs, glyph widths, etc.)."
-              version="1.16">
-        <return-value transfer-ownership="full">
-          <type name="LayoutLine" c:type="PangoLayoutLine*"/>
-        </return-value>
-      </method>
-      <method name="at_last_line"
-              c:identifier="pango_layout_iter_at_last_line"
-              doc="Determines whether @iter is on the last line of the layout.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </method>
-      <method name="get_layout"
-              c:identifier="pango_layout_iter_get_layout"
-              doc="Gets the layout associated with a #PangoLayoutIter."
-              version="1.20">
-        <return-value transfer-ownership="full">
-          <type name="Layout" c:type="PangoLayout*"/>
-        </return-value>
-      </method>
-      <method name="next_char"
-              c:identifier="pango_layout_iter_next_char"
-              doc="Moves @iter forward to the next character in visual order. If @iter was already at
-the end of the layout, returns %FALSE.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </method>
-      <method name="next_cluster"
-              c:identifier="pango_layout_iter_next_cluster"
-              doc="Moves @iter forward to the next cluster in visual order. If @iter
-was already at the end of the layout, returns %FALSE.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </method>
-      <method name="next_run"
-              c:identifier="pango_layout_iter_next_run"
-              doc="Moves @iter forward to the next run in visual order. If @iter was
-already at the end of the layout, returns %FALSE.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </method>
-      <method name="next_line"
-              c:identifier="pango_layout_iter_next_line"
-              doc="Moves @iter forward to the start of the next line. If @iter is
-already on the last line, returns %FALSE.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </method>
-      <method name="get_char_extents"
-              c:identifier="pango_layout_iter_get_char_extents"
-              doc="Gets the extents of the current character, in layout coordinates
-(origin is the top left of the entire layout). Only logical extents
-can sensibly be obtained for characters; ink extents make sense only
-down to the level of clusters.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="logical_rect" transfer-ownership="none">
-            <type name="Rectangle" c:type="PangoRectangle*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_cluster_extents"
-              c:identifier="pango_layout_iter_get_cluster_extents"
-              doc="Gets the extents of the current cluster, in layout coordinates
-(origin is the top left of the entire layout).">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="ink_rect" transfer-ownership="none">
-            <type name="Rectangle" c:type="PangoRectangle*"/>
-          </parameter>
-          <parameter name="logical_rect" transfer-ownership="none">
-            <type name="Rectangle" c:type="PangoRectangle*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_run_extents"
-              c:identifier="pango_layout_iter_get_run_extents"
-              doc="Gets the extents of the current run in layout coordinates
-(origin is the top left of the entire layout).">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="ink_rect" transfer-ownership="none">
-            <type name="Rectangle" c:type="PangoRectangle*"/>
-          </parameter>
-          <parameter name="logical_rect" transfer-ownership="none">
-            <type name="Rectangle" c:type="PangoRectangle*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_line_extents"
-              c:identifier="pango_layout_iter_get_line_extents"
-              doc="Obtains the extents of the current line. @ink_rect or @logical_rect
-can be %NULL if you aren&apos;t interested in them. Extents are in layout
-coordinates (origin is the top-left corner of the entire
-#PangoLayout).  Thus the extents returned by this function will be
-the same width/height but not at the same x/y as the extents
-returned from pango_layout_line_get_extents().">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="ink_rect" transfer-ownership="none">
-            <type name="Rectangle" c:type="PangoRectangle*"/>
-          </parameter>
-          <parameter name="logical_rect" transfer-ownership="none">
-            <type name="Rectangle" c:type="PangoRectangle*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_line_yrange"
-              c:identifier="pango_layout_iter_get_line_yrange"
-              doc="Divides the vertical space in the #PangoLayout being iterated over
-between the lines in the layout, and returns the space belonging to
-the current line.  A line&apos;s range includes the line&apos;s logical
-extents, plus half of the spacing above and below the line, if
-pango_layout_set_spacing() has been called to set layout spacing.
-The Y positions are in layout coordinates (origin at top left of the
-entire layout).">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="y0_" direction="out" transfer-ownership="full">
-            <type name="int" c:type="int*"/>
-          </parameter>
-          <parameter name="y1_" direction="out" transfer-ownership="full">
-            <type name="int" c:type="int*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_layout_extents"
-              c:identifier="pango_layout_iter_get_layout_extents"
-              doc="Obtains the extents of the #PangoLayout being iterated
-over. @ink_rect or @logical_rect can be %NULL if you
-aren&apos;t interested in them.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="ink_rect" transfer-ownership="none">
-            <type name="Rectangle" c:type="PangoRectangle*"/>
-          </parameter>
-          <parameter name="logical_rect" transfer-ownership="none">
-            <type name="Rectangle" c:type="PangoRectangle*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_baseline"
-              c:identifier="pango_layout_iter_get_baseline"
-              doc="Gets the Y position of the current line&apos;s baseline, in layout
-coordinates (origin at top left of the entire layout).">
-        <return-value transfer-ownership="none">
-          <type name="int" c:type="int"/>
-        </return-value>
-      </method>
-    </record>
-    <record name="LayoutLine"
-            c:type="PangoLayoutLine"
-            glib:type-name="PangoLayoutLine"
-            glib:get-type="pango_layout_line_get_type">
-      <field name="layout" writable="1">
-        <type name="Layout" c:type="PangoLayout*"/>
-      </field>
-      <field name="start_index" writable="1">
-        <type name="int" c:type="gint"/>
-      </field>
-      <field name="length" writable="1">
-        <type name="int" c:type="gint"/>
-      </field>
-      <field name="runs" writable="1">
-        <type name="GLib.SList" c:type="GSList*"/>
-      </field>
-      <field name="is_paragraph_start" writable="1" bits="1">
-        <type name="uint" c:type="guint"/>
-      </field>
-      <field name="resolved_dir" writable="1" bits="3">
-        <type name="uint" c:type="guint"/>
-      </field>
-      <method name="ref"
-              c:identifier="pango_layout_line_ref"
-              doc="Increase the reference count of a #PangoLayoutLine by one."
-              version="1.10">
-        <return-value transfer-ownership="full">
-          <type name="LayoutLine" c:type="PangoLayoutLine*"/>
-        </return-value>
-      </method>
-      <method name="unref"
-              c:identifier="pango_layout_line_unref"
-              doc="Decrease the reference count of a #PangoLayoutLine by one.
-If the result is zero, the line and all associated memory
-will be freed.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="x_to_index"
-              c:identifier="pango_layout_line_x_to_index"
-              doc="from the left edge of the line.
-the grapheme in which the user clicked.
-in the grapheme the user clicked. It will either
-be zero, or the number of characters in the
-grapheme. 0 represents the leading edge of the grapheme.
-Converts from x offset to the byte index of the corresponding
-character within the text of the layout. If @x_pos is outside the line,
-in the line. This determination is based on the resolved direction
-of the paragraph; for example, if the resolved direction is
-right-to-left, then an X position to the right of the line (after it)
-results in 0 being stored in @index_ and @trailing. An X position to the
-left of the line results in @index_ pointing to the (logical) last
-grapheme in the line and @trailing being set to the number of characters
-in that grapheme. The reverse is true for a left-to-right line.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="x_pos" transfer-ownership="none">
-            <type name="int" c:type="int"/>
-          </parameter>
-          <parameter name="index_" direction="out" transfer-ownership="full">
-            <type name="int" c:type="int*"/>
-          </parameter>
-          <parameter name="trailing" direction="out" transfer-ownership="full">
-            <type name="int" c:type="int*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="index_to_x"
-              c:identifier="pango_layout_line_index_to_x"
-              doc="the position of. If &gt; 0, the trailing edge of the grapheme,
-if 0, the leading of the grapheme.
-Converts an index within a line to a X position.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="index_" transfer-ownership="none">
-            <type name="int" c:type="int"/>
-          </parameter>
-          <parameter name="trailing" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-          <parameter name="x_pos" transfer-ownership="none">
-            <type name="int" c:type="int*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_x_ranges"
-              c:identifier="pango_layout_line_get_x_ranges"
-              doc="is less than the start index for the line, then
-the first range will extend all the way to the leading
-edge of the layout. Otherwise it will start at the
-leading edge of the first character.
-is greater than the end index for the line, then
-the last range will extend all the way to the trailing
-edge of the layout. Otherwise, it will end at the
-trailing edge of the last character.
-location to store a pointer to an array of ranges.
-The array will be of length &lt;literal&gt;2*n_ranges&lt;/literal&gt;,
-with each range starting at &lt;literal&gt;(*ranges)[2*n]&lt;/literal&gt;
-and of width &lt;literal&gt;(*ranges)[2*n + 1] - (*ranges)[2*n]&lt;/literal&gt;.
-This array must be freed with g_free(). The coordinates are relative
-to the layout and are in Pango units.
-Gets a list of visual ranges corresponding to a given logical range.
-This list is not necessarily minimal - there may be consecutive
-ranges which are adjacent. The ranges will be sorted from left to
-right. The ranges are with respect to the left edge of the entire
-layout, not with respect to the line.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="start_index" transfer-ownership="none">
-            <type name="int" c:type="int"/>
-          </parameter>
-          <parameter name="end_index" transfer-ownership="none">
-            <type name="int" c:type="int"/>
-          </parameter>
-          <parameter name="ranges" direction="out" transfer-ownership="full">
-            <array length="4" c:type="int**">
-              <type name="int"/>
-            </array>
-          </parameter>
-          <parameter name="n_ranges" direction="out" transfer-ownership="full">
-            <type name="int" c:type="int*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_extents"
-              c:identifier="pango_layout_line_get_extents"
-              doc="as drawn, or %NULL
-string, or %NULL
-Computes the logical and ink extents of a layout line. See
-pango_font_get_glyph_extents() for details about the interpretation
-of the rectangles.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="ink_rect" transfer-ownership="none">
-            <type name="Rectangle" c:type="PangoRectangle*"/>
-          </parameter>
-          <parameter name="logical_rect" transfer-ownership="none">
-            <type name="Rectangle" c:type="PangoRectangle*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_pixel_extents"
-              c:identifier="pango_layout_line_get_pixel_extents"
-              doc="as drawn, or %NULL
-string, or %NULL
-Computes the logical and ink extents of @layout_line in device units.
-This function just calls pango_layout_line_get_extents() followed by
-two pango_extents_to_pixels() calls, rounding @ink_rect and @logical_rect
-such that the rounded rectangles fully contain the unrounded one (that is,
-passes them as first argument to pango_extents_to_pixels()).">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="ink_rect" transfer-ownership="none">
-            <type name="Rectangle" c:type="PangoRectangle*"/>
-          </parameter>
-          <parameter name="logical_rect" transfer-ownership="none">
-            <type name="Rectangle" c:type="PangoRectangle*"/>
-          </parameter>
-        </parameters>
-      </method>
-    </record>
-    <record name="LogAttr" c:type="PangoLogAttr">
-      <field name="is_line_break" writable="1" bits="1">
-        <type name="uint" c:type="guint"/>
-      </field>
-      <field name="is_mandatory_break" writable="1" bits="1">
-        <type name="uint" c:type="guint"/>
-      </field>
-      <field name="is_char_break" writable="1" bits="1">
-        <type name="uint" c:type="guint"/>
-      </field>
-      <field name="is_white" writable="1" bits="1">
-        <type name="uint" c:type="guint"/>
-      </field>
-      <field name="is_cursor_position" writable="1" bits="1">
-        <type name="uint" c:type="guint"/>
-      </field>
-      <field name="is_word_start" writable="1" bits="1">
-        <type name="uint" c:type="guint"/>
-      </field>
-      <field name="is_word_end" writable="1" bits="1">
-        <type name="uint" c:type="guint"/>
-      </field>
-      <field name="is_sentence_boundary" writable="1" bits="1">
-        <type name="uint" c:type="guint"/>
-      </field>
-      <field name="is_sentence_start" writable="1" bits="1">
-        <type name="uint" c:type="guint"/>
-      </field>
-      <field name="is_sentence_end" writable="1" bits="1">
-        <type name="uint" c:type="guint"/>
-      </field>
-      <field name="backspace_deletes_character" writable="1" bits="1">
-        <type name="uint" c:type="guint"/>
-      </field>
-      <field name="is_expandable_space" writable="1" bits="1">
-        <type name="uint" c:type="guint"/>
-      </field>
-      <field name="is_word_boundary" writable="1" bits="1">
-        <type name="uint" c:type="guint"/>
-      </field>
-    </record>
-    <record name="Matrix"
-            c:type="PangoMatrix"
-            doc="A structure specifying a transformation between user-space
-coordinates and device coordinates. The transformation
-is given by
-&lt;programlisting&gt;
-x_device = x_user * matrix-&gt;xx + y_user * matrix-&gt;xy + matrix-&gt;x0;
-y_device = x_user * matrix-&gt;yx + y_user * matrix-&gt;yy + matrix-&gt;y0;
-&lt;/programlisting&gt;"
-            version="1.6"
-            glib:type-name="PangoMatrix"
-            glib:get-type="pango_matrix_get_type">
-      <field name="xx" writable="1">
-        <type name="double" c:type="double"/>
-      </field>
-      <field name="xy" writable="1">
-        <type name="double" c:type="double"/>
-      </field>
-      <field name="yx" writable="1">
-        <type name="double" c:type="double"/>
-      </field>
-      <field name="yy" writable="1">
-        <type name="double" c:type="double"/>
-      </field>
-      <field name="x0" writable="1">
-        <type name="double" c:type="double"/>
-      </field>
-      <field name="y0" writable="1">
-        <type name="double" c:type="double"/>
-      </field>
-      <method name="copy"
-              c:identifier="pango_matrix_copy"
-              doc="Copies a #PangoMatrix.
-be freed with pango_matrix_free(), or %NULL if"
-              version="1.6">
-        <return-value transfer-ownership="full">
-          <type name="Matrix" c:type="PangoMatrix*"/>
-        </return-value>
-      </method>
-      <method name="free"
-              c:identifier="pango_matrix_free"
-              doc="Free a #PangoMatrix created with pango_matrix_copy()."
-              version="1.6">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="translate"
-              c:identifier="pango_matrix_translate"
-              doc="Changes the transformation represented by @matrix to be the
-transformation given by first translating by (@tx, @ty)
-then applying the original transformation."
-              version="1.6">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="tx" transfer-ownership="none">
-            <type name="double" c:type="double"/>
-          </parameter>
-          <parameter name="ty" transfer-ownership="none">
-            <type name="double" c:type="double"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="scale"
-              c:identifier="pango_matrix_scale"
-              doc="Changes the transformation represented by @matrix to be the
-transformation given by first scaling by @sx in the X direction
-and @sy in the Y direction then applying the original
-transformation."
-              version="1.6">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="scale_x" transfer-ownership="none">
-            <type name="double" c:type="double"/>
-          </parameter>
-          <parameter name="scale_y" transfer-ownership="none">
-            <type name="double" c:type="double"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="rotate"
-              c:identifier="pango_matrix_rotate"
-              doc="Changes the transformation represented by @matrix to be the
-transformation given by first rotating by @degrees degrees
-counter-clockwise then applying the original transformation."
-              version="1.6">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="degrees" transfer-ownership="none">
-            <type name="double" c:type="double"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="concat"
-              c:identifier="pango_matrix_concat"
-              doc="Changes the transformation represented by @matrix to be the
-transformation given by first applying transformation
-given by @new_matrix then applying the original transformation."
-              version="1.6">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="new_matrix" transfer-ownership="none">
-            <type name="Matrix" c:type="PangoMatrix*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="transform_point"
-              c:identifier="pango_matrix_transform_point"
-              doc="Transforms the point (@x, @y) by @matrix."
-              version="1.16">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="x" direction="out" transfer-ownership="full">
-            <type name="double" c:type="double*"/>
-          </parameter>
-          <parameter name="y" direction="out" transfer-ownership="full">
-            <type name="double" c:type="double*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="transform_distance"
-              c:identifier="pango_matrix_transform_distance"
-              doc="Transforms the distance vector (@dx,@dy) by @matrix. This is
-similar to pango_matrix_transform_point() except that the translation
-components of the transformation are ignored. The calculation of
-the returned vector is as follows:
-&lt;programlisting&gt;
-dx2 = dx1 * xx + dy1 * xy;
-dy2 = dx1 * yx + dy1 * yy;
-&lt;/programlisting&gt;
-Affine transformations are position invariant, so the same vector
-always transforms to the same vector. If (@x1,@y1) transforms
-to (@x2,@y2) then (@x1+@dx1,@y1+@dy1) will transform to
-(@x1+@dx2,@y1+@dy2) for all values of @x1 and @x2."
-              version="1.16">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="dx" direction="out" transfer-ownership="full">
-            <type name="double" c:type="double*"/>
-          </parameter>
-          <parameter name="dy" direction="out" transfer-ownership="full">
-            <type name="double" c:type="double*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="transform_rectangle"
-              c:identifier="pango_matrix_transform_rectangle"
-              doc="First transforms @rect using @matrix, then calculates the bounding box
-of the transformed rectangle.  The rectangle should be in Pango units.
-This function is useful for example when you want to draw a rotated
-should be and how much you should shift the layout when rendering.
-If you have a rectangle in device units (pixels), use
-pango_matrix_transform_pixel_rectangle().
-If you have the rectangle in Pango units and want to convert to
-transformed pixel bounding box, it is more accurate to transform it first
-(using this function) and pass the result to pango_extents_to_pixels(),
-first argument, for an inclusive rounded rectangle.
-However, there are valid reasons that you may want to convert
-to pixels first and then transform, for example when the transformed
-coordinates may overflow in Pango units (large matrix translation for
-example)."
-              version="1.16">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="rect" transfer-ownership="none">
-            <type name="Rectangle" c:type="PangoRectangle*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="transform_pixel_rectangle"
-              c:identifier="pango_matrix_transform_pixel_rectangle"
-              doc="First transforms the @rect using @matrix, then calculates the bounding box
-of the transformed rectangle.  The rectangle should be in device units
-(pixels).
-This function is useful for example when you want to draw a rotated
-should be and how much you should shift the layout when rendering.
-For better accuracy, you should use pango_matrix_transform_rectangle() on
-original rectangle in Pango units and convert to pixels afterward
-using pango_extents_to_pixels()&apos;s first argument."
-              version="1.16">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="rect" transfer-ownership="none">
-            <type name="Rectangle" c:type="PangoRectangle*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_font_scale_factor"
-              c:identifier="pango_matrix_get_font_scale_factor"
-              doc="Returns the scale factor of a matrix on the height of the font.
-That is, the scale factor in the direction perpendicular to the
-vector that the X coordinate is mapped to.
-or 1.0 if @matrix is %NULL."
-              version="1.12">
-        <return-value transfer-ownership="none">
-          <type name="double" c:type="double"/>
-        </return-value>
-      </method>
-    </record>
-    <record name="ParenStackEntry" c:type="ParenStackEntry">
-      <field name="pair_index" writable="1">
-        <type name="int" c:type="int"/>
-      </field>
-      <field name="script_code" writable="1">
-        <type name="Script" c:type="PangoScript"/>
-      </field>
-    </record>
-    <constant name="RENDER_TYPE_NONE" value="PangoRenderNone">
-      <type name="utf8"/>
-    </constant>
-    <record name="Rectangle" c:type="PangoRectangle">
-      <field name="x" writable="1">
-        <type name="int" c:type="int"/>
-      </field>
-      <field name="y" writable="1">
-        <type name="int" c:type="int"/>
-      </field>
-      <field name="width" writable="1">
-        <type name="int" c:type="int"/>
-      </field>
-      <field name="height" writable="1">
-        <type name="int" c:type="int"/>
-      </field>
-    </record>
-    <enumeration name="RenderPart"
-                 doc="#PangoRenderPart defines different items to render for such
-purposes as setting colors."
-                 version="1.8"
-                 glib:type-name="PangoRenderPart"
-                 glib:get-type="pango_render_part_get_type"
-                 c:type="PangoRenderPart">
-      <member name="foreground"
-              value="0"
-              c:identifier="PANGO_RENDER_PART_FOREGROUND"
-              glib:nick="foreground"/>
-      <member name="background"
-              value="1"
-              c:identifier="PANGO_RENDER_PART_BACKGROUND"
-              glib:nick="background"/>
-      <member name="underline"
-              value="2"
-              c:identifier="PANGO_RENDER_PART_UNDERLINE"
-              glib:nick="underline"/>
-      <member name="strikethrough"
-              value="3"
-              c:identifier="PANGO_RENDER_PART_STRIKETHROUGH"
-              glib:nick="strikethrough"/>
-    </enumeration>
-    <class name="Renderer"
-           c:type="PangoRenderer"
-           doc="be %NULL, which should be treated the same as the identity matrix.
-#PangoRenderer is a base class for objects that are used to
-render Pango objects such as #PangoGlyphString and
-#PangoLayout."
-           version="1.8"
-           parent="GObject.Object"
-           abstract="1"
-           glib:type-name="PangoRenderer"
-           glib:get-type="pango_renderer_get_type"
-           glib:type-struct="RendererClass">
-      <virtual-method name="draw_glyphs" invoker="draw_glyphs">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="font" transfer-ownership="none">
-            <type name="Font" c:type="PangoFont*"/>
-          </parameter>
-          <parameter name="glyphs" transfer-ownership="none">
-            <type name="GlyphString" c:type="PangoGlyphString*"/>
-          </parameter>
-          <parameter name="x" transfer-ownership="none">
-            <type name="int" c:type="int"/>
-          </parameter>
-          <parameter name="y" transfer-ownership="none">
-            <type name="int" c:type="int"/>
-          </parameter>
-        </parameters>
-      </virtual-method>
-      <virtual-method name="draw_rectangle" invoker="draw_rectangle">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="part" transfer-ownership="none">
-            <type name="RenderPart" c:type="PangoRenderPart"/>
-          </parameter>
-          <parameter name="x" transfer-ownership="none">
-            <type name="int" c:type="int"/>
-          </parameter>
-          <parameter name="y" transfer-ownership="none">
-            <type name="int" c:type="int"/>
-          </parameter>
-          <parameter name="width" transfer-ownership="none">
-            <type name="int" c:type="int"/>
-          </parameter>
-          <parameter name="height" transfer-ownership="none">
-            <type name="int" c:type="int"/>
-          </parameter>
-        </parameters>
-      </virtual-method>
-      <virtual-method name="draw_error_underline"
-                      invoker="draw_error_underline">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="x" transfer-ownership="none">
-            <type name="int" c:type="int"/>
-          </parameter>
-          <parameter name="y" transfer-ownership="none">
-            <type name="int" c:type="int"/>
-          </parameter>
-          <parameter name="width" transfer-ownership="none">
-            <type name="int" c:type="int"/>
-          </parameter>
-          <parameter name="height" transfer-ownership="none">
-            <type name="int" c:type="int"/>
-          </parameter>
-        </parameters>
-      </virtual-method>
-      <virtual-method name="draw_shape">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="attr" transfer-ownership="none">
-            <type name="AttrShape" c:type="PangoAttrShape*"/>
-          </parameter>
-          <parameter name="x" transfer-ownership="none">
-            <type name="int" c:type="int"/>
-          </parameter>
-          <parameter name="y" transfer-ownership="none">
-            <type name="int" c:type="int"/>
-          </parameter>
-        </parameters>
-      </virtual-method>
-      <virtual-method name="draw_trapezoid" invoker="draw_trapezoid">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="part" transfer-ownership="none">
-            <type name="RenderPart" c:type="PangoRenderPart"/>
-          </parameter>
-          <parameter name="y1_" transfer-ownership="none">
-            <type name="double" c:type="double"/>
-          </parameter>
-          <parameter name="x11" transfer-ownership="none">
-            <type name="double" c:type="double"/>
-          </parameter>
-          <parameter name="x21" transfer-ownership="none">
-            <type name="double" c:type="double"/>
-          </parameter>
-          <parameter name="y2" transfer-ownership="none">
-            <type name="double" c:type="double"/>
-          </parameter>
-          <parameter name="x12" transfer-ownership="none">
-            <type name="double" c:type="double"/>
-          </parameter>
-          <parameter name="x22" transfer-ownership="none">
-            <type name="double" c:type="double"/>
-          </parameter>
-        </parameters>
-      </virtual-method>
-      <virtual-method name="draw_glyph" invoker="draw_glyph">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="font" transfer-ownership="none">
-            <type name="Font" c:type="PangoFont*"/>
-          </parameter>
-          <parameter name="glyph" transfer-ownership="none">
-            <type name="Glyph" c:type="PangoGlyph"/>
-          </parameter>
-          <parameter name="x" transfer-ownership="none">
-            <type name="double" c:type="double"/>
-          </parameter>
-          <parameter name="y" transfer-ownership="none">
-            <type name="double" c:type="double"/>
-          </parameter>
-        </parameters>
-      </virtual-method>
-      <virtual-method name="part_changed" invoker="part_changed">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="part" transfer-ownership="none">
-            <type name="RenderPart" c:type="PangoRenderPart"/>
-          </parameter>
-        </parameters>
-      </virtual-method>
-      <virtual-method name="begin">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </virtual-method>
-      <virtual-method name="end">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </virtual-method>
-      <virtual-method name="prepare_run">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="run" transfer-ownership="none">
-            <type name="LayoutRun" c:type="PangoLayoutRun*"/>
-          </parameter>
-        </parameters>
-      </virtual-method>
-      <virtual-method name="draw_glyph_item" invoker="draw_glyph_item">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="text" transfer-ownership="none">
-            <type name="utf8" c:type="char*"/>
-          </parameter>
-          <parameter name="glyph_item" transfer-ownership="none">
-            <type name="GlyphItem" c:type="PangoGlyphItem*"/>
-          </parameter>
-          <parameter name="x" transfer-ownership="none">
-            <type name="int" c:type="int"/>
-          </parameter>
-          <parameter name="y" transfer-ownership="none">
-            <type name="int" c:type="int"/>
-          </parameter>
-        </parameters>
-      </virtual-method>
-      <method name="draw_layout"
-              c:identifier="pango_renderer_draw_layout"
-              doc="in Pango units.
-in Pango units.
-Draws @layout with the specified #PangoRenderer."
-              version="1.8">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="layout" transfer-ownership="none">
-            <type name="Layout" c:type="PangoLayout*"/>
-          </parameter>
-          <parameter name="x" transfer-ownership="none">
-            <type name="int" c:type="int"/>
-          </parameter>
-          <parameter name="y" transfer-ownership="none">
-            <type name="int" c:type="int"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="draw_layout_line"
-              c:identifier="pango_renderer_draw_layout_line"
-              doc="in Pango units.
-in Pango units.
-Draws @line with the specified #PangoRenderer."
-              version="1.8">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="line" transfer-ownership="none">
-            <type name="LayoutLine" c:type="PangoLayoutLine*"/>
-          </parameter>
-          <parameter name="x" transfer-ownership="none">
-            <type name="int" c:type="int"/>
-          </parameter>
-          <parameter name="y" transfer-ownership="none">
-            <type name="int" c:type="int"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="draw_glyphs"
-              c:identifier="pango_renderer_draw_glyphs"
-              doc="in Pango units.
-in Pango units.
-Draws the glyphs in @glyphs with the specified #PangoRenderer."
-              version="1.8">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="font" transfer-ownership="none">
-            <type name="Font" c:type="PangoFont*"/>
-          </parameter>
-          <parameter name="glyphs" transfer-ownership="none">
-            <type name="GlyphString" c:type="PangoGlyphString*"/>
-          </parameter>
-          <parameter name="x" transfer-ownership="none">
-            <type name="int" c:type="int"/>
-          </parameter>
-          <parameter name="y" transfer-ownership="none">
-            <type name="int" c:type="int"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="draw_glyph_item"
-              c:identifier="pango_renderer_draw_glyph_item"
-              doc="in Pango units.
-in Pango units.
-Draws the glyphs in @glyph_item with the specified #PangoRenderer,
-embedding the text associated with the glyphs in the output if the
-output format supports it (PDF for example).
-Note that @text is the start of the text for layout, which is then
-indexed by &lt;literal&gt;@glyph_item-&gt;item-&gt;offset&lt;/literal&gt;.
-If @text is %NULL, this simply calls pango_renderer_draw_glyphs().
-The default implementation of this method simply falls back to
-pango_renderer_draw_glyphs()."
-              version="1.22">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="text" transfer-ownership="none">
-            <type name="utf8" c:type="char*"/>
-          </parameter>
-          <parameter name="glyph_item" transfer-ownership="none">
-            <type name="GlyphItem" c:type="PangoGlyphItem*"/>
-          </parameter>
-          <parameter name="x" transfer-ownership="none">
-            <type name="int" c:type="int"/>
-          </parameter>
-          <parameter name="y" transfer-ownership="none">
-            <type name="int" c:type="int"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="draw_rectangle"
-              c:identifier="pango_renderer_draw_rectangle"
-              doc="Draws an axis-aligned rectangle in user space coordinates with the
-specified #PangoRenderer.
-This should be called while @renderer is already active.  Use
-pango_renderer_activate() to activate a renderer."
-              version="1.8">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="part" transfer-ownership="none">
-            <type name="RenderPart" c:type="PangoRenderPart"/>
-          </parameter>
-          <parameter name="x" transfer-ownership="none">
-            <type name="int" c:type="int"/>
-          </parameter>
-          <parameter name="y" transfer-ownership="none">
-            <type name="int" c:type="int"/>
-          </parameter>
-          <parameter name="width" transfer-ownership="none">
-            <type name="int" c:type="int"/>
-          </parameter>
-          <parameter name="height" transfer-ownership="none">
-            <type name="int" c:type="int"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="draw_error_underline"
-              c:identifier="pango_renderer_draw_error_underline"
-              doc="Draw a squiggly line that approximately covers the given rectangle
-in the style of an underline used to indicate a spelling error.
-(The width of the underline is rounded to an integer number
-of up/down segments and the resulting rectangle is centered
-in the original rectangle)
-This should be called while @renderer is already active.  Use
-pango_renderer_activate() to activate a renderer."
-              version="1.8">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="x" transfer-ownership="none">
-            <type name="int" c:type="int"/>
-          </parameter>
-          <parameter name="y" transfer-ownership="none">
-            <type name="int" c:type="int"/>
-          </parameter>
-          <parameter name="width" transfer-ownership="none">
-            <type name="int" c:type="int"/>
-          </parameter>
-          <parameter name="height" transfer-ownership="none">
-            <type name="int" c:type="int"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="draw_trapezoid"
-              c:identifier="pango_renderer_draw_trapezoid"
-              doc="Draws a trapezoid with the parallel sides aligned with the X axis
-using the given #PangoRenderer; coordinates are in device space."
-              version="1.8">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="part" transfer-ownership="none">
-            <type name="RenderPart" c:type="PangoRenderPart"/>
-          </parameter>
-          <parameter name="y1_" transfer-ownership="none">
-            <type name="double" c:type="double"/>
-          </parameter>
-          <parameter name="x11" transfer-ownership="none">
-            <type name="double" c:type="double"/>
-          </parameter>
-          <parameter name="x21" transfer-ownership="none">
-            <type name="double" c:type="double"/>
-          </parameter>
-          <parameter name="y2" transfer-ownership="none">
-            <type name="double" c:type="double"/>
-          </parameter>
-          <parameter name="x12" transfer-ownership="none">
-            <type name="double" c:type="double"/>
-          </parameter>
-          <parameter name="x22" transfer-ownership="none">
-            <type name="double" c:type="double"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="draw_glyph"
-              c:identifier="pango_renderer_draw_glyph"
-              doc="Draws a single glyph with coordinates in device space."
-              version="1.8">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="font" transfer-ownership="none">
-            <type name="Font" c:type="PangoFont*"/>
-          </parameter>
-          <parameter name="glyph" transfer-ownership="none">
-            <type name="Glyph" c:type="PangoGlyph"/>
-          </parameter>
-          <parameter name="x" transfer-ownership="none">
-            <type name="double" c:type="double"/>
-          </parameter>
-          <parameter name="y" transfer-ownership="none">
-            <type name="double" c:type="double"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="activate"
-              c:identifier="pango_renderer_activate"
-              doc="Does initial setup before rendering operations on @renderer.
-pango_renderer_deactivate() should be called when done drawing.
-Calls such as pango_renderer_draw_layout() automatically
-activate the layout before drawing on it. Calls to
-pango_renderer_activate() and pango_renderer_deactivate() can
-be nested and the renderer will only be initialized and
-deinitialized once."
-              version="1.8">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="deactivate"
-              c:identifier="pango_renderer_deactivate"
-              doc="Cleans up after rendering operations on @renderer. See
-docs for pango_renderer_activate()."
-              version="1.8">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="part_changed"
-              c:identifier="pango_renderer_part_changed"
-              doc="Informs Pango that the way that the rendering is done
-for @part has changed in a way that would prevent multiple
-pieces being joined together into one drawing call. For
-instance, if a subclass of #PangoRenderer was to add a stipple
-option for drawing underlines, it needs to call
-&lt;informalexample&gt;&lt;programlisting&gt;
-pango_renderer_part_changed (render, PANGO_RENDER_PART_UNDERLINE);
-&lt;/programlisting&gt;&lt;/informalexample&gt;
-When the stipple changes or underlines with different stipples
-might be joined together. Pango automatically calls this for
-changes to colors. (See pango_renderer_set_color())"
-              version="1.8">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="part" transfer-ownership="none">
-            <type name="RenderPart" c:type="PangoRenderPart"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_color"
-              c:identifier="pango_renderer_set_color"
-              doc="Sets the color for part of the rendering."
-              version="1.8">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="part" transfer-ownership="none">
-            <type name="RenderPart" c:type="PangoRenderPart"/>
-          </parameter>
-          <parameter name="color" transfer-ownership="none">
-            <type name="Color" c:type="PangoColor*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_color"
-              c:identifier="pango_renderer_get_color"
-              doc="Gets the current rendering color for the specified part.
-if it hasn&apos;t been set and should be inherited from the
-environment."
-              version="1.8">
-        <return-value transfer-ownership="full">
-          <type name="Color" c:type="PangoColor*"/>
-        </return-value>
-        <parameters>
-          <parameter name="part" transfer-ownership="none">
-            <type name="RenderPart" c:type="PangoRenderPart"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_matrix"
-              c:identifier="pango_renderer_set_matrix"
-              doc="(No matrix set is the same as setting the identity matrix.)
-Sets the transformation matrix that will be applied when rendering."
-              version="1.8">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="matrix" transfer-ownership="none">
-            <type name="Matrix" c:type="PangoMatrix*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_matrix"
-              c:identifier="pango_renderer_get_matrix"
-              doc="Gets the transformation matrix that will be applied when
-rendering. See pango_renderer_set_matrix().
-(which is the same as the identity matrix). The returned
-matrix is owned by Pango and must not be modified or
-freed."
-              version="1.8">
-        <return-value transfer-ownership="none">
-          <type name="Matrix" c:type="PangoMatrix*"/>
-        </return-value>
-      </method>
-      <method name="get_layout"
-              c:identifier="pango_renderer_get_layout"
-              doc="Gets the layout currently being rendered using @renderer.
-Calling this function only makes sense from inside a subclass&apos;s
-methods, like in its draw_shape&lt;!----&gt;() for example.
-The returned layout should not be modified while still being
-rendered.
-rendered using @renderer at this time."
-              version="1.20">
-        <return-value transfer-ownership="full">
-          <type name="Layout" c:type="PangoLayout*"/>
-        </return-value>
-      </method>
-      <method name="get_layout_line"
-              c:identifier="pango_renderer_get_layout_line"
-              doc="Gets the layout line currently being rendered using @renderer.
-Calling this function only makes sense from inside a subclass&apos;s
-methods, like in its draw_shape&lt;!----&gt;() for example.
-The returned layout line should not be modified while still being
-rendered.
-rendered using @renderer at this time."
-              version="1.20">
-        <return-value transfer-ownership="full">
-          <type name="LayoutLine" c:type="PangoLayoutLine*"/>
-        </return-value>
-      </method>
-      <field name="parent_instance">
-        <type name="GObject.Object" c:type="GObject"/>
-      </field>
-      <field name="underline">
-        <type name="Underline" c:type="PangoUnderline"/>
-      </field>
-      <field name="strikethrough">
-        <type name="boolean" c:type="gboolean"/>
-      </field>
-      <field name="active_count">
-        <type name="int" c:type="int"/>
-      </field>
-      <field name="matrix">
-        <type name="Matrix" c:type="PangoMatrix*"/>
-      </field>
-      <field name="priv">
-        <type name="RendererPrivate" c:type="PangoRendererPrivate*"/>
-      </field>
-    </class>
-    <record name="RendererClass"
-            c:type="PangoRendererClass"
-            glib:is-gtype-struct-for="Renderer"
-            doc="covers the given rectangle in the style of an underline used to
-indicate a spelling error.
-in user coordinates.
-attributes change
-Class structure for #PangoRenderer."
-            version="1.8">
-      <field name="parent_class">
-        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
-      </field>
-      <field name="draw_glyphs">
-        <callback name="draw_glyphs" c:type="draw_glyphs">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-          <parameters>
-            <parameter name="renderer" transfer-ownership="none">
-              <type name="Renderer" c:type="PangoRenderer*"/>
-            </parameter>
-            <parameter name="font" transfer-ownership="none">
-              <type name="Font" c:type="PangoFont*"/>
-            </parameter>
-            <parameter name="glyphs" transfer-ownership="none">
-              <type name="GlyphString" c:type="PangoGlyphString*"/>
-            </parameter>
-            <parameter name="x" transfer-ownership="none">
-              <type name="int" c:type="int"/>
-            </parameter>
-            <parameter name="y" transfer-ownership="none">
-              <type name="int" c:type="int"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="draw_rectangle">
-        <callback name="draw_rectangle" c:type="draw_rectangle">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-          <parameters>
-            <parameter name="renderer" transfer-ownership="none">
-              <type name="Renderer" c:type="PangoRenderer*"/>
-            </parameter>
-            <parameter name="part" transfer-ownership="none">
-              <type name="RenderPart" c:type="PangoRenderPart"/>
-            </parameter>
-            <parameter name="x" transfer-ownership="none">
-              <type name="int" c:type="int"/>
-            </parameter>
-            <parameter name="y" transfer-ownership="none">
-              <type name="int" c:type="int"/>
-            </parameter>
-            <parameter name="width" transfer-ownership="none">
-              <type name="int" c:type="int"/>
-            </parameter>
-            <parameter name="height" transfer-ownership="none">
-              <type name="int" c:type="int"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="draw_error_underline">
-        <callback name="draw_error_underline" c:type="draw_error_underline">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-          <parameters>
-            <parameter name="renderer" transfer-ownership="none">
-              <type name="Renderer" c:type="PangoRenderer*"/>
-            </parameter>
-            <parameter name="x" transfer-ownership="none">
-              <type name="int" c:type="int"/>
-            </parameter>
-            <parameter name="y" transfer-ownership="none">
-              <type name="int" c:type="int"/>
-            </parameter>
-            <parameter name="width" transfer-ownership="none">
-              <type name="int" c:type="int"/>
-            </parameter>
-            <parameter name="height" transfer-ownership="none">
-              <type name="int" c:type="int"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="draw_shape">
-        <callback name="draw_shape" c:type="draw_shape">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-          <parameters>
-            <parameter name="renderer" transfer-ownership="none">
-              <type name="Renderer" c:type="PangoRenderer*"/>
-            </parameter>
-            <parameter name="attr" transfer-ownership="none">
-              <type name="AttrShape" c:type="PangoAttrShape*"/>
-            </parameter>
-            <parameter name="x" transfer-ownership="none">
-              <type name="int" c:type="int"/>
-            </parameter>
-            <parameter name="y" transfer-ownership="none">
-              <type name="int" c:type="int"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="draw_trapezoid">
-        <callback name="draw_trapezoid" c:type="draw_trapezoid">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-          <parameters>
-            <parameter name="renderer" transfer-ownership="none">
-              <type name="Renderer" c:type="PangoRenderer*"/>
-            </parameter>
-            <parameter name="part" transfer-ownership="none">
-              <type name="RenderPart" c:type="PangoRenderPart"/>
-            </parameter>
-            <parameter name="y1_" transfer-ownership="none">
-              <type name="double" c:type="double"/>
-            </parameter>
-            <parameter name="x11" transfer-ownership="none">
-              <type name="double" c:type="double"/>
-            </parameter>
-            <parameter name="x21" transfer-ownership="none">
-              <type name="double" c:type="double"/>
-            </parameter>
-            <parameter name="y2" transfer-ownership="none">
-              <type name="double" c:type="double"/>
-            </parameter>
-            <parameter name="x12" transfer-ownership="none">
-              <type name="double" c:type="double"/>
-            </parameter>
-            <parameter name="x22" transfer-ownership="none">
-              <type name="double" c:type="double"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="draw_glyph">
-        <callback name="draw_glyph" c:type="draw_glyph">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-          <parameters>
-            <parameter name="renderer" transfer-ownership="none">
-              <type name="Renderer" c:type="PangoRenderer*"/>
-            </parameter>
-            <parameter name="font" transfer-ownership="none">
-              <type name="Font" c:type="PangoFont*"/>
-            </parameter>
-            <parameter name="glyph" transfer-ownership="none">
-              <type name="Glyph" c:type="PangoGlyph"/>
-            </parameter>
-            <parameter name="x" transfer-ownership="none">
-              <type name="double" c:type="double"/>
-            </parameter>
-            <parameter name="y" transfer-ownership="none">
-              <type name="double" c:type="double"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="part_changed">
-        <callback name="part_changed" c:type="part_changed">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-          <parameters>
-            <parameter name="renderer" transfer-ownership="none">
-              <type name="Renderer" c:type="PangoRenderer*"/>
-            </parameter>
-            <parameter name="part" transfer-ownership="none">
-              <type name="RenderPart" c:type="PangoRenderPart"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="begin">
-        <callback name="begin" c:type="begin">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-          <parameters>
-            <parameter name="renderer" transfer-ownership="none">
-              <type name="Renderer" c:type="PangoRenderer*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="end">
-        <callback name="end" c:type="end">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-          <parameters>
-            <parameter name="renderer" transfer-ownership="none">
-              <type name="Renderer" c:type="PangoRenderer*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="prepare_run">
-        <callback name="prepare_run" c:type="prepare_run">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-          <parameters>
-            <parameter name="renderer" transfer-ownership="none">
-              <type name="Renderer" c:type="PangoRenderer*"/>
-            </parameter>
-            <parameter name="run" transfer-ownership="none">
-              <type name="LayoutRun" c:type="PangoLayoutRun*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="draw_glyph_item">
-        <callback name="draw_glyph_item" c:type="draw_glyph_item">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-          <parameters>
-            <parameter name="renderer" transfer-ownership="none">
-              <type name="Renderer" c:type="PangoRenderer*"/>
-            </parameter>
-            <parameter name="text" transfer-ownership="none">
-              <type name="utf8" c:type="char*"/>
-            </parameter>
-            <parameter name="glyph_item" transfer-ownership="none">
-              <type name="GlyphItem" c:type="PangoGlyphItem*"/>
-            </parameter>
-            <parameter name="x" transfer-ownership="none">
-              <type name="int" c:type="int"/>
-            </parameter>
-            <parameter name="y" transfer-ownership="none">
-              <type name="int" c:type="int"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="pango_reserved2">
-        <callback name="pango_reserved2" c:type="_pango_reserved2">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-        </callback>
-      </field>
-      <field name="pango_reserved3">
-        <callback name="pango_reserved3" c:type="_pango_reserved3">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-        </callback>
-      </field>
-      <field name="pango_reserved4">
-        <callback name="pango_reserved4" c:type="_pango_reserved4">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-        </callback>
-      </field>
-    </record>
-    <record name="RendererPrivate" c:type="PangoRendererPrivate">
-    </record>
-    <constant name="SCALE" value="1024">
-      <type name="int"/>
-    </constant>
-    <enumeration name="Script"
-                 glib:type-name="PangoScript"
-                 glib:get-type="pango_script_get_type"
-                 c:type="PangoScript">
-      <member name="invalid_code"
-              value="-1"
-              c:identifier="PANGO_SCRIPT_INVALID_CODE"
-              glib:nick="invalid-code"/>
-      <member name="common"
-              value="0"
-              c:identifier="PANGO_SCRIPT_COMMON"
-              glib:nick="common"/>
-      <member name="inherited"
-              value="1"
-              c:identifier="PANGO_SCRIPT_INHERITED"
-              glib:nick="inherited"/>
-      <member name="arabic"
-              value="2"
-              c:identifier="PANGO_SCRIPT_ARABIC"
-              glib:nick="arabic"/>
-      <member name="armenian"
-              value="3"
-              c:identifier="PANGO_SCRIPT_ARMENIAN"
-              glib:nick="armenian"/>
-      <member name="bengali"
-              value="4"
-              c:identifier="PANGO_SCRIPT_BENGALI"
-              glib:nick="bengali"/>
-      <member name="bopomofo"
-              value="5"
-              c:identifier="PANGO_SCRIPT_BOPOMOFO"
-              glib:nick="bopomofo"/>
-      <member name="cherokee"
-              value="6"
-              c:identifier="PANGO_SCRIPT_CHEROKEE"
-              glib:nick="cherokee"/>
-      <member name="coptic"
-              value="7"
-              c:identifier="PANGO_SCRIPT_COPTIC"
-              glib:nick="coptic"/>
-      <member name="cyrillic"
-              value="8"
-              c:identifier="PANGO_SCRIPT_CYRILLIC"
-              glib:nick="cyrillic"/>
-      <member name="deseret"
-              value="9"
-              c:identifier="PANGO_SCRIPT_DESERET"
-              glib:nick="deseret"/>
-      <member name="devanagari"
-              value="10"
-              c:identifier="PANGO_SCRIPT_DEVANAGARI"
-              glib:nick="devanagari"/>
-      <member name="ethiopic"
-              value="11"
-              c:identifier="PANGO_SCRIPT_ETHIOPIC"
-              glib:nick="ethiopic"/>
-      <member name="georgian"
-              value="12"
-              c:identifier="PANGO_SCRIPT_GEORGIAN"
-              glib:nick="georgian"/>
-      <member name="gothic"
-              value="13"
-              c:identifier="PANGO_SCRIPT_GOTHIC"
-              glib:nick="gothic"/>
-      <member name="greek"
-              value="14"
-              c:identifier="PANGO_SCRIPT_GREEK"
-              glib:nick="greek"/>
-      <member name="gujarati"
-              value="15"
-              c:identifier="PANGO_SCRIPT_GUJARATI"
-              glib:nick="gujarati"/>
-      <member name="gurmukhi"
-              value="16"
-              c:identifier="PANGO_SCRIPT_GURMUKHI"
-              glib:nick="gurmukhi"/>
-      <member name="han"
-              value="17"
-              c:identifier="PANGO_SCRIPT_HAN"
-              glib:nick="han"/>
-      <member name="hangul"
-              value="18"
-              c:identifier="PANGO_SCRIPT_HANGUL"
-              glib:nick="hangul"/>
-      <member name="hebrew"
-              value="19"
-              c:identifier="PANGO_SCRIPT_HEBREW"
-              glib:nick="hebrew"/>
-      <member name="hiragana"
-              value="20"
-              c:identifier="PANGO_SCRIPT_HIRAGANA"
-              glib:nick="hiragana"/>
-      <member name="kannada"
-              value="21"
-              c:identifier="PANGO_SCRIPT_KANNADA"
-              glib:nick="kannada"/>
-      <member name="katakana"
-              value="22"
-              c:identifier="PANGO_SCRIPT_KATAKANA"
-              glib:nick="katakana"/>
-      <member name="khmer"
-              value="23"
-              c:identifier="PANGO_SCRIPT_KHMER"
-              glib:nick="khmer"/>
-      <member name="lao"
-              value="24"
-              c:identifier="PANGO_SCRIPT_LAO"
-              glib:nick="lao"/>
-      <member name="latin"
-              value="25"
-              c:identifier="PANGO_SCRIPT_LATIN"
-              glib:nick="latin"/>
-      <member name="malayalam"
-              value="26"
-              c:identifier="PANGO_SCRIPT_MALAYALAM"
-              glib:nick="malayalam"/>
-      <member name="mongolian"
-              value="27"
-              c:identifier="PANGO_SCRIPT_MONGOLIAN"
-              glib:nick="mongolian"/>
-      <member name="myanmar"
-              value="28"
-              c:identifier="PANGO_SCRIPT_MYANMAR"
-              glib:nick="myanmar"/>
-      <member name="ogham"
-              value="29"
-              c:identifier="PANGO_SCRIPT_OGHAM"
-              glib:nick="ogham"/>
-      <member name="old_italic"
-              value="30"
-              c:identifier="PANGO_SCRIPT_OLD_ITALIC"
-              glib:nick="old-italic"/>
-      <member name="oriya"
-              value="31"
-              c:identifier="PANGO_SCRIPT_ORIYA"
-              glib:nick="oriya"/>
-      <member name="runic"
-              value="32"
-              c:identifier="PANGO_SCRIPT_RUNIC"
-              glib:nick="runic"/>
-      <member name="sinhala"
-              value="33"
-              c:identifier="PANGO_SCRIPT_SINHALA"
-              glib:nick="sinhala"/>
-      <member name="syriac"
-              value="34"
-              c:identifier="PANGO_SCRIPT_SYRIAC"
-              glib:nick="syriac"/>
-      <member name="tamil"
-              value="35"
-              c:identifier="PANGO_SCRIPT_TAMIL"
-              glib:nick="tamil"/>
-      <member name="telugu"
-              value="36"
-              c:identifier="PANGO_SCRIPT_TELUGU"
-              glib:nick="telugu"/>
-      <member name="thaana"
-              value="37"
-              c:identifier="PANGO_SCRIPT_THAANA"
-              glib:nick="thaana"/>
-      <member name="thai"
-              value="38"
-              c:identifier="PANGO_SCRIPT_THAI"
-              glib:nick="thai"/>
-      <member name="tibetan"
-              value="39"
-              c:identifier="PANGO_SCRIPT_TIBETAN"
-              glib:nick="tibetan"/>
-      <member name="canadian_aboriginal"
-              value="40"
-              c:identifier="PANGO_SCRIPT_CANADIAN_ABORIGINAL"
-              glib:nick="canadian-aboriginal"/>
-      <member name="yi"
-              value="41"
-              c:identifier="PANGO_SCRIPT_YI"
-              glib:nick="yi"/>
-      <member name="tagalog"
-              value="42"
-              c:identifier="PANGO_SCRIPT_TAGALOG"
-              glib:nick="tagalog"/>
-      <member name="hanunoo"
-              value="43"
-              c:identifier="PANGO_SCRIPT_HANUNOO"
-              glib:nick="hanunoo"/>
-      <member name="buhid"
-              value="44"
-              c:identifier="PANGO_SCRIPT_BUHID"
-              glib:nick="buhid"/>
-      <member name="tagbanwa"
-              value="45"
-              c:identifier="PANGO_SCRIPT_TAGBANWA"
-              glib:nick="tagbanwa"/>
-      <member name="braille"
-              value="46"
-              c:identifier="PANGO_SCRIPT_BRAILLE"
-              glib:nick="braille"/>
-      <member name="cypriot"
-              value="47"
-              c:identifier="PANGO_SCRIPT_CYPRIOT"
-              glib:nick="cypriot"/>
-      <member name="limbu"
-              value="48"
-              c:identifier="PANGO_SCRIPT_LIMBU"
-              glib:nick="limbu"/>
-      <member name="osmanya"
-              value="49"
-              c:identifier="PANGO_SCRIPT_OSMANYA"
-              glib:nick="osmanya"/>
-      <member name="shavian"
-              value="50"
-              c:identifier="PANGO_SCRIPT_SHAVIAN"
-              glib:nick="shavian"/>
-      <member name="linear_b"
-              value="51"
-              c:identifier="PANGO_SCRIPT_LINEAR_B"
-              glib:nick="linear-b"/>
-      <member name="tai_le"
-              value="52"
-              c:identifier="PANGO_SCRIPT_TAI_LE"
-              glib:nick="tai-le"/>
-      <member name="ugaritic"
-              value="53"
-              c:identifier="PANGO_SCRIPT_UGARITIC"
-              glib:nick="ugaritic"/>
-      <member name="new_tai_lue"
-              value="54"
-              c:identifier="PANGO_SCRIPT_NEW_TAI_LUE"
-              glib:nick="new-tai-lue"/>
-      <member name="buginese"
-              value="55"
-              c:identifier="PANGO_SCRIPT_BUGINESE"
-              glib:nick="buginese"/>
-      <member name="glagolitic"
-              value="56"
-              c:identifier="PANGO_SCRIPT_GLAGOLITIC"
-              glib:nick="glagolitic"/>
-      <member name="tifinagh"
-              value="57"
-              c:identifier="PANGO_SCRIPT_TIFINAGH"
-              glib:nick="tifinagh"/>
-      <member name="syloti_nagri"
-              value="58"
-              c:identifier="PANGO_SCRIPT_SYLOTI_NAGRI"
-              glib:nick="syloti-nagri"/>
-      <member name="old_persian"
-              value="59"
-              c:identifier="PANGO_SCRIPT_OLD_PERSIAN"
-              glib:nick="old-persian"/>
-      <member name="kharoshthi"
-              value="60"
-              c:identifier="PANGO_SCRIPT_KHAROSHTHI"
-              glib:nick="kharoshthi"/>
-      <member name="unknown"
-              value="61"
-              c:identifier="PANGO_SCRIPT_UNKNOWN"
-              glib:nick="unknown"/>
-      <member name="balinese"
-              value="62"
-              c:identifier="PANGO_SCRIPT_BALINESE"
-              glib:nick="balinese"/>
-      <member name="cuneiform"
-              value="63"
-              c:identifier="PANGO_SCRIPT_CUNEIFORM"
-              glib:nick="cuneiform"/>
-      <member name="phoenician"
-              value="64"
-              c:identifier="PANGO_SCRIPT_PHOENICIAN"
-              glib:nick="phoenician"/>
-      <member name="phags_pa"
-              value="65"
-              c:identifier="PANGO_SCRIPT_PHAGS_PA"
-              glib:nick="phags-pa"/>
-      <member name="nko"
-              value="66"
-              c:identifier="PANGO_SCRIPT_NKO"
-              glib:nick="nko"/>
-      <member name="kayah_li"
-              value="67"
-              c:identifier="PANGO_SCRIPT_KAYAH_LI"
-              glib:nick="kayah-li"/>
-      <member name="lepcha"
-              value="68"
-              c:identifier="PANGO_SCRIPT_LEPCHA"
-              glib:nick="lepcha"/>
-      <member name="rejang"
-              value="69"
-              c:identifier="PANGO_SCRIPT_REJANG"
-              glib:nick="rejang"/>
-      <member name="sundanese"
-              value="70"
-              c:identifier="PANGO_SCRIPT_SUNDANESE"
-              glib:nick="sundanese"/>
-      <member name="saurashtra"
-              value="71"
-              c:identifier="PANGO_SCRIPT_SAURASHTRA"
-              glib:nick="saurashtra"/>
-      <member name="cham"
-              value="72"
-              c:identifier="PANGO_SCRIPT_CHAM"
-              glib:nick="cham"/>
-      <member name="ol_chiki"
-              value="73"
-              c:identifier="PANGO_SCRIPT_OL_CHIKI"
-              glib:nick="ol-chiki"/>
-      <member name="vai"
-              value="74"
-              c:identifier="PANGO_SCRIPT_VAI"
-              glib:nick="vai"/>
-      <member name="carian"
-              value="75"
-              c:identifier="PANGO_SCRIPT_CARIAN"
-              glib:nick="carian"/>
-      <member name="lycian"
-              value="76"
-              c:identifier="PANGO_SCRIPT_LYCIAN"
-              glib:nick="lycian"/>
-      <member name="lydian"
-              value="77"
-              c:identifier="PANGO_SCRIPT_LYDIAN"
-              glib:nick="lydian"/>
-    </enumeration>
-    <record name="ScriptForLang" c:type="_PangoScriptForLang">
-      <field name="lang" writable="1">
-        <array zero-terminated="0" c:type="char" fixed-size="7">
-          <type name="int8"/>
-        </array>
-      </field>
-      <field name="scripts" writable="1">
-        <array zero-terminated="0" c:type="PangoScript" fixed-size="3">
-          <type name="Script"/>
-        </array>
-      </field>
-    </record>
-    <record name="ScriptIter"
-            c:type="PangoScriptIter"
-            doc="A #PangoScriptIter is used to iterate through a string
-and identify ranges in different scripts.">
-      <field name="text_start" writable="1">
-        <type name="utf8" c:type="gchar*"/>
-      </field>
-      <field name="text_end" writable="1">
-        <type name="utf8" c:type="gchar*"/>
-      </field>
-      <field name="script_start" writable="1">
-        <type name="utf8" c:type="gchar*"/>
-      </field>
-      <field name="script_end" writable="1">
-        <type name="utf8" c:type="gchar*"/>
-      </field>
-      <field name="script_code" writable="1">
-        <type name="Script" c:type="PangoScript"/>
-      </field>
-      <field name="paren_stack" writable="1">
-        <array zero-terminated="0" c:type="ParenStackEntry" fixed-size="128">
-          <type name="ParenStackEntry"/>
-        </array>
-      </field>
-      <field name="paren_sp" writable="1">
-        <type name="int" c:type="int"/>
-      </field>
-      <constructor name="new"
-                   c:identifier="pango_script_iter_new"
-                   doc="Create a new #PangoScriptIter, used to break a string of
-Unicode into runs by text. No copy is made of @text, so
-the caller needs to make sure it remains valid until
-the iterator is freed with pango_script_iter_free().
-to point at the first range in the text, which should be
-freed with pango_script_iter_free(). If the string is
-empty, it will point at an empty range."
-                   version="1.4">
-        <return-value transfer-ownership="full">
-          <type name="ScriptIter" c:type="PangoScriptIter*"/>
-        </return-value>
-        <parameters>
-          <parameter name="text" transfer-ownership="none">
-            <type name="utf8" c:type="char*"/>
-          </parameter>
-          <parameter name="length" transfer-ownership="none">
-            <type name="int" c:type="int"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <method name="get_range"
-              c:identifier="pango_script_iter_get_range"
-              doc="Gets information about the range to which @iter currently points.
-The range is the set of locations p where *start &lt;= p &lt; *end.
-(That is, it doesn&apos;t include the character stored at *end)"
-              version="1.4">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="start" transfer-ownership="none">
-            <array c:type="char**">
-              <type name="utf8"/>
-            </array>
-          </parameter>
-          <parameter name="end" transfer-ownership="none">
-            <array c:type="char**">
-              <type name="utf8"/>
-            </array>
-          </parameter>
-          <parameter name="script" transfer-ownership="none">
-            <type name="Script" c:type="PangoScript*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="next"
-              c:identifier="pango_script_iter_next"
-              doc="Advances a #PangoScriptIter to the next range. If @iter
-is already at the end, it is left unchanged and %FALSE
-is returned."
-              version="1.4">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </method>
-      <method name="free"
-              c:identifier="pango_script_iter_free"
-              doc="Frees a #PangoScriptIter created with pango_script_iter_new()."
-              version="1.4">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-    </record>
-    <enumeration name="Stretch"
-                 glib:type-name="PangoStretch"
-                 glib:get-type="pango_stretch_get_type"
-                 c:type="PangoStretch">
-      <member name="ultra_condensed"
-              value="0"
-              c:identifier="PANGO_STRETCH_ULTRA_CONDENSED"
-              glib:nick="ultra-condensed"/>
-      <member name="extra_condensed"
-              value="1"
-              c:identifier="PANGO_STRETCH_EXTRA_CONDENSED"
-              glib:nick="extra-condensed"/>
-      <member name="condensed"
-              value="2"
-              c:identifier="PANGO_STRETCH_CONDENSED"
-              glib:nick="condensed"/>
-      <member name="semi_condensed"
-              value="3"
-              c:identifier="PANGO_STRETCH_SEMI_CONDENSED"
-              glib:nick="semi-condensed"/>
-      <member name="normal"
-              value="4"
-              c:identifier="PANGO_STRETCH_NORMAL"
-              glib:nick="normal"/>
-      <member name="semi_expanded"
-              value="5"
-              c:identifier="PANGO_STRETCH_SEMI_EXPANDED"
-              glib:nick="semi-expanded"/>
-      <member name="expanded"
-              value="6"
-              c:identifier="PANGO_STRETCH_EXPANDED"
-              glib:nick="expanded"/>
-      <member name="extra_expanded"
-              value="7"
-              c:identifier="PANGO_STRETCH_EXTRA_EXPANDED"
-              glib:nick="extra-expanded"/>
-      <member name="ultra_expanded"
-              value="8"
-              c:identifier="PANGO_STRETCH_ULTRA_EXPANDED"
-              glib:nick="ultra-expanded"/>
-    </enumeration>
-    <enumeration name="Style"
-                 doc="An enumeration specifying the various slant styles possible for a font."
-                 glib:type-name="PangoStyle"
-                 glib:get-type="pango_style_get_type"
-                 c:type="PangoStyle">
-      <member name="normal"
-              value="0"
-              c:identifier="PANGO_STYLE_NORMAL"
-              glib:nick="normal"/>
-      <member name="oblique"
-              value="1"
-              c:identifier="PANGO_STYLE_OBLIQUE"
-              glib:nick="oblique"/>
-      <member name="italic"
-              value="2"
-              c:identifier="PANGO_STYLE_ITALIC"
-              glib:nick="italic"/>
-    </enumeration>
-    <enumeration name="TabAlign"
-                 glib:type-name="PangoTabAlign"
-                 glib:get-type="pango_tab_align_get_type"
-                 c:type="PangoTabAlign">
-      <member name="left"
-              value="0"
-              c:identifier="PANGO_TAB_LEFT"
-              glib:nick="left"/>
-    </enumeration>
-    <record name="TabArray"
-            c:type="PangoTabArray"
-            glib:type-name="PangoTabArray"
-            glib:get-type="pango_tab_array_get_type">
-      <constructor name="new"
-                   c:identifier="pango_tab_array_new"
-                   doc="Creates an array of @initial_size tab stops. Tab stops are specified in
-pixel units if @positions_in_pixels is %TRUE, otherwise in Pango
-units. All stops are initially at position 0.
-be freed with pango_tab_array_free().">
-        <return-value transfer-ownership="full">
-          <type name="TabArray" c:type="PangoTabArray*"/>
-        </return-value>
-        <parameters>
-          <parameter name="initial_size" transfer-ownership="none">
-            <type name="int" c:type="gint"/>
-          </parameter>
-          <parameter name="positions_in_pixels" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_with_positions"
-                   c:identifier="pango_tab_array_new_with_positions"
-                   doc="This is a convenience function that creates a #PangoTabArray
-and allows you to specify the alignment and position of each
-tab stop. You &lt;emphasis&gt;must&lt;/emphasis&gt; provide an alignment
-and position for @size tab stops.
-be freed with pango_tab_array_free().">
-        <return-value transfer-ownership="full">
-          <type name="TabArray" c:type="PangoTabArray*"/>
-        </return-value>
-        <parameters>
-          <parameter name="size" transfer-ownership="none">
-            <type name="int" c:type="gint"/>
-          </parameter>
-          <parameter name="positions_in_pixels" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-          <parameter name="first_alignment" transfer-ownership="none">
-            <type name="TabAlign" c:type="PangoTabAlign"/>
-          </parameter>
-          <parameter name="first_position" transfer-ownership="none">
-            <type name="int" c:type="gint"/>
-          </parameter>
-          <parameter transfer-ownership="none">
-            <varargs>
-            </varargs>
-          </parameter>
-        </parameters>
-      </constructor>
-      <method name="copy"
-              c:identifier="pango_tab_array_copy"
-              doc="Copies a #PangoTabArray
-be freed with pango_tab_array_free().">
-        <return-value transfer-ownership="full">
-          <type name="TabArray" c:type="PangoTabArray*"/>
-        </return-value>
-      </method>
-      <method name="free"
-              c:identifier="pango_tab_array_free"
-              doc="Frees a tab array and associated resources.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="get_size"
-              c:identifier="pango_tab_array_get_size"
-              doc="Gets the number of tab stops in @tab_array.">
-        <return-value transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </return-value>
-      </method>
-      <method name="resize"
-              c:identifier="pango_tab_array_resize"
-              doc="Resizes a tab array. You must subsequently initialize any tabs that
-were added as a result of growing the array.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="new_size" transfer-ownership="none">
-            <type name="int" c:type="gint"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_tab"
-              c:identifier="pango_tab_array_set_tab"
-              doc="Sets the alignment and location of a tab stop.
-implementation.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="tab_index" transfer-ownership="none">
-            <type name="int" c:type="gint"/>
-          </parameter>
-          <parameter name="alignment" transfer-ownership="none">
-            <type name="TabAlign" c:type="PangoTabAlign"/>
-          </parameter>
-          <parameter name="location" transfer-ownership="none">
-            <type name="int" c:type="gint"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_tab"
-              c:identifier="pango_tab_array_get_tab"
-              doc="Gets the alignment and position of a tab stop.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="tab_index" transfer-ownership="none">
-            <type name="int" c:type="gint"/>
-          </parameter>
-          <parameter name="alignment" transfer-ownership="none">
-            <type name="TabAlign" c:type="PangoTabAlign*"/>
-          </parameter>
-          <parameter name="location" direction="out" transfer-ownership="full">
-            <type name="int" c:type="gint*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_tabs"
-              c:identifier="pango_tab_array_get_tabs"
-              doc="If non-%NULL, @alignments and @locations are filled with allocated
-arrays of length pango_tab_array_get_size(). You must free the
-returned array.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="alignments" transfer-ownership="none">
-            <type name="TabAlign" c:type="PangoTabAlign**"/>
-          </parameter>
-          <parameter name="locations"
-                     direction="out"
-                     transfer-ownership="full">
-            <type name="int" c:type="gint**"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_positions_in_pixels"
-              c:identifier="pango_tab_array_get_positions_in_pixels"
-              doc="Returns %TRUE if the tab positions are in pixels, %FALSE if they are
-in Pango units.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </method>
-    </record>
-    <constant name="UNKNOWN_GLYPH_HEIGHT" value="14">
-      <type name="int"/>
-    </constant>
-    <constant name="UNKNOWN_GLYPH_WIDTH" value="10">
-      <type name="int"/>
-    </constant>
-    <enumeration name="Underline"
-                 glib:type-name="PangoUnderline"
-                 glib:get-type="pango_underline_get_type"
-                 c:type="PangoUnderline">
-      <member name="none"
-              value="0"
-              c:identifier="PANGO_UNDERLINE_NONE"
-              glib:nick="none"/>
-      <member name="single"
-              value="1"
-              c:identifier="PANGO_UNDERLINE_SINGLE"
-              glib:nick="single"/>
-      <member name="double"
-              value="2"
-              c:identifier="PANGO_UNDERLINE_DOUBLE"
-              glib:nick="double"/>
-      <member name="low"
-              value="3"
-              c:identifier="PANGO_UNDERLINE_LOW"
-              glib:nick="low"/>
-      <member name="error"
-              value="4"
-              c:identifier="PANGO_UNDERLINE_ERROR"
-              glib:nick="error"/>
-    </enumeration>
-    <enumeration name="Variant"
-                 glib:type-name="PangoVariant"
-                 glib:get-type="pango_variant_get_type"
-                 c:type="PangoVariant">
-      <member name="normal"
-              value="0"
-              c:identifier="PANGO_VARIANT_NORMAL"
-              glib:nick="normal"/>
-      <member name="small_caps"
-              value="1"
-              c:identifier="PANGO_VARIANT_SMALL_CAPS"
-              glib:nick="small-caps"/>
-    </enumeration>
-    <enumeration name="Weight"
-                 glib:type-name="PangoWeight"
-                 glib:get-type="pango_weight_get_type"
-                 c:type="PangoWeight">
-      <member name="thin"
-              value="100"
-              c:identifier="PANGO_WEIGHT_THIN"
-              glib:nick="thin"/>
-      <member name="ultralight"
-              value="200"
-              c:identifier="PANGO_WEIGHT_ULTRALIGHT"
-              glib:nick="ultralight"/>
-      <member name="light"
-              value="300"
-              c:identifier="PANGO_WEIGHT_LIGHT"
-              glib:nick="light"/>
-      <member name="book"
-              value="380"
-              c:identifier="PANGO_WEIGHT_BOOK"
-              glib:nick="book"/>
-      <member name="normal"
-              value="400"
-              c:identifier="PANGO_WEIGHT_NORMAL"
-              glib:nick="normal"/>
-      <member name="medium"
-              value="500"
-              c:identifier="PANGO_WEIGHT_MEDIUM"
-              glib:nick="medium"/>
-      <member name="semibold"
-              value="600"
-              c:identifier="PANGO_WEIGHT_SEMIBOLD"
-              glib:nick="semibold"/>
-      <member name="bold"
-              value="700"
-              c:identifier="PANGO_WEIGHT_BOLD"
-              glib:nick="bold"/>
-      <member name="ultrabold"
-              value="800"
-              c:identifier="PANGO_WEIGHT_ULTRABOLD"
-              glib:nick="ultrabold"/>
-      <member name="heavy"
-              value="900"
-              c:identifier="PANGO_WEIGHT_HEAVY"
-              glib:nick="heavy"/>
-      <member name="ultraheavy"
-              value="1000"
-              c:identifier="PANGO_WEIGHT_ULTRAHEAVY"
-              glib:nick="ultraheavy"/>
-    </enumeration>
-    <enumeration name="WrapMode"
-                 glib:type-name="PangoWrapMode"
-                 glib:get-type="pango_wrap_mode_get_type"
-                 c:type="PangoWrapMode">
-      <member name="word"
-              value="0"
-              c:identifier="PANGO_WRAP_WORD"
-              glib:nick="word"/>
-      <member name="char"
-              value="1"
-              c:identifier="PANGO_WRAP_CHAR"
-              glib:nick="char"/>
-      <member name="word_char"
-              value="2"
-              c:identifier="PANGO_WRAP_WORD_CHAR"
-              glib:nick="word-char"/>
-    </enumeration>
-    <function name="attr_background_new"
-              c:identifier="pango_attr_background_new"
-              doc="Create a new background color attribute.
-freed with pango_attribute_destroy().">
-      <return-value transfer-ownership="full">
-        <type name="Attribute" c:type="PangoAttribute*"/>
-      </return-value>
-      <parameters>
-        <parameter name="red" transfer-ownership="none">
-          <type name="uint16" c:type="guint16"/>
-        </parameter>
-        <parameter name="green" transfer-ownership="none">
-          <type name="uint16" c:type="guint16"/>
-        </parameter>
-        <parameter name="blue" transfer-ownership="none">
-          <type name="uint16" c:type="guint16"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="attr_fallback_new"
-              c:identifier="pango_attr_fallback_new"
-              doc="for characters the active font is missing.
-Create a new font fallback attribute.
-If fallback is disabled, characters will only be used from the
-closest matching font on the system. No fallback will be done to
-other fonts on the system that might contain the characters in the
-text.
-freed with pango_attribute_destroy()."
-              version="1.4">
-      <return-value transfer-ownership="full">
-        <type name="Attribute" c:type="PangoAttribute*"/>
-      </return-value>
-      <parameters>
-        <parameter name="enable_fallback" transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="attr_family_new"
-              c:identifier="pango_attr_family_new"
-              doc="Create a new font family attribute.
-freed with pango_attribute_destroy().">
-      <return-value transfer-ownership="full">
-        <type name="Attribute" c:type="PangoAttribute*"/>
-      </return-value>
-      <parameters>
-        <parameter name="family" transfer-ownership="none">
-          <type name="utf8" c:type="char*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="attr_foreground_new"
-              c:identifier="pango_attr_foreground_new"
-              doc="Create a new foreground color attribute.
-freed with pango_attribute_destroy().">
-      <return-value transfer-ownership="full">
-        <type name="Attribute" c:type="PangoAttribute*"/>
-      </return-value>
-      <parameters>
-        <parameter name="red" transfer-ownership="none">
-          <type name="uint16" c:type="guint16"/>
-        </parameter>
-        <parameter name="green" transfer-ownership="none">
-          <type name="uint16" c:type="guint16"/>
-        </parameter>
-        <parameter name="blue" transfer-ownership="none">
-          <type name="uint16" c:type="guint16"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="attr_gravity_hint_new"
-              c:identifier="pango_attr_gravity_hint_new"
-              doc="Create a new gravity hint attribute.
-freed with pango_attribute_destroy()."
-              version="1.16">
-      <return-value transfer-ownership="full">
-        <type name="Attribute" c:type="PangoAttribute*"/>
-      </return-value>
-      <parameters>
-        <parameter name="hint" transfer-ownership="none">
-          <type name="GravityHint" c:type="PangoGravityHint"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="attr_gravity_new"
-              c:identifier="pango_attr_gravity_new"
-              doc="Create a new gravity attribute.
-freed with pango_attribute_destroy()."
-              version="1.16">
-      <return-value transfer-ownership="full">
-        <type name="Attribute" c:type="PangoAttribute*"/>
-      </return-value>
-      <parameters>
-        <parameter name="gravity" transfer-ownership="none">
-          <type name="Gravity" c:type="PangoGravity"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="attr_letter_spacing_new"
-              c:identifier="pango_attr_letter_spacing_new"
-              doc="of the text, in Pango units.
-Create a new letter-spacing attribute.
-freed with pango_attribute_destroy()."
-              version="1.6">
-      <return-value transfer-ownership="full">
-        <type name="Attribute" c:type="PangoAttribute*"/>
-      </return-value>
-      <parameters>
-        <parameter name="letter_spacing" transfer-ownership="none">
-          <type name="int" c:type="int"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="attr_rise_new"
-              c:identifier="pango_attr_rise_new"
-              doc="in Pango units. Positive values displace the text upwards.
-Create a new baseline displacement attribute.
-freed with pango_attribute_destroy().">
-      <return-value transfer-ownership="full">
-        <type name="Attribute" c:type="PangoAttribute*"/>
-      </return-value>
-      <parameters>
-        <parameter name="rise" transfer-ownership="none">
-          <type name="int" c:type="int"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="attr_scale_new"
-              c:identifier="pango_attr_scale_new"
-              doc="Create a new font size scale attribute. The base font for the
-affected text will have its size multiplied by @scale_factor.
-freed with pango_attribute_destroy().">
-      <return-value transfer-ownership="full">
-        <type name="Attribute" c:type="PangoAttribute*"/>
-      </return-value>
-      <parameters>
-        <parameter name="scale_factor" transfer-ownership="none">
-          <type name="double" c:type="double"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="attr_stretch_new"
-              c:identifier="pango_attr_stretch_new"
-              doc="Create a new font stretch attribute
-freed with pango_attribute_destroy().">
-      <return-value transfer-ownership="full">
-        <type name="Attribute" c:type="PangoAttribute*"/>
-      </return-value>
-      <parameters>
-        <parameter name="stretch" transfer-ownership="none">
-          <type name="Stretch" c:type="PangoStretch"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="attr_strikethrough_color_new"
-              c:identifier="pango_attr_strikethrough_color_new"
-              doc="Create a new strikethrough color attribute. This attribute
-modifies the color of strikethrough lines. If not set, strikethrough
-lines will use the foreground color.
-freed with pango_attribute_destroy()."
-              version="1.8">
-      <return-value transfer-ownership="full">
-        <type name="Attribute" c:type="PangoAttribute*"/>
-      </return-value>
-      <parameters>
-        <parameter name="red" transfer-ownership="none">
-          <type name="uint16" c:type="guint16"/>
-        </parameter>
-        <parameter name="green" transfer-ownership="none">
-          <type name="uint16" c:type="guint16"/>
-        </parameter>
-        <parameter name="blue" transfer-ownership="none">
-          <type name="uint16" c:type="guint16"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="attr_strikethrough_new"
-              c:identifier="pango_attr_strikethrough_new"
-              doc="Create a new strike-through attribute.
-freed with pango_attribute_destroy().">
-      <return-value transfer-ownership="full">
-        <type name="Attribute" c:type="PangoAttribute*"/>
-      </return-value>
-      <parameters>
-        <parameter name="strikethrough" transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="attr_style_new"
-              c:identifier="pango_attr_style_new"
-              doc="Create a new font slant style attribute.
-freed with pango_attribute_destroy().">
-      <return-value transfer-ownership="full">
-        <type name="Attribute" c:type="PangoAttribute*"/>
-      </return-value>
-      <parameters>
-        <parameter name="style" transfer-ownership="none">
-          <type name="Style" c:type="PangoStyle"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="attr_type_get_name"
-              c:identifier="pango_attr_type_get_name"
-              doc="Fetches the attribute type name passed in when registering the type using
-pango_attr_type_register().
-The returned value is an interned string (see g_intern_string() for what
-that means) that should not be modified or freed.
-a built-in Pango attribute type or invalid."
-              version="1.22">
-      <return-value transfer-ownership="none" doc="or %NULL if @type is">
-        <type name="utf8" c:type="char*"/>
-      </return-value>
-      <parameters>
-        <parameter name="type" transfer-ownership="none">
-          <type name="AttrType" c:type="PangoAttrType"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="attr_type_register"
-              c:identifier="pango_attr_type_register"
-              doc="Allocate a new attribute type ID.  The attribute type name can be accessed
-later by using pango_attr_type_get_name().">
-      <return-value transfer-ownership="full">
-        <type name="AttrType" c:type="PangoAttrType"/>
-      </return-value>
-      <parameters>
-        <parameter name="name" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="attr_underline_color_new"
-              c:identifier="pango_attr_underline_color_new"
-              doc="Create a new underline color attribute. This attribute
-modifies the color of underlines. If not set, underlines
-will use the foreground color.
-freed with pango_attribute_destroy()."
-              version="1.8">
-      <return-value transfer-ownership="full">
-        <type name="Attribute" c:type="PangoAttribute*"/>
-      </return-value>
-      <parameters>
-        <parameter name="red" transfer-ownership="none">
-          <type name="uint16" c:type="guint16"/>
-        </parameter>
-        <parameter name="green" transfer-ownership="none">
-          <type name="uint16" c:type="guint16"/>
-        </parameter>
-        <parameter name="blue" transfer-ownership="none">
-          <type name="uint16" c:type="guint16"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="attr_underline_new"
-              c:identifier="pango_attr_underline_new"
-              doc="Create a new underline-style attribute.
-freed with pango_attribute_destroy().">
-      <return-value transfer-ownership="full">
-        <type name="Attribute" c:type="PangoAttribute*"/>
-      </return-value>
-      <parameters>
-        <parameter name="underline" transfer-ownership="none">
-          <type name="Underline" c:type="PangoUnderline"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="attr_variant_new"
-              c:identifier="pango_attr_variant_new"
-              doc="Create a new font variant attribute (normal or small caps)
-freed with pango_attribute_destroy().">
-      <return-value transfer-ownership="full">
-        <type name="Attribute" c:type="PangoAttribute*"/>
-      </return-value>
-      <parameters>
-        <parameter name="variant" transfer-ownership="none">
-          <type name="Variant" c:type="PangoVariant"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="attr_weight_new"
-              c:identifier="pango_attr_weight_new"
-              doc="Create a new font weight attribute.
-freed with pango_attribute_destroy().">
-      <return-value transfer-ownership="full">
-        <type name="Attribute" c:type="PangoAttribute*"/>
-      </return-value>
-      <parameters>
-        <parameter name="weight" transfer-ownership="none">
-          <type name="Weight" c:type="PangoWeight"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="bidi_type_for_unichar"
-              c:identifier="pango_bidi_type_for_unichar">
-      <return-value transfer-ownership="full">
-        <type name="BidiType" c:type="PangoBidiType"/>
-      </return-value>
-      <parameters>
-        <parameter name="ch" transfer-ownership="none">
-          <type name="GLib.unichar" c:type="gunichar"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="break"
-              c:identifier="pango_break"
-              doc="Determines possible line, word, and character breaks
-for a string of Unicode text with a single analysis.  For most
-purposes you may want to use pango_get_log_attrs().">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="text" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-        <parameter name="length" transfer-ownership="none">
-          <type name="int" c:type="int"/>
-        </parameter>
-        <parameter name="analysis" transfer-ownership="none">
-          <type name="Analysis" c:type="PangoAnalysis*"/>
-        </parameter>
-        <parameter name="attrs" transfer-ownership="none">
-          <type name="LogAttr" c:type="PangoLogAttr*"/>
-        </parameter>
-        <parameter name="attrs_len" transfer-ownership="none">
-          <type name="int" c:type="int"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="coverage_from_bytes"
-              c:identifier="pango_coverage_from_bytes"
-              doc="Convert data generated from pango_converage_to_bytes() back
-to a #PangoCoverage
-the data was invalid.">
-      <return-value transfer-ownership="full">
-        <type name="Coverage" c:type="PangoCoverage*"/>
-      </return-value>
-      <parameters>
-        <parameter name="bytes" transfer-ownership="none">
-          <array c:type="guchar*">
-            <type name="uint8"/>
-          </array>
-        </parameter>
-        <parameter name="n_bytes" transfer-ownership="none">
-          <type name="int" c:type="int"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="extents_to_pixels"
-              c:identifier="pango_extents_to_pixels"
-              doc="Converts extents from Pango units to device units, dividing by the
-%PANGO_SCALE factor and performing rounding.
-The @inclusive rectangle is converted by flooring the x/y coordinates and extending
-width/height, such that the final rectangle completely includes the original
-rectangle.
-The @nearest rectangle is converted by rounding the coordinates
-of the rectangle to the nearest device unit (pixel).
-rectangle to completely contain the original rectangle, pass it in as @inclusive.
-If you want two touching-but-not-overlapping rectangles stay
-touching-but-not-overlapping after rounding to device units, pass them in
-as @nearest."
-              version="1.16">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="inclusive" transfer-ownership="none">
-          <type name="Rectangle" c:type="PangoRectangle*"/>
-        </parameter>
-        <parameter name="nearest" transfer-ownership="none">
-          <type name="Rectangle" c:type="PangoRectangle*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="find_base_dir"
-              c:identifier="pango_find_base_dir"
-              doc="Searches a string the first character that has a strong
-direction, according to the Unicode bidirectional algorithm.
-If no such character is found, then %PANGO_DIRECTION_NEUTRAL is returned."
-              version="1.4">
-      <return-value transfer-ownership="full">
-        <type name="Direction" c:type="PangoDirection"/>
-      </return-value>
-      <parameters>
-        <parameter name="text" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-        <parameter name="length" transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="find_paragraph_boundary"
-              c:identifier="pango_find_paragraph_boundary"
-              doc="Locates a paragraph boundary in @text. A boundary is caused by
-delimiter characters, such as a newline, carriage return, carriage
-return-newline pair, or Unicode paragraph separator character.  The
-index of the run of delimiters is returned in
-(index after all delimiters) is stored in @next_paragraph_start.
-If no delimiters are found, both @paragraph_delimiter_index and
-off the end).">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="text" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-        <parameter name="length" transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </parameter>
-        <parameter name="paragraph_delimiter_index"
-                   direction="out"
-                   transfer-ownership="full">
-          <type name="int" c:type="gint*"/>
-        </parameter>
-        <parameter name="next_paragraph_start"
-                   direction="out"
-                   transfer-ownership="full">
-          <type name="int" c:type="gint*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="get_log_attrs"
-              c:identifier="pango_get_log_attrs"
-              doc="Computes a #PangoLogAttr for each character in @text. The @log_attrs
-array must have one #PangoLogAttr for each position in @text; if
-last position at the end of the text. @text should be an entire
-paragraph; logical attributes can&apos;t be computed without context
-(for example you need to see spaces on either side of a word to know
-the word is a word).">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="text" transfer-ownership="none">
-          <type name="utf8" c:type="char*"/>
-        </parameter>
-        <parameter name="length" transfer-ownership="none">
-          <type name="int" c:type="int"/>
-        </parameter>
-        <parameter name="level" transfer-ownership="none">
-          <type name="int" c:type="int"/>
-        </parameter>
-        <parameter name="language" transfer-ownership="none">
-          <type name="Language" c:type="PangoLanguage*"/>
-        </parameter>
-        <parameter name="log_attrs" transfer-ownership="none">
-          <type name="LogAttr" c:type="PangoLogAttr*"/>
-        </parameter>
-        <parameter name="attrs_len" transfer-ownership="none">
-          <type name="int" c:type="int"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="get_mirror_char"
-              c:identifier="pango_get_mirror_char"
-              doc="If @ch has the Unicode mirrored property and there is another Unicode
-character that typically has a glyph that is the mirror image of @ch&apos;s
-glyph, puts that character in the address pointed to by @mirrored_ch.
-Use g_unichar_get_mirror_char() instead; the docs for that function
-provide full details.
-filled in, %FALSE otherwise">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="ch" transfer-ownership="none">
-          <type name="GLib.unichar" c:type="gunichar"/>
-        </parameter>
-        <parameter name="mirrored_ch" transfer-ownership="none">
-          <type name="GLib.unichar" c:type="gunichar*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="gravity_get_for_matrix"
-              c:identifier="pango_gravity_get_for_matrix"
-              doc="Finds the gravity that best matches the rotation component
-in a #PangoMatrix.
-%PANGO_GRAVITY_AUTO, or %PANGO_GRAVITY_SOUTH if @matrix is %NULL"
-              version="1.16">
-      <return-value transfer-ownership="full">
-        <type name="Gravity" c:type="PangoGravity"/>
-      </return-value>
-      <parameters>
-        <parameter name="matrix" transfer-ownership="none">
-          <type name="Matrix" c:type="PangoMatrix*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="gravity_get_for_script"
-              c:identifier="pango_gravity_get_for_script"
-              doc="Based on the script, base gravity, and hint, returns actual gravity
-to use in laying out a single #PangoItem.
-If @base_gravity is %PANGO_GRAVITY_AUTO, it is first replaced with the
-preferred gravity of @script.  To get the preferred gravity of a script,
-pass %PANGO_GRAVITY_AUTO and %PANGO_GRAVITY_HINT_STRONG in.
-with @script."
-              version="1.16">
-      <return-value transfer-ownership="full">
-        <type name="Gravity" c:type="PangoGravity"/>
-      </return-value>
-      <parameters>
-        <parameter name="script" transfer-ownership="none">
-          <type name="Script" c:type="PangoScript"/>
-        </parameter>
-        <parameter name="base_gravity" transfer-ownership="none">
-          <type name="Gravity" c:type="PangoGravity"/>
-        </parameter>
-        <parameter name="hint" transfer-ownership="none">
-          <type name="GravityHint" c:type="PangoGravityHint"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="gravity_get_for_script_and_width"
-              c:identifier="pango_gravity_get_for_script_and_width"
-              doc="Based on the script, East Asian width, base gravity, and hint,
-returns actual gravity to use in laying out a single character
-or #PangoItem.
-This function is similar to pango_gravity_get_for_script() except
-that this function makes a distinction between narrow/half-width and
-wide/full-width characters also.  Wide/full-width characters always
-stand &lt;emph&gt;upright&lt;/emph&gt;, that is, they always take the base gravity,
-whereas narrow/full-width characters are always rotated in vertical
-context.
-If @base_gravity is %PANGO_GRAVITY_AUTO, it is first replaced with the
-preferred gravity of @script.
-with @script and @wide."
-              version="1.26">
-      <return-value transfer-ownership="full">
-        <type name="Gravity" c:type="PangoGravity"/>
-      </return-value>
-      <parameters>
-        <parameter name="script" transfer-ownership="none">
-          <type name="Script" c:type="PangoScript"/>
-        </parameter>
-        <parameter name="wide" transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </parameter>
-        <parameter name="base_gravity" transfer-ownership="none">
-          <type name="Gravity" c:type="PangoGravity"/>
-        </parameter>
-        <parameter name="hint" transfer-ownership="none">
-          <type name="GravityHint" c:type="PangoGravityHint"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="gravity_to_rotation"
-              c:identifier="pango_gravity_to_rotation"
-              doc="Converts a #PangoGravity value to its natural rotation in radians.
-Note that pango_matrix_rotate() takes angle in degrees, not radians.
-So, to call pango_matrix_rotate() with the output of this function
-you should multiply it by (180. / G_PI)."
-              version="1.16">
-      <return-value transfer-ownership="none">
-        <type name="double" c:type="double"/>
-      </return-value>
-      <parameters>
-        <parameter name="gravity" transfer-ownership="none">
-          <type name="Gravity" c:type="PangoGravity"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="is_zero_width"
-              c:identifier="pango_is_zero_width"
-              doc="Checks @ch to see if it is a character that should not be
-normally rendered on the screen.  This includes all Unicode characters
-with &quot;ZERO WIDTH&quot; in their name, as well as &lt;firstterm&gt;bidi&lt;/firstterm&gt; formatting characters, and
-a few other ones.  This is totally different from g_unichar_iszerowidth()
-and is at best misnamed."
-              version="1.10">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="ch" transfer-ownership="none">
-          <type name="GLib.unichar" c:type="gunichar"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="itemize"
-              c:identifier="pango_itemize"
-              doc="e itemization process.
-after @start_index.
-This must be &gt;= 0.
-Breaks a piece of text into segments with consistent
-directional level and shaping engine. Each byte of @text will
-be contained in exactly one of the items in the returned list;
-the generated list of items will be in logical order (the start
-offsets of the items are ascending).
-range before or containing @start_index; @cached_iter will be advanced to
-the range covering the position just after @start_index + @length.
-(i.e. if itemizing in a loop, just keep passing in the same @cached_iter).">
-      <return-value transfer-ownership="full">
-        <type name="GLib.List" c:type="GList*"/>
-      </return-value>
-      <parameters>
-        <parameter name="context" transfer-ownership="none">
-          <type name="Context" c:type="PangoContext*"/>
-        </parameter>
-        <parameter name="text" transfer-ownership="none">
-          <type name="utf8" c:type="char*"/>
-        </parameter>
-        <parameter name="start_index" transfer-ownership="none">
-          <type name="int" c:type="int"/>
-        </parameter>
-        <parameter name="length" transfer-ownership="none" doc="to process">
-          <type name="int" c:type="int"/>
-        </parameter>
-        <parameter name="attrs" transfer-ownership="none">
-          <type name="AttrList" c:type="PangoAttrList*"/>
-        </parameter>
-        <parameter name="cached_iter" transfer-ownership="none">
-          <type name="AttrIterator" c:type="PangoAttrIterator*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="itemize_with_base_dir"
-              c:identifier="pango_itemize_with_base_dir"
-              doc="e itemization process.
-after @start_index.
-This must be &gt;= 0.
-Like pango_itemize(), but the base direction to use when
-computing bidirectional levels (see pango_context_set_base_dir ()),
-is specified explicitly rather than gotten from the #PangoContext.
-freed using pango_item_free() probably in combination with g_list_foreach(),
-and the list itself using g_list_free()."
-              version="1.4">
-      <return-value transfer-ownership="full">
-        <type name="GLib.List" c:type="GList*"/>
-      </return-value>
-      <parameters>
-        <parameter name="context" transfer-ownership="none">
-          <type name="Context" c:type="PangoContext*"/>
-        </parameter>
-        <parameter name="base_dir" transfer-ownership="none">
-          <type name="Direction" c:type="PangoDirection"/>
-        </parameter>
-        <parameter name="text" transfer-ownership="none">
-          <type name="utf8" c:type="char*"/>
-        </parameter>
-        <parameter name="start_index" transfer-ownership="none">
-          <type name="int" c:type="int"/>
-        </parameter>
-        <parameter name="length" transfer-ownership="none" doc="to process">
-          <type name="int" c:type="int"/>
-        </parameter>
-        <parameter name="attrs" transfer-ownership="none">
-          <type name="AttrList" c:type="PangoAttrList*"/>
-        </parameter>
-        <parameter name="cached_iter" transfer-ownership="none">
-          <type name="AttrIterator" c:type="PangoAttrIterator*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="language_from_string"
-              c:identifier="pango_language_from_string"
-              doc="Take a RFC-3066 format language tag as a string and convert it to a
-#PangoLanguage pointer that can be efficiently copied (copy the
-pointer) and compared with other language tags (compare the
-pointer.)
-This function first canonicalizes the string by converting it to
-lowercase, mapping &apos;_&apos; to &apos;-&apos;, and stripping all characters other
-than letters and &apos;-&apos;.
-Use pango_language_get_default() if you want to get the #PangoLanguage for
-the current locale of the process.
-if @language was %NULL.  The returned pointer will be valid
-forever after, and should not be freed.">
-      <return-value transfer-ownership="full">
-        <type name="Language" c:type="PangoLanguage*"/>
-      </return-value>
-      <parameters>
-        <parameter name="language" transfer-ownership="none">
-          <type name="utf8" c:type="char*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="language_get_default"
-              c:identifier="pango_language_get_default"
-              doc="Returns the #PangoLanguage for the current locale of the process.
-Note that this can change over the life of an application.
-On Unix systems, this is the return value is derived from
-&lt;literal&gt;setlocale(LC_CTYPE, NULL)&lt;/literal&gt;, and the user can
-affect this through the environment variables LC_ALL, LC_CTYPE or
-LANG (checked in that order). The locale string typically is in
-the form lang_COUNTRY, where lang is an ISO-639 language code, and
-COUNTRY is an ISO-3166 country code. For instance, sv_FI for
-Swedish as written in Finland or pt_BR for Portuguese as written in
-Brazil.
-On Windows, the C library does not use any such environment
-variables, and setting them won&apos;t affect the behavior of functions
-like ctime(). The user sets the locale through the Regional Options
-in the Control Panel. The C library (in the setlocale() function)
-does not use country and language codes, but country and language
-names spelled out in English.
-However, this function does check the above environment
-variables, and does return a Unix-style locale string based on
-either said environment variables or the thread&apos;s current locale.
-Your application should call &lt;literal&gt;setlocale(LC_ALL, &quot;&quot;);&lt;/literal&gt;
-for the user settings to take effect.  Gtk+ does this in its initialization
-functions automatically (by calling gtk_set_locale()).
-See &lt;literal&gt;man setlocale&lt;/literal&gt; for more details.
-freed."
-              version="1.16">
-      <return-value transfer-ownership="full">
-        <type name="Language" c:type="PangoLanguage*"/>
-      </return-value>
-    </function>
-    <function name="log2vis_get_embedding_levels"
-              c:identifier="pango_log2vis_get_embedding_levels"
-              doc="if @text is nul-terminated and the length should be calculated.
-This will return the bidirectional embedding levels of the input paragraph
-as defined by the Unicode Bidirectional Algorithm available at:
-http://www.unicode.org/reports/tr9/
-If the input base direction is a weak direction, the direction of the
-characters in the text will determine the final resolved direction.
-character (not byte), that should be freed using g_free."
-              version="1.4">
-      <return-value transfer-ownership="full">
-        <array c:type="guint8*">
-          <type name="uint8"/>
-        </array>
-      </return-value>
-      <parameters>
-        <parameter name="text" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-        <parameter name="length"
-                   transfer-ownership="none"
-                   doc="to process, or -1">
-          <type name="int" c:type="int"/>
-        </parameter>
-        <parameter name="pbase_dir" transfer-ownership="none">
-          <type name="Direction" c:type="PangoDirection*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="parse_enum"
-              c:identifier="pango_parse_enum"
-              doc="Parses an enum type and stores the result in @value.
-If @str does not match the nick name of any of the possible values for the
-enum and is not an integer, %FALSE is returned, a warning is issued
-if @warn is %TRUE, and a
-string representing the list of possible values is stored in
-&quot;none/start/middle/end&quot;.  If failed and @possible_values is not %NULL,
-returned string should be freed using g_free()."
-              version="1.16">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="type" transfer-ownership="none">
-          <type name="GType" c:type="GType"/>
-        </parameter>
-        <parameter name="str" transfer-ownership="none">
-          <type name="utf8" c:type="char*"/>
-        </parameter>
-        <parameter name="value" direction="out" transfer-ownership="full">
-          <type name="int" c:type="int*"/>
-        </parameter>
-        <parameter name="warn" transfer-ownership="none" doc="on bad input.">
-          <type name="boolean" c:type="gboolean"/>
-        </parameter>
-        <parameter name="possible_values" transfer-ownership="none">
-          <array c:type="char**">
-            <type name="utf8"/>
-          </array>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="parse_markup"
-              c:identifier="pango_parse_markup"
-              doc="Parses marked-up text (see
-&lt;link linkend=&quot;PangoMarkupFormat&quot;&gt;markup format&lt;/link&gt;) to create
-a plain-text string and an attribute list.
-If @accel_marker is nonzero, the given character will mark the
-character following it as an accelerator. For example, @accel_marker
-might be an ampersand or underscore. All characters marked
-as an accelerator will receive a %PANGO_UNDERLINE_LOW attribute,
-and the first character so marked will be returned in @accel_char.
-Two @accel_marker characters following each other produce a single
-literal @accel_marker character.
-If any error happens, none of the output arguments are touched except
-for @error."
-              throws="1">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="markup_text" transfer-ownership="none">
-          <type name="utf8" c:type="char*"/>
-        </parameter>
-        <parameter name="length" transfer-ownership="none">
-          <type name="int" c:type="int"/>
-        </parameter>
-        <parameter name="accel_marker" transfer-ownership="none">
-          <type name="GLib.unichar" c:type="gunichar"/>
-        </parameter>
-        <parameter name="attr_list" transfer-ownership="none">
-          <type name="AttrList" c:type="PangoAttrList**"/>
-        </parameter>
-        <parameter name="text" transfer-ownership="none">
-          <array c:type="char**">
-            <type name="utf8"/>
-          </array>
-        </parameter>
-        <parameter name="accel_char" transfer-ownership="none">
-          <type name="GLib.unichar" c:type="gunichar*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="parse_stretch"
-              c:identifier="pango_parse_stretch"
-              doc="Parses a font stretch. The allowed values are
-&quot;ultra_condensed&quot;, &quot;extra_condensed&quot;, &quot;condensed&quot;,
-&quot;semi_condensed&quot;, &quot;normal&quot;, &quot;semi_expanded&quot;, &quot;expanded&quot;,
-&quot;extra_expanded&quot; and &quot;ultra_expanded&quot;. Case variations are
-ignored and the &apos;_&apos; characters may be omitted.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="str" transfer-ownership="none">
-          <type name="utf8" c:type="char*"/>
-        </parameter>
-        <parameter name="stretch" transfer-ownership="none">
-          <type name="Stretch" c:type="PangoStretch*"/>
-        </parameter>
-        <parameter name="warn" transfer-ownership="none" doc="on bad input.">
-          <type name="boolean" c:type="gboolean"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="parse_style"
-              c:identifier="pango_parse_style"
-              doc="Parses a font style. The allowed values are &quot;normal&quot;,
-&quot;italic&quot; and &quot;oblique&quot;, case variations being
-ignored.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="str" transfer-ownership="none">
-          <type name="utf8" c:type="char*"/>
-        </parameter>
-        <parameter name="style" transfer-ownership="none">
-          <type name="Style" c:type="PangoStyle*"/>
-        </parameter>
-        <parameter name="warn" transfer-ownership="none" doc="on bad input.">
-          <type name="boolean" c:type="gboolean"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="parse_variant"
-              c:identifier="pango_parse_variant"
-              doc="Parses a font variant. The allowed values are &quot;normal&quot;
-and &quot;smallcaps&quot; or &quot;small_caps&quot;, case variations being
-ignored.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="str" transfer-ownership="none">
-          <type name="utf8" c:type="char*"/>
-        </parameter>
-        <parameter name="variant" transfer-ownership="none">
-          <type name="Variant" c:type="PangoVariant*"/>
-        </parameter>
-        <parameter name="warn" transfer-ownership="none" doc="on bad input.">
-          <type name="boolean" c:type="gboolean"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="parse_weight"
-              c:identifier="pango_parse_weight"
-              doc="Parses a font weight. The allowed values are &quot;heavy&quot;,
-&quot;ultrabold&quot;, &quot;bold&quot;, &quot;normal&quot;, &quot;light&quot;, &quot;ultraleight&quot;
-and integers. Case variations are ignored.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="str" transfer-ownership="none">
-          <type name="utf8" c:type="char*"/>
-        </parameter>
-        <parameter name="weight" transfer-ownership="none">
-          <type name="Weight" c:type="PangoWeight*"/>
-        </parameter>
-        <parameter name="warn" transfer-ownership="none" doc="on bad input.">
-          <type name="boolean" c:type="gboolean"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="quantize_line_geometry"
-              c:identifier="pango_quantize_line_geometry"
-              doc="Quantizes the thickness and position of a line, typically an
-underline or strikethrough, to whole device pixels, that is integer
-multiples of %PANGO_SCALE. The purpose of this function is to avoid
-such lines looking blurry.
-Care is taken to make sure @thickness is at least one pixel when this
-function returns, but returned @position may become zero as a result
-of rounding."
-              version="1.12">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="thickness" direction="out" transfer-ownership="full">
-          <type name="int" c:type="int*"/>
-        </parameter>
-        <parameter name="position" direction="out" transfer-ownership="full">
-          <type name="int" c:type="int*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="reorder_items"
-              c:identifier="pango_reorder_items"
-              doc="From a list of items in logical order and the associated
-directional levels, produce a list in visual order.
-The original list is unmodified.
-(Please open a bug if you use this function.
-It is not a particularly convenient interface, and the code
-is duplicated elsewhere in Pango for that reason.)">
-      <return-value transfer-ownership="full">
-        <type name="GLib.List" c:type="GList*"/>
-      </return-value>
-      <parameters>
-        <parameter name="logical_items" transfer-ownership="none">
-          <type name="GLib.List" c:type="GList*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="scan_int"
-              c:identifier="pango_scan_int"
-              doc="Scans an integer.
-Leading white space is skipped.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="pos" transfer-ownership="none">
-          <array c:type="char**">
-            <type name="utf8"/>
-          </array>
-        </parameter>
-        <parameter name="out" direction="out" transfer-ownership="full">
-          <type name="int" c:type="int*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="scan_string"
-              c:identifier="pango_scan_string"
-              doc="Scans a string into a #GString buffer. The string may either
-be a sequence of non-white-space characters, or a quoted
-string with &apos;&quot;&apos;. Instead a quoted string, &apos;\&quot;&apos; represents
-a literal quote. Leading white space outside of quotes is skipped.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="pos" transfer-ownership="none">
-          <array c:type="char**">
-            <type name="utf8"/>
-          </array>
-        </parameter>
-        <parameter name="out" transfer-ownership="none">
-          <type name="GLib.String" c:type="GString*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="scan_word"
-              c:identifier="pango_scan_word"
-              doc="Scans a word into a #GString buffer. A word consists
-of [A-Za-z_] followed by zero or more [A-Za-z_0-9]
-Leading white space is skipped.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="pos" transfer-ownership="none">
-          <array c:type="char**">
-            <type name="utf8"/>
-          </array>
-        </parameter>
-        <parameter name="out" transfer-ownership="none">
-          <type name="GLib.String" c:type="GString*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="script_for_unichar"
-              c:identifier="pango_script_for_unichar"
-              doc="Looks up the #PangoScript for a particular character (as defined by
-Unicode Standard Annex #24). No check is made for @ch being a
-valid Unicode character; if you pass in invalid character, the
-result is undefined.
-As of Pango 1.18, this function simply returns the return value of
-g_unichar_get_script()."
-              version="1.4">
-      <return-value transfer-ownership="full">
-        <type name="Script" c:type="PangoScript"/>
-      </return-value>
-      <parameters>
-        <parameter name="ch" transfer-ownership="none">
-          <type name="GLib.unichar" c:type="gunichar"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="script_get_sample_language"
-              c:identifier="pango_script_get_sample_language"
-              doc="Given a script, finds a language tag that is reasonably
-representative of that script. This will usually be the
-most widely spoken or used language written in that script:
-for instance, the sample language for %PANGO_SCRIPT_CYRILLIC
-is &lt;literal&gt;ru&lt;/literal&gt; (Russian), the sample language
-for %PANGO_SCRIPT_ARABIC is &lt;literal&gt;ar&lt;/literal&gt;.
-For some
-scripts, no sample language will be returned because there
-is no language that is sufficiently representative. The best
-example of this is %PANGO_SCRIPT_HAN, where various different
-variants of written Chinese, Japanese, and Korean all use
-significantly different sets of Han characters and forms
-of shared characters. No sample language can be provided
-for many historical scripts as well.
-As of 1.18, this function checks the environment variables
-PANGO_LANGUAGE and LANGUAGE (checked in that order) first.
-If one of them is set, it is parsed as a list of language tags
-separated by colons or other separators.  This function
-will return the first language in the parsed list that Pango
-believes may use @script for writing.  This last predicate
-is tested using pango_language_includes_script().  This can
-be used to control Pango&apos;s font selection for non-primary
-languages.  For example, a PANGO_LANGUAGE enviroment variable
-set to &quot;en:fa&quot; makes Pango choose fonts suitable for Persian (fa)
-instead of Arabic (ar) when a segment of Arabic text is found
-in an otherwise non-Arabic text.  The same trick can be used to
-choose a default language for %PANGO_SCRIPT_HAN when setting
-context language is not feasible.
-of the script, or %NULL if no such language exists."
-              version="1.4">
-      <return-value transfer-ownership="full">
-        <type name="Language" c:type="PangoLanguage*"/>
-      </return-value>
-      <parameters>
-        <parameter name="script" transfer-ownership="none">
-          <type name="Script" c:type="PangoScript"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="shape"
-              c:identifier="pango_shape"
-              doc="Given a segment of text and the corresponding
-#PangoAnalysis structure returned from pango_itemize(),
-convert the characters into glyphs. You may also pass
-in only a substring of the item from pango_itemize().">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="text" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-        <parameter name="length" transfer-ownership="none" doc="of @text">
-          <type name="int" c:type="gint"/>
-        </parameter>
-        <parameter name="analysis" transfer-ownership="none">
-          <type name="Analysis" c:type="PangoAnalysis*"/>
-        </parameter>
-        <parameter name="glyphs" transfer-ownership="none">
-          <type name="GlyphString" c:type="PangoGlyphString*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="skip_space"
-              c:identifier="pango_skip_space"
-              doc="Skips 0 or more characters of white space.
-the position at a &apos;\0&apos; character.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="pos" transfer-ownership="none">
-          <array c:type="char**">
-            <type name="utf8"/>
-          </array>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="split_file_list"
-              c:identifier="pango_split_file_list"
-              doc="Splits a %G_SEARCHPATH_SEPARATOR-separated list of files, stripping
-white space and substituting ~/ with $HOME/.">
-      <return-value transfer-ownership="full">
-        <array c:type="char**">
-          <type name="utf8"/>
-        </array>
-      </return-value>
-      <parameters>
-        <parameter name="str" transfer-ownership="none">
-          <type name="utf8" c:type="char*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="trim_string"
-              c:identifier="pango_trim_string"
-              doc="Trims leading and trailing whitespace from a string.">
-      <return-value transfer-ownership="full">
-        <type name="utf8" c:type="char*"/>
-      </return-value>
-      <parameters>
-        <parameter name="str" transfer-ownership="none">
-          <type name="utf8" c:type="char*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="unichar_direction"
-              c:identifier="pango_unichar_direction"
-              doc="Determines the inherent direction of a character; either
-%PANGO_DIRECTION_LTR, %PANGO_DIRECTION_RTL, or
-%PANGO_DIRECTION_NEUTRAL.
-This function is useful to categorize characters into left-to-right
-letters, right-to-left letters, and everything else.  If full
-Unicode bidirectional type of a character is needed,
-pango_bidi_type_for_gunichar() can be used instead.">
-      <return-value transfer-ownership="full">
-        <type name="Direction" c:type="PangoDirection"/>
-      </return-value>
-      <parameters>
-        <parameter name="ch" transfer-ownership="none">
-          <type name="GLib.unichar" c:type="gunichar"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="units_from_double"
-              c:identifier="pango_units_from_double"
-              doc="it by %PANGO_SCALE and rounds to nearest integer."
-              version="1.16">
-      <return-value transfer-ownership="none">
-        <type name="int" c:type="int"/>
-      </return-value>
-      <parameters>
-        <parameter name="d" transfer-ownership="none">
-          <type name="double" c:type="double"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="units_to_double"
-              c:identifier="pango_units_to_double"
-              doc="it by %PANGO_SCALE."
-              version="1.16">
-      <return-value transfer-ownership="none">
-        <type name="double" c:type="double"/>
-      </return-value>
-      <parameters>
-        <parameter name="i" transfer-ownership="none">
-          <type name="int" c:type="int"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="version"
-              c:identifier="pango_version"
-              doc="This is similar to the macro %PANGO_VERSION except that
-it returns the encoded version of Pango available at run-time,
-as opposed to the version available at compile-time.
-A version number can be encoded into an integer using
-PANGO_VERSION_ENCODE().
-available at run time."
-              version="1.16">
-      <return-value transfer-ownership="none">
-        <type name="int" c:type="int"/>
-      </return-value>
-    </function>
-    <function name="version_check"
-              c:identifier="pango_version_check"
-              doc="Checks that the Pango library in use is compatible with the
-given version. Generally you would pass in the constants
-%PANGO_VERSION_MAJOR, %PANGO_VERSION_MINOR, %PANGO_VERSION_MICRO
-as the three arguments to this function; that produces
-a check that the library in use at run-time is compatible with
-the version of Pango the application or module was compiled against.
-of the running library is newer than the version
-the running library must be binary compatible with the
-version @required_major.required_minor.@required_micro
-(same major version.)
-For compile-time version checking use PANGO_VERSION_CHECK().
-given version, or a string describing the version mismatch.
-The returned string is owned by Pango and should not be modified
-or freed."
-              version="1.16">
-      <return-value transfer-ownership="none">
-        <type name="utf8" c:type="char*"/>
-      </return-value>
-      <parameters>
-        <parameter name="required_major" transfer-ownership="none">
-          <type name="int" c:type="int"/>
-        </parameter>
-        <parameter name="required_minor" transfer-ownership="none">
-          <type name="int" c:type="int"/>
-        </parameter>
-        <parameter name="required_micro" transfer-ownership="none">
-          <type name="int" c:type="int"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="version_string"
-              c:identifier="pango_version_string"
-              doc="This is similar to the macro %PANGO_VERSION_STRING except that
-it returns the version of Pango available at run-time, as opposed to
-the version available at compile-time.
-available at run time.
-The returned string is owned by Pango and should not be modified
-or freed."
-              version="1.16">
-      <return-value transfer-ownership="none">
-        <type name="utf8" c:type="char*"/>
-      </return-value>
-    </function>
-  </namespace>
-</repository>