<?xml version="1.0"?>
<!DOCTYPE refentry PUBLIC '-//OASIS//DTD DocBook XML V4.5//EN'
                      'http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd' [
<!ENTITY % local.common.attrib "xmlns:xi  CDATA  #FIXED 'http://www.w3.org/2003/XInclude'">
<!ENTITY version SYSTEM "version.xml">
]>
<refentry id="glib-Unicode-Manipulation">
<refmeta>
<refentrytitle role="top_of_page" id="glib-Unicode-Manipulation.top_of_page">Unicode Manipulation</refentrytitle>
<manvolnum>3</manvolnum>
<refmiscinfo>GLIB Library</refmiscinfo>
</refmeta>
<refnamediv>
<refname>Unicode Manipulation</refname>
<refpurpose>functions operating on Unicode characters and
    UTF-8 strings</refpurpose>
</refnamediv>

<refsect1 id="glib-Unicode-Manipulation.functions" role="functions_proto">
<title role="functions_proto.title">Functions</title>
<informaltable pgwide="1" frame="none">
<tgroup cols="2">
<colspec colname="functions_return" colwidth="150px"/>
<colspec colname="functions_name"/>
<tbody>
<row><entry role="function_type"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
</entry><entry role="function_name"><link linkend="g-unichar-validate">g_unichar_validate</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
</entry><entry role="function_name"><link linkend="g-unichar-isalnum">g_unichar_isalnum</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
</entry><entry role="function_name"><link linkend="g-unichar-isalpha">g_unichar_isalpha</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
</entry><entry role="function_name"><link linkend="g-unichar-iscntrl">g_unichar_iscntrl</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
</entry><entry role="function_name"><link linkend="g-unichar-isdefined">g_unichar_isdefined</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
</entry><entry role="function_name"><link linkend="g-unichar-isdigit">g_unichar_isdigit</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
</entry><entry role="function_name"><link linkend="g-unichar-isgraph">g_unichar_isgraph</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
</entry><entry role="function_name"><link linkend="g-unichar-islower">g_unichar_islower</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
</entry><entry role="function_name"><link linkend="g-unichar-ismark">g_unichar_ismark</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
</entry><entry role="function_name"><link linkend="g-unichar-isprint">g_unichar_isprint</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
</entry><entry role="function_name"><link linkend="g-unichar-ispunct">g_unichar_ispunct</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
</entry><entry role="function_name"><link linkend="g-unichar-isspace">g_unichar_isspace</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
</entry><entry role="function_name"><link linkend="g-unichar-istitle">g_unichar_istitle</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
</entry><entry role="function_name"><link linkend="g-unichar-isupper">g_unichar_isupper</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
</entry><entry role="function_name"><link linkend="g-unichar-isxdigit">g_unichar_isxdigit</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
</entry><entry role="function_name"><link linkend="g-unichar-iswide">g_unichar_iswide</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
</entry><entry role="function_name"><link linkend="g-unichar-iswide-cjk">g_unichar_iswide_cjk</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
</entry><entry role="function_name"><link linkend="g-unichar-iszerowidth">g_unichar_iszerowidth</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gunichar"><returnvalue>gunichar</returnvalue></link>
</entry><entry role="function_name"><link linkend="g-unichar-toupper">g_unichar_toupper</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gunichar"><returnvalue>gunichar</returnvalue></link>
</entry><entry role="function_name"><link linkend="g-unichar-tolower">g_unichar_tolower</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gunichar"><returnvalue>gunichar</returnvalue></link>
</entry><entry role="function_name"><link linkend="g-unichar-totitle">g_unichar_totitle</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gint"><returnvalue>gint</returnvalue></link>
</entry><entry role="function_name"><link linkend="g-unichar-digit-value">g_unichar_digit_value</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gint"><returnvalue>gint</returnvalue></link>
</entry><entry role="function_name"><link linkend="g-unichar-xdigit-value">g_unichar_xdigit_value</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
</entry><entry role="function_name"><link linkend="g-unichar-compose">g_unichar_compose</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
</entry><entry role="function_name"><link linkend="g-unichar-decompose">g_unichar_decompose</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gsize"><returnvalue>gsize</returnvalue></link>
</entry><entry role="function_name"><link linkend="g-unichar-fully-decompose">g_unichar_fully_decompose</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="GUnicodeType"><returnvalue>GUnicodeType</returnvalue></link>
</entry><entry role="function_name"><link linkend="g-unichar-type">g_unichar_type</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="GUnicodeBreakType"><returnvalue>GUnicodeBreakType</returnvalue></link>
</entry><entry role="function_name"><link linkend="g-unichar-break-type">g_unichar_break_type</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gint"><returnvalue>gint</returnvalue></link>
</entry><entry role="function_name"><link linkend="g-unichar-combining-class">g_unichar_combining_class</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="g-unicode-canonical-ordering">g_unicode_canonical_ordering</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gunichar"><returnvalue>gunichar</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="g-unicode-canonical-decomposition">g_unicode_canonical_decomposition</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
</entry><entry role="function_name"><link linkend="g-unichar-get-mirror-char">g_unichar_get_mirror_char</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="GUnicodeScript"><returnvalue>GUnicodeScript</returnvalue></link>
</entry><entry role="function_name"><link linkend="g-unichar-get-script">g_unichar_get_script</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="GUnicodeScript"><returnvalue>GUnicodeScript</returnvalue></link>
</entry><entry role="function_name"><link linkend="g-unicode-script-from-iso15924">g_unicode_script_from_iso15924</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="guint32"><returnvalue>guint32</returnvalue></link>
</entry><entry role="function_name"><link linkend="g-unicode-script-to-iso15924">g_unicode_script_to_iso15924</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>

<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="g-utf8-next-char">g_utf8_next_char</link><phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gunichar"><returnvalue>gunichar</returnvalue></link>
</entry><entry role="function_name"><link linkend="g-utf8-get-char">g_utf8_get_char</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gunichar"><returnvalue>gunichar</returnvalue></link>
</entry><entry role="function_name"><link linkend="g-utf8-get-char-validated">g_utf8_get_char_validated</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gchar"><returnvalue>gchar</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="g-utf8-offset-to-pointer">g_utf8_offset_to_pointer</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="glong"><returnvalue>glong</returnvalue></link>
</entry><entry role="function_name"><link linkend="g-utf8-pointer-to-offset">g_utf8_pointer_to_offset</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gchar"><returnvalue>gchar</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="g-utf8-prev-char">g_utf8_prev_char</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gchar"><returnvalue>gchar</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="g-utf8-find-next-char">g_utf8_find_next_char</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gchar"><returnvalue>gchar</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="g-utf8-find-prev-char">g_utf8_find_prev_char</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="glong"><returnvalue>glong</returnvalue></link>
</entry><entry role="function_name"><link linkend="g-utf8-strlen">g_utf8_strlen</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gchar"><returnvalue>gchar</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="g-utf8-strncpy">g_utf8_strncpy</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gchar"><returnvalue>gchar</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="g-utf8-strchr">g_utf8_strchr</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gchar"><returnvalue>gchar</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="g-utf8-strrchr">g_utf8_strrchr</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gchar"><returnvalue>gchar</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="g-utf8-strreverse">g_utf8_strreverse</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gchar"><returnvalue>gchar</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="g-utf8-substring">g_utf8_substring</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
</entry><entry role="function_name"><link linkend="g-utf8-validate">g_utf8_validate</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
</entry><entry role="function_name"><link linkend="g-utf8-validate-len">g_utf8_validate_len</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gchar"><returnvalue>gchar</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="g-utf8-make-valid">g_utf8_make_valid</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>

<row><entry role="function_type"><link linkend="gchar"><returnvalue>gchar</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="g-utf8-strup">g_utf8_strup</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gchar"><returnvalue>gchar</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="g-utf8-strdown">g_utf8_strdown</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gchar"><returnvalue>gchar</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="g-utf8-casefold">g_utf8_casefold</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gchar"><returnvalue>gchar</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="g-utf8-normalize">g_utf8_normalize</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gint"><returnvalue>gint</returnvalue></link>
</entry><entry role="function_name"><link linkend="g-utf8-collate">g_utf8_collate</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gchar"><returnvalue>gchar</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="g-utf8-collate-key">g_utf8_collate_key</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gchar"><returnvalue>gchar</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="g-utf8-collate-key-for-filename">g_utf8_collate_key_for_filename</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>

<row><entry role="function_type"><link linkend="gunichar2"><returnvalue>gunichar2</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="g-utf8-to-utf16">g_utf8_to_utf16</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gunichar"><returnvalue>gunichar</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="g-utf8-to-ucs4">g_utf8_to_ucs4</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gunichar"><returnvalue>gunichar</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="g-utf8-to-ucs4-fast">g_utf8_to_ucs4_fast</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gunichar"><returnvalue>gunichar</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="g-utf16-to-ucs4">g_utf16_to_ucs4</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gchar"><returnvalue>gchar</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="g-utf16-to-utf8">g_utf16_to_utf8</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gunichar2"><returnvalue>gunichar2</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="g-ucs4-to-utf16">g_ucs4_to_utf16</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gchar"><returnvalue>gchar</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="g-ucs4-to-utf8">g_ucs4_to_utf8</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gint"><returnvalue>gint</returnvalue></link>
</entry><entry role="function_name"><link linkend="g-unichar-to-utf8">g_unichar_to_utf8</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>

</tbody>
</tgroup>
</informaltable>
</refsect1>
<refsect1 id="glib-Unicode-Manipulation.other" role="other_proto">
<title role="other_proto.title">Types and Values</title>
<informaltable role="enum_members_table" pgwide="1" frame="none">
<tgroup cols="2">
<colspec colname="name" colwidth="150px"/>
<colspec colname="description"/>
<tbody>
<row><entry role="typedef_keyword">typedef</entry><entry role="function_name"><link linkend="gunichar">gunichar</link></entry></row>
<row><entry role="typedef_keyword">typedef</entry><entry role="function_name"><link linkend="gunichar2">gunichar2</link></entry></row>

<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="G-UNICHAR-MAX-DECOMPOSITION-LENGTH:CAPS">G_UNICHAR_MAX_DECOMPOSITION_LENGTH</link></entry></row>
<row><entry role="datatype_keyword">enum</entry><entry role="function_name"><link linkend="GUnicodeType">GUnicodeType</link></entry></row>
<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="G-UNICODE-COMBINING-MARK:CAPS">G_UNICODE_COMBINING_MARK</link></entry></row>
<row><entry role="datatype_keyword">enum</entry><entry role="function_name"><link linkend="GUnicodeBreakType">GUnicodeBreakType</link></entry></row>
<row><entry role="datatype_keyword">enum</entry><entry role="function_name"><link linkend="GUnicodeScript">GUnicodeScript</link></entry></row>


<row><entry role="datatype_keyword">enum</entry><entry role="function_name"><link linkend="GNormalizeMode">GNormalizeMode</link></entry></row>

</tbody>
</tgroup>
</informaltable>
</refsect1>

<refsect1 id="glib-Unicode-Manipulation.includes"><title>Includes</title><synopsis>#include &lt;gmodule.h&gt;
</synopsis></refsect1>

<refsect1 id="glib-Unicode-Manipulation.description" role="desc">
<title role="desc.title">Description</title>
<para>This section describes a number of functions for dealing with
Unicode characters and strings. There are analogues of the
traditional <literal>ctype.h</literal> character classification and case conversion
functions, UTF-8 analogues of some string utility functions,
functions to perform normalization, case conversion and collation
on UTF-8 strings and finally functions to convert between the UTF-8,
UTF-16 and UCS-4 encodings of Unicode.</para>
<para>The implementations of the Unicode functions in GLib are based
on the Unicode Character Data tables, which are available from
<ulink url="http://www.unicode.org/">www.unicode.org</ulink>.
GLib 2.8 supports Unicode 4.0, GLib 2.10 supports Unicode 4.1,
GLib 2.12 supports Unicode 5.0, GLib 2.16.3 supports Unicode 5.1,
GLib 2.30 supports Unicode 6.0.</para>

</refsect1>
<refsect1 id="glib-Unicode-Manipulation.functions_details" role="details">
<title role="details.title">Functions</title>
<refsect2 id="g-unichar-validate" role="function">
<title>g_unichar_validate&#160;()</title>
<indexterm zone="g-unichar-validate"><primary sortas="unichar_validate">g_unichar_validate</primary></indexterm>
<programlisting language="C"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
g_unichar_validate (<parameter><link linkend="gunichar"><type>gunichar</type></link> ch</parameter>);</programlisting>
<para>Checks whether <parameter>ch</parameter>
 is a valid Unicode character. Some possible
integer values of <parameter>ch</parameter>
 will not be valid. 0 is considered a valid
character, though it's normally a string terminator.</para>
<refsect3 id="g-unichar-validate.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>ch</para></entry>
<entry role="parameter_description"><para>a Unicode character</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="g-unichar-validate.returns" role="returns">
<title>Returns</title>
<para> <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> if <parameter>ch</parameter>
is a valid Unicode character</para>
</refsect3></refsect2>
<refsect2 id="g-unichar-isalnum" role="function">
<title>g_unichar_isalnum&#160;()</title>
<indexterm zone="g-unichar-isalnum"><primary sortas="unichar_isalnum">g_unichar_isalnum</primary></indexterm>
<programlisting language="C"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
g_unichar_isalnum (<parameter><link linkend="gunichar"><type>gunichar</type></link> c</parameter>);</programlisting>
<para>Determines whether a character is alphanumeric.
Given some UTF-8 text, obtain a character value
with <link linkend="g-utf8-get-char"><function>g_utf8_get_char()</function></link>.</para>
<refsect3 id="g-unichar-isalnum.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>c</para></entry>
<entry role="parameter_description"><para>a Unicode character</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="g-unichar-isalnum.returns" role="returns">
<title>Returns</title>
<para> <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> if <parameter>c</parameter>
is an alphanumeric character</para>
</refsect3></refsect2>
<refsect2 id="g-unichar-isalpha" role="function">
<title>g_unichar_isalpha&#160;()</title>
<indexterm zone="g-unichar-isalpha"><primary sortas="unichar_isalpha">g_unichar_isalpha</primary></indexterm>
<programlisting language="C"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
g_unichar_isalpha (<parameter><link linkend="gunichar"><type>gunichar</type></link> c</parameter>);</programlisting>
<para>Determines whether a character is alphabetic (i.e. a letter).
Given some UTF-8 text, obtain a character value with
<link linkend="g-utf8-get-char"><function>g_utf8_get_char()</function></link>.</para>
<refsect3 id="g-unichar-isalpha.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>c</para></entry>
<entry role="parameter_description"><para>a Unicode character</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="g-unichar-isalpha.returns" role="returns">
<title>Returns</title>
<para> <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> if <parameter>c</parameter>
is an alphabetic character</para>
</refsect3></refsect2>
<refsect2 id="g-unichar-iscntrl" role="function">
<title>g_unichar_iscntrl&#160;()</title>
<indexterm zone="g-unichar-iscntrl"><primary sortas="unichar_iscntrl">g_unichar_iscntrl</primary></indexterm>
<programlisting language="C"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
g_unichar_iscntrl (<parameter><link linkend="gunichar"><type>gunichar</type></link> c</parameter>);</programlisting>
<para>Determines whether a character is a control character.
Given some UTF-8 text, obtain a character value with
<link linkend="g-utf8-get-char"><function>g_utf8_get_char()</function></link>.</para>
<refsect3 id="g-unichar-iscntrl.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>c</para></entry>
<entry role="parameter_description"><para>a Unicode character</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="g-unichar-iscntrl.returns" role="returns">
<title>Returns</title>
<para> <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> if <parameter>c</parameter>
is a control character</para>
</refsect3></refsect2>
<refsect2 id="g-unichar-isdefined" role="function">
<title>g_unichar_isdefined&#160;()</title>
<indexterm zone="g-unichar-isdefined"><primary sortas="unichar_isdefined">g_unichar_isdefined</primary></indexterm>
<programlisting language="C"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
g_unichar_isdefined (<parameter><link linkend="gunichar"><type>gunichar</type></link> c</parameter>);</programlisting>
<para>Determines if a given character is assigned in the Unicode
standard.</para>
<refsect3 id="g-unichar-isdefined.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>c</para></entry>
<entry role="parameter_description"><para>a Unicode character</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="g-unichar-isdefined.returns" role="returns">
<title>Returns</title>
<para> <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> if the character has an assigned value</para>
</refsect3></refsect2>
<refsect2 id="g-unichar-isdigit" role="function">
<title>g_unichar_isdigit&#160;()</title>
<indexterm zone="g-unichar-isdigit"><primary sortas="unichar_isdigit">g_unichar_isdigit</primary></indexterm>
<programlisting language="C"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
g_unichar_isdigit (<parameter><link linkend="gunichar"><type>gunichar</type></link> c</parameter>);</programlisting>
<para>Determines whether a character is numeric (i.e. a digit).  This
covers ASCII 0-9 and also digits in other languages/scripts.  Given
some UTF-8 text, obtain a character value with <link linkend="g-utf8-get-char"><function>g_utf8_get_char()</function></link>.</para>
<refsect3 id="g-unichar-isdigit.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>c</para></entry>
<entry role="parameter_description"><para>a Unicode character</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="g-unichar-isdigit.returns" role="returns">
<title>Returns</title>
<para> <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> if <parameter>c</parameter>
is a digit</para>
</refsect3></refsect2>
<refsect2 id="g-unichar-isgraph" role="function">
<title>g_unichar_isgraph&#160;()</title>
<indexterm zone="g-unichar-isgraph"><primary sortas="unichar_isgraph">g_unichar_isgraph</primary></indexterm>
<programlisting language="C"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
g_unichar_isgraph (<parameter><link linkend="gunichar"><type>gunichar</type></link> c</parameter>);</programlisting>
<para>Determines whether a character is printable and not a space
(returns <link linkend="FALSE:CAPS"><literal>FALSE</literal></link> for control characters, format characters, and
spaces). <link linkend="g-unichar-isprint"><function>g_unichar_isprint()</function></link> is similar, but returns <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> for
spaces. Given some UTF-8 text, obtain a character value with
<link linkend="g-utf8-get-char"><function>g_utf8_get_char()</function></link>.</para>
<refsect3 id="g-unichar-isgraph.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>c</para></entry>
<entry role="parameter_description"><para>a Unicode character</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="g-unichar-isgraph.returns" role="returns">
<title>Returns</title>
<para> <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> if <parameter>c</parameter>
is printable unless it's a space</para>
</refsect3></refsect2>
<refsect2 id="g-unichar-islower" role="function">
<title>g_unichar_islower&#160;()</title>
<indexterm zone="g-unichar-islower"><primary sortas="unichar_islower">g_unichar_islower</primary></indexterm>
<programlisting language="C"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
g_unichar_islower (<parameter><link linkend="gunichar"><type>gunichar</type></link> c</parameter>);</programlisting>
<para>Determines whether a character is a lowercase letter.
Given some UTF-8 text, obtain a character value with
<link linkend="g-utf8-get-char"><function>g_utf8_get_char()</function></link>.</para>
<refsect3 id="g-unichar-islower.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>c</para></entry>
<entry role="parameter_description"><para>a Unicode character</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="g-unichar-islower.returns" role="returns">
<title>Returns</title>
<para> <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> if <parameter>c</parameter>
is a lowercase letter</para>
</refsect3></refsect2>
<refsect2 id="g-unichar-ismark" role="function" condition="since:2.14">
<title>g_unichar_ismark&#160;()</title>
<indexterm zone="g-unichar-ismark" role="2.14"><primary sortas="unichar_ismark">g_unichar_ismark</primary></indexterm>
<programlisting language="C"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
g_unichar_ismark (<parameter><link linkend="gunichar"><type>gunichar</type></link> c</parameter>);</programlisting>
<para>Determines whether a character is a mark (non-spacing mark,
combining mark, or enclosing mark in Unicode speak).
Given some UTF-8 text, obtain a character value
with <link linkend="g-utf8-get-char"><function>g_utf8_get_char()</function></link>.</para>
<para>Note: in most cases where isalpha characters are allowed,
ismark characters should be allowed to as they are essential
for writing most European languages as well as many non-Latin
scripts.</para>
<refsect3 id="g-unichar-ismark.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>c</para></entry>
<entry role="parameter_description"><para>a Unicode character</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="g-unichar-ismark.returns" role="returns">
<title>Returns</title>
<para> <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> if <parameter>c</parameter>
is a mark character</para>
</refsect3><para role="since">Since: <link linkend="api-index-2.14">2.14</link></para></refsect2>
<refsect2 id="g-unichar-isprint" role="function">
<title>g_unichar_isprint&#160;()</title>
<indexterm zone="g-unichar-isprint"><primary sortas="unichar_isprint">g_unichar_isprint</primary></indexterm>
<programlisting language="C"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
g_unichar_isprint (<parameter><link linkend="gunichar"><type>gunichar</type></link> c</parameter>);</programlisting>
<para>Determines whether a character is printable.
Unlike <link linkend="g-unichar-isgraph"><function>g_unichar_isgraph()</function></link>, returns <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> for spaces.
Given some UTF-8 text, obtain a character value with
<link linkend="g-utf8-get-char"><function>g_utf8_get_char()</function></link>.</para>
<refsect3 id="g-unichar-isprint.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>c</para></entry>
<entry role="parameter_description"><para>a Unicode character</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="g-unichar-isprint.returns" role="returns">
<title>Returns</title>
<para> <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> if <parameter>c</parameter>
is printable</para>
</refsect3></refsect2>
<refsect2 id="g-unichar-ispunct" role="function">
<title>g_unichar_ispunct&#160;()</title>
<indexterm zone="g-unichar-ispunct"><primary sortas="unichar_ispunct">g_unichar_ispunct</primary></indexterm>
<programlisting language="C"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
g_unichar_ispunct (<parameter><link linkend="gunichar"><type>gunichar</type></link> c</parameter>);</programlisting>
<para>Determines whether a character is punctuation or a symbol.
Given some UTF-8 text, obtain a character value with
<link linkend="g-utf8-get-char"><function>g_utf8_get_char()</function></link>.</para>
<refsect3 id="g-unichar-ispunct.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>c</para></entry>
<entry role="parameter_description"><para>a Unicode character</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="g-unichar-ispunct.returns" role="returns">
<title>Returns</title>
<para> <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> if <parameter>c</parameter>
is a punctuation or symbol character</para>
</refsect3></refsect2>
<refsect2 id="g-unichar-isspace" role="function">
<title>g_unichar_isspace&#160;()</title>
<indexterm zone="g-unichar-isspace"><primary sortas="unichar_isspace">g_unichar_isspace</primary></indexterm>
<programlisting language="C"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
g_unichar_isspace (<parameter><link linkend="gunichar"><type>gunichar</type></link> c</parameter>);</programlisting>
<para>Determines whether a character is a space, tab, or line separator
(newline, carriage return, etc.).  Given some UTF-8 text, obtain a
character value with <link linkend="g-utf8-get-char"><function>g_utf8_get_char()</function></link>.</para>
<para>(Note: don't use this to do word breaking; you have to use
Pango or equivalent to get word breaking right, the algorithm
is fairly complex.)</para>
<refsect3 id="g-unichar-isspace.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>c</para></entry>
<entry role="parameter_description"><para>a Unicode character</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="g-unichar-isspace.returns" role="returns">
<title>Returns</title>
<para> <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> if <parameter>c</parameter>
is a space character</para>
</refsect3></refsect2>
<refsect2 id="g-unichar-istitle" role="function">
<title>g_unichar_istitle&#160;()</title>
<indexterm zone="g-unichar-istitle"><primary sortas="unichar_istitle">g_unichar_istitle</primary></indexterm>
<programlisting language="C"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
g_unichar_istitle (<parameter><link linkend="gunichar"><type>gunichar</type></link> c</parameter>);</programlisting>
<para>Determines if a character is titlecase. Some characters in
Unicode which are composites, such as the DZ digraph
have three case variants instead of just two. The titlecase
form is used at the beginning of a word where only the
first letter is capitalized. The titlecase form of the DZ
digraph is U+01F2 LATIN CAPITAL LETTTER D WITH SMALL LETTER Z.</para>
<refsect3 id="g-unichar-istitle.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>c</para></entry>
<entry role="parameter_description"><para>a Unicode character</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="g-unichar-istitle.returns" role="returns">
<title>Returns</title>
<para> <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> if the character is titlecase</para>
</refsect3></refsect2>
<refsect2 id="g-unichar-isupper" role="function">
<title>g_unichar_isupper&#160;()</title>
<indexterm zone="g-unichar-isupper"><primary sortas="unichar_isupper">g_unichar_isupper</primary></indexterm>
<programlisting language="C"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
g_unichar_isupper (<parameter><link linkend="gunichar"><type>gunichar</type></link> c</parameter>);</programlisting>
<para>Determines if a character is uppercase.</para>
<refsect3 id="g-unichar-isupper.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>c</para></entry>
<entry role="parameter_description"><para>a Unicode character</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="g-unichar-isupper.returns" role="returns">
<title>Returns</title>
<para> <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> if <parameter>c</parameter>
is an uppercase character</para>
</refsect3></refsect2>
<refsect2 id="g-unichar-isxdigit" role="function">
<title>g_unichar_isxdigit&#160;()</title>
<indexterm zone="g-unichar-isxdigit"><primary sortas="unichar_isxdigit">g_unichar_isxdigit</primary></indexterm>
<programlisting language="C"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
g_unichar_isxdigit (<parameter><link linkend="gunichar"><type>gunichar</type></link> c</parameter>);</programlisting>
<para>Determines if a character is a hexidecimal digit.</para>
<refsect3 id="g-unichar-isxdigit.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>c</para></entry>
<entry role="parameter_description"><para>a Unicode character.</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="g-unichar-isxdigit.returns" role="returns">
<title>Returns</title>
<para> <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> if the character is a hexadecimal digit</para>
</refsect3></refsect2>
<refsect2 id="g-unichar-iswide" role="function">
<title>g_unichar_iswide&#160;()</title>
<indexterm zone="g-unichar-iswide"><primary sortas="unichar_iswide">g_unichar_iswide</primary></indexterm>
<programlisting language="C"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
g_unichar_iswide (<parameter><link linkend="gunichar"><type>gunichar</type></link> c</parameter>);</programlisting>
<para>Determines if a character is typically rendered in a double-width
cell.</para>
<refsect3 id="g-unichar-iswide.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>c</para></entry>
<entry role="parameter_description"><para>a Unicode character</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="g-unichar-iswide.returns" role="returns">
<title>Returns</title>
<para> <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> if the character is wide</para>
</refsect3></refsect2>
<refsect2 id="g-unichar-iswide-cjk" role="function" condition="since:2.12">
<title>g_unichar_iswide_cjk&#160;()</title>
<indexterm zone="g-unichar-iswide-cjk" role="2.12"><primary sortas="unichar_iswide_cjk">g_unichar_iswide_cjk</primary></indexterm>
<programlisting language="C"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
g_unichar_iswide_cjk (<parameter><link linkend="gunichar"><type>gunichar</type></link> c</parameter>);</programlisting>
<para>Determines if a character is typically rendered in a double-width
cell under legacy East Asian locales.  If a character is wide according to
<link linkend="g-unichar-iswide"><function>g_unichar_iswide()</function></link>, then it is also reported wide with this function, but
the converse is not necessarily true. See the
<ulink url="http://www.unicode.org/reports/tr11/">Unicode Standard Annex <link linkend="11"><type>11</type></link></ulink>
for details.</para>
<para>If a character passes the <link linkend="g-unichar-iswide"><function>g_unichar_iswide()</function></link> test then it will also pass
this test, but not the other way around.  Note that some characters may
pass both this test and <link linkend="g-unichar-iszerowidth"><function>g_unichar_iszerowidth()</function></link>.</para>
<refsect3 id="g-unichar-iswide-cjk.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>c</para></entry>
<entry role="parameter_description"><para>a Unicode character</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="g-unichar-iswide-cjk.returns" role="returns">
<title>Returns</title>
<para> <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> if the character is wide in legacy East Asian locales</para>
</refsect3><para role="since">Since: <link linkend="api-index-2.12">2.12</link></para></refsect2>
<refsect2 id="g-unichar-iszerowidth" role="function" condition="since:2.14">
<title>g_unichar_iszerowidth&#160;()</title>
<indexterm zone="g-unichar-iszerowidth" role="2.14"><primary sortas="unichar_iszerowidth">g_unichar_iszerowidth</primary></indexterm>
<programlisting language="C"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
g_unichar_iszerowidth (<parameter><link linkend="gunichar"><type>gunichar</type></link> c</parameter>);</programlisting>
<para>Determines if a given character typically takes zero width when rendered.
The return value is <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> for all non-spacing and enclosing marks
(e.g., combining accents), format characters, zero-width
space, but not U+00AD SOFT HYPHEN.</para>
<para>A typical use of this function is with one of <link linkend="g-unichar-iswide"><function>g_unichar_iswide()</function></link> or
<link linkend="g-unichar-iswide-cjk"><function>g_unichar_iswide_cjk()</function></link> to determine the number of cells a string occupies
when displayed on a grid display (terminals).  However, note that not all
terminals support zero-width rendering of zero-width marks.</para>
<refsect3 id="g-unichar-iszerowidth.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>c</para></entry>
<entry role="parameter_description"><para>a Unicode character</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="g-unichar-iszerowidth.returns" role="returns">
<title>Returns</title>
<para> <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> if the character has zero width</para>
</refsect3><para role="since">Since: <link linkend="api-index-2.14">2.14</link></para></refsect2>
<refsect2 id="g-unichar-toupper" role="function">
<title>g_unichar_toupper&#160;()</title>
<indexterm zone="g-unichar-toupper"><primary sortas="unichar_toupper">g_unichar_toupper</primary></indexterm>
<programlisting language="C"><link linkend="gunichar"><returnvalue>gunichar</returnvalue></link>
g_unichar_toupper (<parameter><link linkend="gunichar"><type>gunichar</type></link> c</parameter>);</programlisting>
<para>Converts a character to uppercase.</para>
<refsect3 id="g-unichar-toupper.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>c</para></entry>
<entry role="parameter_description"><para>a Unicode character</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="g-unichar-toupper.returns" role="returns">
<title>Returns</title>
<para> the result of converting <parameter>c</parameter>
to uppercase.
If <parameter>c</parameter>
is not an lowercase or titlecase character,
or has no upper case equivalent <parameter>c</parameter>
is returned unchanged.</para>
</refsect3></refsect2>
<refsect2 id="g-unichar-tolower" role="function">
<title>g_unichar_tolower&#160;()</title>
<indexterm zone="g-unichar-tolower"><primary sortas="unichar_tolower">g_unichar_tolower</primary></indexterm>
<programlisting language="C"><link linkend="gunichar"><returnvalue>gunichar</returnvalue></link>
g_unichar_tolower (<parameter><link linkend="gunichar"><type>gunichar</type></link> c</parameter>);</programlisting>
<para>Converts a character to lower case.</para>
<refsect3 id="g-unichar-tolower.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>c</para></entry>
<entry role="parameter_description"><para>a Unicode character.</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="g-unichar-tolower.returns" role="returns">
<title>Returns</title>
<para> the result of converting <parameter>c</parameter>
to lower case.
If <parameter>c</parameter>
is not an upperlower or titlecase character,
or has no lowercase equivalent <parameter>c</parameter>
is returned unchanged.</para>
</refsect3></refsect2>
<refsect2 id="g-unichar-totitle" role="function">
<title>g_unichar_totitle&#160;()</title>
<indexterm zone="g-unichar-totitle"><primary sortas="unichar_totitle">g_unichar_totitle</primary></indexterm>
<programlisting language="C"><link linkend="gunichar"><returnvalue>gunichar</returnvalue></link>
g_unichar_totitle (<parameter><link linkend="gunichar"><type>gunichar</type></link> c</parameter>);</programlisting>
<para>Converts a character to the titlecase.</para>
<refsect3 id="g-unichar-totitle.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>c</para></entry>
<entry role="parameter_description"><para>a Unicode character</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="g-unichar-totitle.returns" role="returns">
<title>Returns</title>
<para> the result of converting <parameter>c</parameter>
to titlecase.
If <parameter>c</parameter>
is not an uppercase or lowercase character,
<parameter>c</parameter>
is returned unchanged.</para>
</refsect3></refsect2>
<refsect2 id="g-unichar-digit-value" role="function">
<title>g_unichar_digit_value&#160;()</title>
<indexterm zone="g-unichar-digit-value"><primary sortas="unichar_digit_value">g_unichar_digit_value</primary></indexterm>
<programlisting language="C"><link linkend="gint"><returnvalue>gint</returnvalue></link>
g_unichar_digit_value (<parameter><link linkend="gunichar"><type>gunichar</type></link> c</parameter>);</programlisting>
<para>Determines the numeric value of a character as a decimal
digit.</para>
<refsect3 id="g-unichar-digit-value.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>c</para></entry>
<entry role="parameter_description"><para>a Unicode character</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="g-unichar-digit-value.returns" role="returns">
<title>Returns</title>
<para> If <parameter>c</parameter>
is a decimal digit (according to
<link linkend="g-unichar-isdigit"><function>g_unichar_isdigit()</function></link>), its numeric value. Otherwise, -1.</para>
</refsect3></refsect2>
<refsect2 id="g-unichar-xdigit-value" role="function">
<title>g_unichar_xdigit_value&#160;()</title>
<indexterm zone="g-unichar-xdigit-value"><primary sortas="unichar_xdigit_value">g_unichar_xdigit_value</primary></indexterm>
<programlisting language="C"><link linkend="gint"><returnvalue>gint</returnvalue></link>
g_unichar_xdigit_value (<parameter><link linkend="gunichar"><type>gunichar</type></link> c</parameter>);</programlisting>
<para>Determines the numeric value of a character as a hexidecimal
digit.</para>
<refsect3 id="g-unichar-xdigit-value.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>c</para></entry>
<entry role="parameter_description"><para>a Unicode character</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="g-unichar-xdigit-value.returns" role="returns">
<title>Returns</title>
<para> If <parameter>c</parameter>
is a hex digit (according to
<link linkend="g-unichar-isxdigit"><function>g_unichar_isxdigit()</function></link>), its numeric value. Otherwise, -1.</para>
</refsect3></refsect2>
<refsect2 id="g-unichar-compose" role="function" condition="since:2.30">
<title>g_unichar_compose&#160;()</title>
<indexterm zone="g-unichar-compose" role="2.30"><primary sortas="unichar_compose">g_unichar_compose</primary></indexterm>
<programlisting language="C"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
g_unichar_compose (<parameter><link linkend="gunichar"><type>gunichar</type></link> a</parameter>,
                   <parameter><link linkend="gunichar"><type>gunichar</type></link> b</parameter>,
                   <parameter><link linkend="gunichar"><type>gunichar</type></link> *ch</parameter>);</programlisting>
<para>Performs a single composition step of the
Unicode canonical composition algorithm.</para>
<para>This function includes algorithmic Hangul Jamo composition,
but it is not exactly the inverse of <link linkend="g-unichar-decompose"><function>g_unichar_decompose()</function></link>.
No composition can have either of <parameter>a</parameter>
 or <parameter>b</parameter>
 equal to zero.
To be precise, this function composes if and only if
there exists a Primary Composite P which is canonically
equivalent to the sequence &lt;<parameter>a</parameter>
,<parameter>b</parameter>
>.  See the Unicode
Standard for the definition of Primary Composite.</para>
<para>If <parameter>a</parameter>
 and <parameter>b</parameter>
 do not compose a new character, <parameter>ch</parameter>
 is set to zero.</para>
<para>See
<ulink url="http://unicode.org/reports/tr15/">UAX<link linkend="15"><type>15</type></link></ulink>
for details.</para>
<refsect3 id="g-unichar-compose.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>a</para></entry>
<entry role="parameter_description"><para>a Unicode character</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>b</para></entry>
<entry role="parameter_description"><para>a Unicode character</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>ch</para></entry>
<entry role="parameter_description"><para>return location for the composed character</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="g-unichar-compose.returns" role="returns">
<title>Returns</title>
<para> <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> if the characters could be composed</para>
</refsect3><para role="since">Since: <link linkend="api-index-2.30">2.30</link></para></refsect2>
<refsect2 id="g-unichar-decompose" role="function" condition="since:2.30">
<title>g_unichar_decompose&#160;()</title>
<indexterm zone="g-unichar-decompose" role="2.30"><primary sortas="unichar_decompose">g_unichar_decompose</primary></indexterm>
<programlisting language="C"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
g_unichar_decompose (<parameter><link linkend="gunichar"><type>gunichar</type></link> ch</parameter>,
                     <parameter><link linkend="gunichar"><type>gunichar</type></link> *a</parameter>,
                     <parameter><link linkend="gunichar"><type>gunichar</type></link> *b</parameter>);</programlisting>
<para>Performs a single decomposition step of the
Unicode canonical decomposition algorithm.</para>
<para>This function does not include compatibility
decompositions. It does, however, include algorithmic
Hangul Jamo decomposition, as well as 'singleton'
decompositions which replace a character by a single
other character. In the case of singletons *<parameter>b</parameter>
 will
be set to zero.</para>
<para>If <parameter>ch</parameter>
 is not decomposable, *<parameter>a</parameter>
 is set to <parameter>ch</parameter>
 and *<parameter>b</parameter>

is set to zero.</para>
<para>Note that the way Unicode decomposition pairs are
defined, it is guaranteed that <parameter>b</parameter>
 would not decompose
further, but <parameter>a</parameter>
 may itself decompose.  To get the full
canonical decomposition for <parameter>ch</parameter>
, one would need to
recursively call this function on <parameter>a</parameter>
.  Or use
<link linkend="g-unichar-fully-decompose"><function>g_unichar_fully_decompose()</function></link>.</para>
<para>See
<ulink url="http://unicode.org/reports/tr15/">UAX<link linkend="15"><type>15</type></link></ulink>
for details.</para>
<refsect3 id="g-unichar-decompose.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>ch</para></entry>
<entry role="parameter_description"><para>a Unicode character</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>a</para></entry>
<entry role="parameter_description"><para>return location for the first component of <parameter>ch</parameter>
</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>b</para></entry>
<entry role="parameter_description"><para>return location for the second component of <parameter>ch</parameter>
</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="g-unichar-decompose.returns" role="returns">
<title>Returns</title>
<para> <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> if the character could be decomposed</para>
</refsect3><para role="since">Since: <link linkend="api-index-2.30">2.30</link></para></refsect2>
<refsect2 id="g-unichar-fully-decompose" role="function" condition="since:2.30">
<title>g_unichar_fully_decompose&#160;()</title>
<indexterm zone="g-unichar-fully-decompose" role="2.30"><primary sortas="unichar_fully_decompose">g_unichar_fully_decompose</primary></indexterm>
<programlisting language="C"><link linkend="gsize"><returnvalue>gsize</returnvalue></link>
g_unichar_fully_decompose (<parameter><link linkend="gunichar"><type>gunichar</type></link> ch</parameter>,
                           <parameter><link linkend="gboolean"><type>gboolean</type></link> compat</parameter>,
                           <parameter><link linkend="gunichar"><type>gunichar</type></link> *result</parameter>,
                           <parameter><link linkend="gsize"><type>gsize</type></link> result_len</parameter>);</programlisting>
<para>Computes the canonical or compatibility decomposition of a
Unicode character.  For compatibility decomposition,
pass <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> for <parameter>compat</parameter>
; for canonical decomposition
pass <link linkend="FALSE:CAPS"><literal>FALSE</literal></link> for <parameter>compat</parameter>
.</para>
<para>The decomposed sequence is placed in <parameter>result</parameter>
.  Only up to
<parameter>result_len</parameter>
 characters are written into <parameter>result</parameter>
.  The length
of the full decomposition (irrespective of <parameter>result_len</parameter>
) is
returned by the function.  For canonical decomposition,
currently all decompositions are of length at most 4, but
this may change in the future (very unlikely though).
At any rate, Unicode does guarantee that a buffer of length
18 is always enough for both compatibility and canonical
decompositions, so that is the size recommended. This is provided
as <link linkend="G-UNICHAR-MAX-DECOMPOSITION-LENGTH:CAPS"><literal>G_UNICHAR_MAX_DECOMPOSITION_LENGTH</literal></link>.</para>
<para>See
<ulink url="http://unicode.org/reports/tr15/">UAX<link linkend="15"><type>15</type></link></ulink>
for details.</para>
<refsect3 id="g-unichar-fully-decompose.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>ch</para></entry>
<entry role="parameter_description"><para>a Unicode character.</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>compat</para></entry>
<entry role="parameter_description"><para>whether perform canonical or compatibility decomposition</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>result</para></entry>
<entry role="parameter_description"><para>location to store decomposed result, or <link linkend="NULL:CAPS"><literal>NULL</literal></link>. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>nullable</acronym>]</emphasis></entry></row>
<row><entry role="parameter_name"><para>result_len</para></entry>
<entry role="parameter_description"><para>length of <parameter>result</parameter>
</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="g-unichar-fully-decompose.returns" role="returns">
<title>Returns</title>
<para> the length of the full decomposition.</para>
</refsect3><para role="since">Since: <link linkend="api-index-2.30">2.30</link></para></refsect2>
<refsect2 id="g-unichar-type" role="function">
<title>g_unichar_type&#160;()</title>
<indexterm zone="g-unichar-type"><primary sortas="unichar_type">g_unichar_type</primary></indexterm>
<programlisting language="C"><link linkend="GUnicodeType"><returnvalue>GUnicodeType</returnvalue></link>
g_unichar_type (<parameter><link linkend="gunichar"><type>gunichar</type></link> c</parameter>);</programlisting>
<para>Classifies a Unicode character by type.</para>
<refsect3 id="g-unichar-type.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>c</para></entry>
<entry role="parameter_description"><para>a Unicode character</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="g-unichar-type.returns" role="returns">
<title>Returns</title>
<para> the type of the character.</para>
</refsect3></refsect2>
<refsect2 id="g-unichar-break-type" role="function">
<title>g_unichar_break_type&#160;()</title>
<indexterm zone="g-unichar-break-type"><primary sortas="unichar_break_type">g_unichar_break_type</primary></indexterm>
<programlisting language="C"><link linkend="GUnicodeBreakType"><returnvalue>GUnicodeBreakType</returnvalue></link>
g_unichar_break_type (<parameter><link linkend="gunichar"><type>gunichar</type></link> c</parameter>);</programlisting>
<para>Determines the break type of <parameter>c</parameter>
. <parameter>c</parameter>
 should be a Unicode character
(to derive a character from UTF-8 encoded text, use
<link linkend="g-utf8-get-char"><function>g_utf8_get_char()</function></link>). The break type is used to find word and line
breaks ("text boundaries"), Pango implements the Unicode boundary
resolution algorithms and normally you would use a function such
as <link linkend="pango-break"><function>pango_break()</function></link> instead of caring about break types yourself.</para>
<refsect3 id="g-unichar-break-type.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>c</para></entry>
<entry role="parameter_description"><para>a Unicode character</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="g-unichar-break-type.returns" role="returns">
<title>Returns</title>
<para> the break type of <parameter>c</parameter>
</para>
</refsect3></refsect2>
<refsect2 id="g-unichar-combining-class" role="function" condition="since:2.14">
<title>g_unichar_combining_class&#160;()</title>
<indexterm zone="g-unichar-combining-class" role="2.14"><primary sortas="unichar_combining_class">g_unichar_combining_class</primary></indexterm>
<programlisting language="C"><link linkend="gint"><returnvalue>gint</returnvalue></link>
g_unichar_combining_class (<parameter><link linkend="gunichar"><type>gunichar</type></link> uc</parameter>);</programlisting>
<para>Determines the canonical combining class of a Unicode character.</para>
<refsect3 id="g-unichar-combining-class.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>uc</para></entry>
<entry role="parameter_description"><para>a Unicode character</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="g-unichar-combining-class.returns" role="returns">
<title>Returns</title>
<para> the combining class of the character</para>
</refsect3><para role="since">Since: <link linkend="api-index-2.14">2.14</link></para></refsect2>
<refsect2 id="g-unicode-canonical-ordering" role="function">
<title>g_unicode_canonical_ordering&#160;()</title>
<indexterm zone="g-unicode-canonical-ordering"><primary sortas="unicode_canonical_ordering">g_unicode_canonical_ordering</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
g_unicode_canonical_ordering (<parameter><link linkend="gunichar"><type>gunichar</type></link> *string</parameter>,
                              <parameter><link linkend="gsize"><type>gsize</type></link> len</parameter>);</programlisting>
<para>Computes the canonical ordering of a string in-place.  
This rearranges decomposed characters in the string 
according to their combining classes.  See the Unicode 
manual for more information.</para>
<refsect3 id="g-unicode-canonical-ordering.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>string</para></entry>
<entry role="parameter_description"><para>a UCS-4 encoded string.</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>len</para></entry>
<entry role="parameter_description"><para>the maximum length of <parameter>string</parameter>
to use.</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="g-unicode-canonical-decomposition" role="function" condition="deprecated">
<title>g_unicode_canonical_decomposition&#160;()</title>
<indexterm zone="g-unicode-canonical-decomposition" role="deprecated"><primary sortas="unicode_canonical_decomposition">g_unicode_canonical_decomposition</primary></indexterm>
<programlisting language="C"><link linkend="gunichar"><returnvalue>gunichar</returnvalue></link>&#160;*
g_unicode_canonical_decomposition (<parameter><link linkend="gunichar"><type>gunichar</type></link> ch</parameter>,
                                   <parameter><link linkend="gsize"><type>gsize</type></link> *result_len</parameter>);</programlisting>
<warning><para><literal>g_unicode_canonical_decomposition</literal> has been deprecated since version 2.30 and should not be used in newly-written code.</para> <para>Use the more flexible <link linkend="g-unichar-fully-decompose"><function>g_unichar_fully_decompose()</function></link>
  instead.</para>
</warning>
<para>Computes the canonical decomposition of a Unicode character.</para>
<refsect3 id="g-unicode-canonical-decomposition.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>ch</para></entry>
<entry role="parameter_description"><para>a Unicode character.</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>result_len</para></entry>
<entry role="parameter_description"><para>location to store the length of the return value.</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="g-unicode-canonical-decomposition.returns" role="returns">
<title>Returns</title>
<para> a newly allocated string of Unicode characters.
<parameter>result_len</parameter>
is set to the resulting length of the string.</para>
</refsect3></refsect2>
<refsect2 id="g-unichar-get-mirror-char" role="function" condition="since:2.4">
<title>g_unichar_get_mirror_char&#160;()</title>
<indexterm zone="g-unichar-get-mirror-char" role="2.4"><primary sortas="unichar_get_mirror_char">g_unichar_get_mirror_char</primary></indexterm>
<programlisting language="C"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
g_unichar_get_mirror_char (<parameter><link linkend="gunichar"><type>gunichar</type></link> ch</parameter>,
                           <parameter><link linkend="gunichar"><type>gunichar</type></link> *mirrored_ch</parameter>);</programlisting>
<para>In Unicode, some characters are "mirrored". This means that their
images are mirrored horizontally in text that is laid out from right
to left. For instance, "(" would become its mirror image, ")", in
right-to-left text.</para>
<para>If <parameter>ch</parameter>
 has the Unicode mirrored property and there is another unicode
character that typically has a glyph that is the mirror image of <parameter>ch</parameter>
's
glyph and <parameter>mirrored_ch</parameter>
 is set, it puts that character in the address
pointed to by <parameter>mirrored_ch</parameter>
.  Otherwise the original character is put.</para>
<refsect3 id="g-unichar-get-mirror-char.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>ch</para></entry>
<entry role="parameter_description"><para>a Unicode character</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>mirrored_ch</para></entry>
<entry role="parameter_description"><para>location to store the mirrored character</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="g-unichar-get-mirror-char.returns" role="returns">
<title>Returns</title>
<para> <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> if <parameter>ch</parameter>
has a mirrored character, <link linkend="FALSE:CAPS"><literal>FALSE</literal></link> otherwise</para>
</refsect3><para role="since">Since: <link linkend="api-index-2.4">2.4</link></para></refsect2>
<refsect2 id="g-unichar-get-script" role="function" condition="since:2.14">
<title>g_unichar_get_script&#160;()</title>
<indexterm zone="g-unichar-get-script" role="2.14"><primary sortas="unichar_get_script">g_unichar_get_script</primary></indexterm>
<programlisting language="C"><link linkend="GUnicodeScript"><returnvalue>GUnicodeScript</returnvalue></link>
g_unichar_get_script (<parameter><link linkend="gunichar"><type>gunichar</type></link> ch</parameter>);</programlisting>
<para>Looks up the <link linkend="GUnicodeScript"><type>GUnicodeScript</type></link> for a particular character (as defined 
by Unicode Standard Annex #24). No check is made for <parameter>ch</parameter>
 being a
valid Unicode character; if you pass in invalid character, the
result is undefined.</para>
<para>This function is equivalent to <link linkend="pango-script-for-unichar"><function>pango_script_for_unichar()</function></link> and the
two are interchangeable.</para>
<refsect3 id="g-unichar-get-script.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>ch</para></entry>
<entry role="parameter_description"><para>a Unicode character</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="g-unichar-get-script.returns" role="returns">
<title>Returns</title>
<para> the <link linkend="GUnicodeScript"><type>GUnicodeScript</type></link> for the character.</para>
</refsect3><para role="since">Since: <link linkend="api-index-2.14">2.14</link></para></refsect2>
<refsect2 id="g-unicode-script-from-iso15924" role="function" condition="since:2.30">
<title>g_unicode_script_from_iso15924&#160;()</title>
<indexterm zone="g-unicode-script-from-iso15924" role="2.30"><primary sortas="unicode_script_from_iso15924">g_unicode_script_from_iso15924</primary></indexterm>
<programlisting language="C"><link linkend="GUnicodeScript"><returnvalue>GUnicodeScript</returnvalue></link>
g_unicode_script_from_iso15924 (<parameter><link linkend="guint32"><type>guint32</type></link> iso15924</parameter>);</programlisting>
<para>Looks up the Unicode script for <parameter>iso15924</parameter>
.  ISO 15924 assigns four-letter
codes to scripts.  For example, the code for Arabic is 'Arab'.
This function accepts four letter codes encoded as a <parameter>guint32</parameter>
 in a
big-endian fashion.  That is, the code expected for Arabic is
0x41726162 (0x41 is ASCII code for 'A', 0x72 is ASCII code for 'r', etc).</para>
<para>See
<ulink url="http://unicode.org/iso15924/codelists.html">Codes for the representation of names of scripts</ulink>
for details.</para>
<refsect3 id="g-unicode-script-from-iso15924.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>iso15924</para></entry>
<entry role="parameter_description"><para>a Unicode script</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="g-unicode-script-from-iso15924.returns" role="returns">
<title>Returns</title>
<para> the Unicode script for <parameter>iso15924</parameter>
, or
of <link linkend="G-UNICODE-SCRIPT-INVALID-CODE:CAPS"><literal>G_UNICODE_SCRIPT_INVALID_CODE</literal></link> if <parameter>iso15924</parameter>
is zero and
<link linkend="G-UNICODE-SCRIPT-UNKNOWN:CAPS"><literal>G_UNICODE_SCRIPT_UNKNOWN</literal></link> if <parameter>iso15924</parameter>
is unknown.</para>
</refsect3><para role="since">Since: <link linkend="api-index-2.30">2.30</link></para></refsect2>
<refsect2 id="g-unicode-script-to-iso15924" role="function" condition="since:2.30">
<title>g_unicode_script_to_iso15924&#160;()</title>
<indexterm zone="g-unicode-script-to-iso15924" role="2.30"><primary sortas="unicode_script_to_iso15924">g_unicode_script_to_iso15924</primary></indexterm>
<programlisting language="C"><link linkend="guint32"><returnvalue>guint32</returnvalue></link>
g_unicode_script_to_iso15924 (<parameter><link linkend="GUnicodeScript"><type>GUnicodeScript</type></link> script</parameter>);</programlisting>
<para>Looks up the ISO 15924 code for <parameter>script</parameter>
.  ISO 15924 assigns four-letter
codes to scripts.  For example, the code for Arabic is 'Arab'.  The
four letter codes are encoded as a <parameter>guint32</parameter>
 by this function in a
big-endian fashion.  That is, the code returned for Arabic is
0x41726162 (0x41 is ASCII code for 'A', 0x72 is ASCII code for 'r', etc).</para>
<para>See
<ulink url="http://unicode.org/iso15924/codelists.html">Codes for the representation of names of scripts</ulink>
for details.</para>
<refsect3 id="g-unicode-script-to-iso15924.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>script</para></entry>
<entry role="parameter_description"><para>a Unicode script</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="g-unicode-script-to-iso15924.returns" role="returns">
<title>Returns</title>
<para> the ISO 15924 code for <parameter>script</parameter>
, encoded as an integer,
of zero if <parameter>script</parameter>
is <link linkend="G-UNICODE-SCRIPT-INVALID-CODE:CAPS"><literal>G_UNICODE_SCRIPT_INVALID_CODE</literal></link> or
ISO 15924 code 'Zzzz' (script code for UNKNOWN) if <parameter>script</parameter>
is not understood.</para>
</refsect3><para role="since">Since: <link linkend="api-index-2.30">2.30</link></para></refsect2>
<refsect2 id="g-utf8-next-char" role="macro">
<title>g_utf8_next_char()</title>
<indexterm zone="g-utf8-next-char"><primary sortas="utf8_next_char">g_utf8_next_char</primary></indexterm>
<programlisting language="C">#define             g_utf8_next_char(p)</programlisting>
<para>Skips to the next character in a UTF-8 string. The string must be
valid; this macro is as fast as possible, and has no error-checking.
You would use this macro to iterate over a string character by
character. The macro returns the start of the next UTF-8 character.
Before using this macro, use <link linkend="g-utf8-validate"><function>g_utf8_validate()</function></link> to validate strings
that may contain invalid UTF-8.</para>
<refsect3 id="g-utf8-next-char.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>p</para></entry>
<entry role="parameter_description"><para>Pointer to the start of a valid UTF-8 character</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="g-utf8-get-char" role="function">
<title>g_utf8_get_char&#160;()</title>
<indexterm zone="g-utf8-get-char"><primary sortas="utf8_get_char">g_utf8_get_char</primary></indexterm>
<programlisting language="C"><link linkend="gunichar"><returnvalue>gunichar</returnvalue></link>
g_utf8_get_char (<parameter>const <link linkend="gchar"><type>gchar</type></link> *p</parameter>);</programlisting>
<para>Converts a sequence of bytes encoded as UTF-8 to a Unicode character.</para>
<para>If <parameter>p</parameter>
 does not point to a valid UTF-8 encoded character, results
are undefined. If you are not sure that the bytes are complete
valid Unicode characters, you should use <link linkend="g-utf8-get-char-validated"><function>g_utf8_get_char_validated()</function></link>
instead.</para>
<refsect3 id="g-utf8-get-char.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>p</para></entry>
<entry role="parameter_description"><para>a pointer to Unicode character encoded as UTF-8</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="g-utf8-get-char.returns" role="returns">
<title>Returns</title>
<para> the resulting character</para>
</refsect3></refsect2>
<refsect2 id="g-utf8-get-char-validated" role="function">
<title>g_utf8_get_char_validated&#160;()</title>
<indexterm zone="g-utf8-get-char-validated"><primary sortas="utf8_get_char_validated">g_utf8_get_char_validated</primary></indexterm>
<programlisting language="C"><link linkend="gunichar"><returnvalue>gunichar</returnvalue></link>
g_utf8_get_char_validated (<parameter>const <link linkend="gchar"><type>gchar</type></link> *p</parameter>,
                           <parameter><link linkend="gssize"><type>gssize</type></link> max_len</parameter>);</programlisting>
<para>Convert a sequence of bytes encoded as UTF-8 to a Unicode character.
This function checks for incomplete characters, for invalid characters
such as characters that are out of the range of Unicode, and for
overlong encodings of valid characters.</para>
<para>Note that <link linkend="g-utf8-get-char-validated"><function>g_utf8_get_char_validated()</function></link> returns (gunichar)-2 if
<parameter>max_len</parameter>
 is positive and any of the bytes in the first UTF-8 character
sequence are nul.</para>
<refsect3 id="g-utf8-get-char-validated.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>p</para></entry>
<entry role="parameter_description"><para>a pointer to Unicode character encoded as UTF-8</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>max_len</para></entry>
<entry role="parameter_description"><para>the maximum number of bytes to read, or -1 if <parameter>p</parameter>
is nul-terminated</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="g-utf8-get-char-validated.returns" role="returns">
<title>Returns</title>
<para> the resulting character. If <parameter>p</parameter>
points to a partial
sequence at the end of a string that could begin a valid
character (or if <parameter>max_len</parameter>
is zero), returns (gunichar)-2;
otherwise, if <parameter>p</parameter>
does not point to a valid UTF-8 encoded
Unicode character, returns (gunichar)-1.</para>
</refsect3></refsect2>
<refsect2 id="g-utf8-offset-to-pointer" role="function">
<title>g_utf8_offset_to_pointer&#160;()</title>
<indexterm zone="g-utf8-offset-to-pointer"><primary sortas="utf8_offset_to_pointer">g_utf8_offset_to_pointer</primary></indexterm>
<programlisting language="C"><link linkend="gchar"><returnvalue>gchar</returnvalue></link>&#160;*
g_utf8_offset_to_pointer (<parameter>const <link linkend="gchar"><type>gchar</type></link> *str</parameter>,
                          <parameter><link linkend="glong"><type>glong</type></link> offset</parameter>);</programlisting>
<para>Converts from an integer character offset to a pointer to a position
within the string.</para>
<para>Since 2.10, this function allows to pass a negative <parameter>offset</parameter>
 to
step backwards. It is usually worth stepping backwards from the end
instead of forwards if <parameter>offset</parameter>
 is in the last fourth of the string,
since moving forward is about 3 times faster than moving backward.</para>
<para>Note that this function doesn't abort when reaching the end of <parameter>str</parameter>
.
Therefore you should be sure that <parameter>offset</parameter>
 is within string boundaries
before calling that function. Call <link linkend="g-utf8-strlen"><function>g_utf8_strlen()</function></link> when unsure.
This limitation exists as this function is called frequently during
text rendering and therefore has to be as fast as possible.</para>
<refsect3 id="g-utf8-offset-to-pointer.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>str</para></entry>
<entry role="parameter_description"><para>a UTF-8 encoded string</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>offset</para></entry>
<entry role="parameter_description"><para>a character offset within <parameter>str</parameter>
</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="g-utf8-offset-to-pointer.returns" role="returns">
<title>Returns</title>
<para> the resulting pointer</para>
</refsect3></refsect2>
<refsect2 id="g-utf8-pointer-to-offset" role="function">
<title>g_utf8_pointer_to_offset&#160;()</title>
<indexterm zone="g-utf8-pointer-to-offset"><primary sortas="utf8_pointer_to_offset">g_utf8_pointer_to_offset</primary></indexterm>
<programlisting language="C"><link linkend="glong"><returnvalue>glong</returnvalue></link>
g_utf8_pointer_to_offset (<parameter>const <link linkend="gchar"><type>gchar</type></link> *str</parameter>,
                          <parameter>const <link linkend="gchar"><type>gchar</type></link> *pos</parameter>);</programlisting>
<para>Converts from a pointer to position within a string to a integer
character offset.</para>
<para>Since 2.10, this function allows <parameter>pos</parameter>
 to be before <parameter>str</parameter>
, and returns
a negative offset in this case.</para>
<refsect3 id="g-utf8-pointer-to-offset.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>str</para></entry>
<entry role="parameter_description"><para>a UTF-8 encoded string</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>pos</para></entry>
<entry role="parameter_description"><para>a pointer to a position within <parameter>str</parameter>
</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="g-utf8-pointer-to-offset.returns" role="returns">
<title>Returns</title>
<para> the resulting character offset</para>
</refsect3></refsect2>
<refsect2 id="g-utf8-prev-char" role="function">
<title>g_utf8_prev_char&#160;()</title>
<indexterm zone="g-utf8-prev-char"><primary sortas="utf8_prev_char">g_utf8_prev_char</primary></indexterm>
<programlisting language="C"><link linkend="gchar"><returnvalue>gchar</returnvalue></link>&#160;*
g_utf8_prev_char (<parameter>const <link linkend="gchar"><type>gchar</type></link> *p</parameter>);</programlisting>
<para>Finds the previous UTF-8 character in the string before <parameter>p</parameter>
.</para>
<para><parameter>p</parameter>
 does not have to be at the beginning of a UTF-8 character. No check
is made to see if the character found is actually valid other than
it starts with an appropriate byte. If <parameter>p</parameter>
 might be the first
character of the string, you must use <link linkend="g-utf8-find-prev-char"><function>g_utf8_find_prev_char()</function></link> instead.</para>
<refsect3 id="g-utf8-prev-char.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>p</para></entry>
<entry role="parameter_description"><para>a pointer to a position within a UTF-8 encoded string</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="g-utf8-prev-char.returns" role="returns">
<title>Returns</title>
<para> a pointer to the found character</para>
</refsect3></refsect2>
<refsect2 id="g-utf8-find-next-char" role="function">
<title>g_utf8_find_next_char&#160;()</title>
<indexterm zone="g-utf8-find-next-char"><primary sortas="utf8_find_next_char">g_utf8_find_next_char</primary></indexterm>
<programlisting language="C"><link linkend="gchar"><returnvalue>gchar</returnvalue></link>&#160;*
g_utf8_find_next_char (<parameter>const <link linkend="gchar"><type>gchar</type></link> *p</parameter>,
                       <parameter>const <link linkend="gchar"><type>gchar</type></link> *end</parameter>);</programlisting>
<para>Finds the start of the next UTF-8 character in the string after <parameter>p</parameter>
.</para>
<para><parameter>p</parameter>
 does not have to be at the beginning of a UTF-8 character. No check
is made to see if the character found is actually valid other than
it starts with an appropriate byte.</para>
<para>If <parameter>end</parameter>
 is <link linkend="NULL:CAPS"><literal>NULL</literal></link>, the return value will never be <link linkend="NULL:CAPS"><literal>NULL</literal></link>: if the end of the
string is reached, a pointer to the terminating nul byte is returned. If
<parameter>end</parameter>
 is non-<link linkend="NULL:CAPS"><literal>NULL</literal></link>, the return value will be <link linkend="NULL:CAPS"><literal>NULL</literal></link> if the end of the string
is reached.</para>
<refsect3 id="g-utf8-find-next-char.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>p</para></entry>
<entry role="parameter_description"><para>a pointer to a position within a UTF-8 encoded string</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>end</para></entry>
<entry role="parameter_description"><para>a pointer to the byte following the end of the string,
or <link linkend="NULL:CAPS"><literal>NULL</literal></link> to indicate that the string is nul-terminated. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>nullable</acronym>]</emphasis></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="g-utf8-find-next-char.returns" role="returns">
<title>Returns</title>
<para>a pointer to the found character or <link linkend="NULL:CAPS"><literal>NULL</literal></link> if <parameter>end</parameter>
is
set and is reached. </para>
<para><emphasis role="annotation">[<acronym>nullable</acronym>]</emphasis></para>
</refsect3></refsect2>
<refsect2 id="g-utf8-find-prev-char" role="function">
<title>g_utf8_find_prev_char&#160;()</title>
<indexterm zone="g-utf8-find-prev-char"><primary sortas="utf8_find_prev_char">g_utf8_find_prev_char</primary></indexterm>
<programlisting language="C"><link linkend="gchar"><returnvalue>gchar</returnvalue></link>&#160;*
g_utf8_find_prev_char (<parameter>const <link linkend="gchar"><type>gchar</type></link> *str</parameter>,
                       <parameter>const <link linkend="gchar"><type>gchar</type></link> *p</parameter>);</programlisting>
<para>Given a position <parameter>p</parameter>
 with a UTF-8 encoded string <parameter>str</parameter>
, find the start
of the previous UTF-8 character starting before <parameter>p</parameter>
. Returns <link linkend="NULL:CAPS"><literal>NULL</literal></link> if no
UTF-8 characters are present in <parameter>str</parameter>
 before <parameter>p</parameter>
.</para>
<para><parameter>p</parameter>
 does not have to be at the beginning of a UTF-8 character. No check
is made to see if the character found is actually valid other than
it starts with an appropriate byte.</para>
<refsect3 id="g-utf8-find-prev-char.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>str</para></entry>
<entry role="parameter_description"><para>pointer to the beginning of a UTF-8 encoded string</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>p</para></entry>
<entry role="parameter_description"><para>pointer to some position within <parameter>str</parameter>
</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="g-utf8-find-prev-char.returns" role="returns">
<title>Returns</title>
<para> a pointer to the found character or <link linkend="NULL:CAPS"><literal>NULL</literal></link>.</para>
</refsect3></refsect2>
<refsect2 id="g-utf8-strlen" role="function">
<title>g_utf8_strlen&#160;()</title>
<indexterm zone="g-utf8-strlen"><primary sortas="utf8_strlen">g_utf8_strlen</primary></indexterm>
<programlisting language="C"><link linkend="glong"><returnvalue>glong</returnvalue></link>
g_utf8_strlen (<parameter>const <link linkend="gchar"><type>gchar</type></link> *p</parameter>,
               <parameter><link linkend="gssize"><type>gssize</type></link> max</parameter>);</programlisting>
<para>Computes the length of the string in characters, not including
the terminating nul character. If the <parameter>max</parameter>
'th byte falls in the
middle of a character, the last (partial) character is not counted.</para>
<refsect3 id="g-utf8-strlen.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>p</para></entry>
<entry role="parameter_description"><para>pointer to the start of a UTF-8 encoded string</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>max</para></entry>
<entry role="parameter_description"><para>the maximum number of bytes to examine. If <parameter>max</parameter>
is less than 0, then the string is assumed to be
nul-terminated. If <parameter>max</parameter>
is 0, <parameter>p</parameter>
will not be examined and
may be <link linkend="NULL:CAPS"><literal>NULL</literal></link>. If <parameter>max</parameter>
is greater than 0, up to <parameter>max</parameter>
bytes are examined</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="g-utf8-strlen.returns" role="returns">
<title>Returns</title>
<para> the length of the string in characters</para>
</refsect3></refsect2>
<refsect2 id="g-utf8-strncpy" role="function">
<title>g_utf8_strncpy&#160;()</title>
<indexterm zone="g-utf8-strncpy"><primary sortas="utf8_strncpy">g_utf8_strncpy</primary></indexterm>
<programlisting language="C"><link linkend="gchar"><returnvalue>gchar</returnvalue></link>&#160;*
g_utf8_strncpy (<parameter><link linkend="gchar"><type>gchar</type></link> *dest</parameter>,
                <parameter>const <link linkend="gchar"><type>gchar</type></link> *src</parameter>,
                <parameter><link linkend="gsize"><type>gsize</type></link> n</parameter>);</programlisting>
<para>Like the standard C <link linkend="strncpy"><function>strncpy()</function></link> function, but copies a given number
of characters instead of a given number of bytes. The <parameter>src</parameter>
 string
must be valid UTF-8 encoded text. (Use <link linkend="g-utf8-validate"><function>g_utf8_validate()</function></link> on all
text before trying to use UTF-8 utility functions with it.)</para>
<para>Note you must ensure <parameter>dest</parameter>
 is at least 4 * <parameter>n</parameter>
 to fit the
largest possible UTF-8 characters</para>
<refsect3 id="g-utf8-strncpy.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>dest</para></entry>
<entry role="parameter_description"><para>buffer to fill with characters from <parameter>src</parameter>
</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>src</para></entry>
<entry role="parameter_description"><para>UTF-8 encoded string</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>n</para></entry>
<entry role="parameter_description"><para>character count</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="g-utf8-strncpy.returns" role="returns">
<title>Returns</title>
<para> <parameter>dest</parameter>
</para>
</refsect3></refsect2>
<refsect2 id="g-utf8-strchr" role="function">
<title>g_utf8_strchr&#160;()</title>
<indexterm zone="g-utf8-strchr"><primary sortas="utf8_strchr">g_utf8_strchr</primary></indexterm>
<programlisting language="C"><link linkend="gchar"><returnvalue>gchar</returnvalue></link>&#160;*
g_utf8_strchr (<parameter>const <link linkend="gchar"><type>gchar</type></link> *p</parameter>,
               <parameter><link linkend="gssize"><type>gssize</type></link> len</parameter>,
               <parameter><link linkend="gunichar"><type>gunichar</type></link> c</parameter>);</programlisting>
<para>Finds the leftmost occurrence of the given Unicode character
in a UTF-8 encoded string, while limiting the search to <parameter>len</parameter>
 bytes.
If <parameter>len</parameter>
 is -1, allow unbounded search.</para>
<refsect3 id="g-utf8-strchr.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>p</para></entry>
<entry role="parameter_description"><para>a nul-terminated UTF-8 encoded string</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>len</para></entry>
<entry role="parameter_description"><para>the maximum length of <parameter>p</parameter>
</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>c</para></entry>
<entry role="parameter_description"><para>a Unicode character</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="g-utf8-strchr.returns" role="returns">
<title>Returns</title>
<para> <link linkend="NULL:CAPS"><literal>NULL</literal></link> if the string does not contain the character,
otherwise, a pointer to the start of the leftmost occurrence
of the character in the string.</para>
</refsect3></refsect2>
<refsect2 id="g-utf8-strrchr" role="function">
<title>g_utf8_strrchr&#160;()</title>
<indexterm zone="g-utf8-strrchr"><primary sortas="utf8_strrchr">g_utf8_strrchr</primary></indexterm>
<programlisting language="C"><link linkend="gchar"><returnvalue>gchar</returnvalue></link>&#160;*
g_utf8_strrchr (<parameter>const <link linkend="gchar"><type>gchar</type></link> *p</parameter>,
                <parameter><link linkend="gssize"><type>gssize</type></link> len</parameter>,
                <parameter><link linkend="gunichar"><type>gunichar</type></link> c</parameter>);</programlisting>
<para>Find the rightmost occurrence of the given Unicode character
in a UTF-8 encoded string, while limiting the search to <parameter>len</parameter>
 bytes.
If <parameter>len</parameter>
 is -1, allow unbounded search.</para>
<refsect3 id="g-utf8-strrchr.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>p</para></entry>
<entry role="parameter_description"><para>a nul-terminated UTF-8 encoded string</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>len</para></entry>
<entry role="parameter_description"><para>the maximum length of <parameter>p</parameter>
</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>c</para></entry>
<entry role="parameter_description"><para>a Unicode character</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="g-utf8-strrchr.returns" role="returns">
<title>Returns</title>
<para> <link linkend="NULL:CAPS"><literal>NULL</literal></link> if the string does not contain the character,
otherwise, a pointer to the start of the rightmost occurrence
of the character in the string.</para>
</refsect3></refsect2>
<refsect2 id="g-utf8-strreverse" role="function" condition="since:2.2">
<title>g_utf8_strreverse&#160;()</title>
<indexterm zone="g-utf8-strreverse" role="2.2"><primary sortas="utf8_strreverse">g_utf8_strreverse</primary></indexterm>
<programlisting language="C"><link linkend="gchar"><returnvalue>gchar</returnvalue></link>&#160;*
g_utf8_strreverse (<parameter>const <link linkend="gchar"><type>gchar</type></link> *str</parameter>,
                   <parameter><link linkend="gssize"><type>gssize</type></link> len</parameter>);</programlisting>
<para>Reverses a UTF-8 string. <parameter>str</parameter>
 must be valid UTF-8 encoded text. 
(Use <link linkend="g-utf8-validate"><function>g_utf8_validate()</function></link> on all text before trying to use UTF-8 
utility functions with it.)</para>
<para>This function is intended for programmatic uses of reversed strings.
It pays no attention to decomposed characters, combining marks, byte 
order marks, directional indicators (LRM, LRO, etc) and similar 
characters which might need special handling when reversing a string 
for display purposes.</para>
<para>Note that unlike <link linkend="g-strreverse"><function>g_strreverse()</function></link>, this function returns
newly-allocated memory, which should be freed with <link linkend="g-free"><function>g_free()</function></link> when
no longer needed.</para>
<refsect3 id="g-utf8-strreverse.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>str</para></entry>
<entry role="parameter_description"><para>a UTF-8 encoded string</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>len</para></entry>
<entry role="parameter_description"><para>the maximum length of <parameter>str</parameter>
to use, in bytes. If <parameter>len</parameter>
&lt; 0,
then the string is nul-terminated.</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="g-utf8-strreverse.returns" role="returns">
<title>Returns</title>
<para> a newly-allocated string which is the reverse of <parameter>str</parameter>
</para>
</refsect3><para role="since">Since: <link linkend="api-index-2.2">2.2</link></para></refsect2>
<refsect2 id="g-utf8-substring" role="function" condition="since:2.30">
<title>g_utf8_substring&#160;()</title>
<indexterm zone="g-utf8-substring" role="2.30"><primary sortas="utf8_substring">g_utf8_substring</primary></indexterm>
<programlisting language="C"><link linkend="gchar"><returnvalue>gchar</returnvalue></link>&#160;*
g_utf8_substring (<parameter>const <link linkend="gchar"><type>gchar</type></link> *str</parameter>,
                  <parameter><link linkend="glong"><type>glong</type></link> start_pos</parameter>,
                  <parameter><link linkend="glong"><type>glong</type></link> end_pos</parameter>);</programlisting>
<para>Copies a substring out of a UTF-8 encoded string.
The substring will contain <parameter>end_pos</parameter>
 - <parameter>start_pos</parameter>
 characters.</para>
<refsect3 id="g-utf8-substring.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>str</para></entry>
<entry role="parameter_description"><para>a UTF-8 encoded string</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>start_pos</para></entry>
<entry role="parameter_description"><para>a character offset within <parameter>str</parameter>
</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>end_pos</para></entry>
<entry role="parameter_description"><para>another character offset within <parameter>str</parameter>
</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="g-utf8-substring.returns" role="returns">
<title>Returns</title>
<para> a newly allocated copy of the requested
substring. Free with <link linkend="g-free"><function>g_free()</function></link> when no longer needed.</para>
</refsect3><para role="since">Since: <link linkend="api-index-2.30">2.30</link></para></refsect2>
<refsect2 id="g-utf8-validate" role="function">
<title>g_utf8_validate&#160;()</title>
<indexterm zone="g-utf8-validate"><primary sortas="utf8_validate">g_utf8_validate</primary></indexterm>
<programlisting language="C"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
g_utf8_validate (<parameter>const <link linkend="gchar"><type>gchar</type></link> *str</parameter>,
                 <parameter><link linkend="gssize"><type>gssize</type></link> max_len</parameter>,
                 <parameter>const <link linkend="gchar"><type>gchar</type></link> **end</parameter>);</programlisting>
<para>Validates UTF-8 encoded text. <parameter>str</parameter>
 is the text to validate;
if <parameter>str</parameter>
 is nul-terminated, then <parameter>max_len</parameter>
 can be -1, otherwise
<parameter>max_len</parameter>
 should be the number of bytes to validate.
If <parameter>end</parameter>
 is non-<link linkend="NULL:CAPS"><literal>NULL</literal></link>, then the end of the valid range
will be stored there (i.e. the start of the first invalid 
character if some bytes were invalid, or the end of the text 
being validated otherwise).</para>
<para>Note that <link linkend="g-utf8-validate"><function>g_utf8_validate()</function></link> returns <link linkend="FALSE:CAPS"><literal>FALSE</literal></link> if <parameter>max_len</parameter>
 is 
positive and any of the <parameter>max_len</parameter>
 bytes are nul.</para>
<para>Returns <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> if all of <parameter>str</parameter>
 was valid. Many GLib and GTK+
routines require valid UTF-8 as input; so data read from a file
or the network should be checked with <link linkend="g-utf8-validate"><function>g_utf8_validate()</function></link> before
doing anything else with it.</para>
<refsect3 id="g-utf8-validate.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>str</para></entry>
<entry role="parameter_description"><para>a pointer to character data. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>array</acronym> length=max_len][<acronym>element-type</acronym> guint8]</emphasis></entry></row>
<row><entry role="parameter_name"><para>max_len</para></entry>
<entry role="parameter_description"><para>max bytes to validate, or -1 to go until NUL</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>end</para></entry>
<entry role="parameter_description"><para>return location for end of valid data. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>out</acronym>][<acronym>optional</acronym>][<acronym>transfer none</acronym>]</emphasis></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="g-utf8-validate.returns" role="returns">
<title>Returns</title>
<para> <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> if the text was valid UTF-8</para>
</refsect3></refsect2>
<refsect2 id="g-utf8-validate-len" role="function" condition="since:2.60">
<title>g_utf8_validate_len&#160;()</title>
<indexterm zone="g-utf8-validate-len" role="2.60"><primary sortas="utf8_validate_len">g_utf8_validate_len</primary></indexterm>
<programlisting language="C"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
g_utf8_validate_len (<parameter>const <link linkend="gchar"><type>gchar</type></link> *str</parameter>,
                     <parameter><link linkend="gsize"><type>gsize</type></link> max_len</parameter>,
                     <parameter>const <link linkend="gchar"><type>gchar</type></link> **end</parameter>);</programlisting>
<para>Validates UTF-8 encoded text.</para>
<para>As with <link linkend="g-utf8-validate"><function>g_utf8_validate()</function></link>, but <parameter>max_len</parameter>
 must be set, and hence this function
will always return <link linkend="FALSE:CAPS"><literal>FALSE</literal></link> if any of the bytes of <parameter>str</parameter>
 are nul.</para>
<refsect3 id="g-utf8-validate-len.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>str</para></entry>
<entry role="parameter_description"><para>a pointer to character data. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>array</acronym> length=max_len][<acronym>element-type</acronym> guint8]</emphasis></entry></row>
<row><entry role="parameter_name"><para>max_len</para></entry>
<entry role="parameter_description"><para>max bytes to validate</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>end</para></entry>
<entry role="parameter_description"><para>return location for end of valid data. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>out</acronym>][<acronym>optional</acronym>][<acronym>transfer none</acronym>]</emphasis></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="g-utf8-validate-len.returns" role="returns">
<title>Returns</title>
<para> <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> if the text was valid UTF-8</para>
</refsect3><para role="since">Since: <link linkend="api-index-2.60">2.60</link></para></refsect2>
<refsect2 id="g-utf8-make-valid" role="function" condition="since:2.52">
<title>g_utf8_make_valid&#160;()</title>
<indexterm zone="g-utf8-make-valid" role="2.52"><primary sortas="utf8_make_valid">g_utf8_make_valid</primary></indexterm>
<programlisting language="C"><link linkend="gchar"><returnvalue>gchar</returnvalue></link>&#160;*
g_utf8_make_valid (<parameter>const <link linkend="gchar"><type>gchar</type></link> *str</parameter>,
                   <parameter><link linkend="gssize"><type>gssize</type></link> len</parameter>);</programlisting>
<para>If the provided string is valid UTF-8, return a copy of it. If not,
return a copy in which bytes that could not be interpreted as valid Unicode
are replaced with the Unicode replacement character (U+FFFD).</para>
<para>For example, this is an appropriate function to use if you have received
a string that was incorrectly declared to be UTF-8, and you need a valid
UTF-8 version of it that can be logged or displayed to the user, with the
assumption that it is close enough to ASCII or UTF-8 to be mostly
readable as-is.</para>
<refsect3 id="g-utf8-make-valid.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>str</para></entry>
<entry role="parameter_description"><para>string to coerce into UTF-8</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>len</para></entry>
<entry role="parameter_description"><para>the maximum length of <parameter>str</parameter>
to use, in bytes. If <parameter>len</parameter>
&lt; 0,
then the string is nul-terminated.</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="g-utf8-make-valid.returns" role="returns">
<title>Returns</title>
<para>a valid UTF-8 string whose content resembles <parameter>str</parameter>
. </para>
<para><emphasis role="annotation">[<acronym>transfer full</acronym>]</emphasis></para>
</refsect3><para role="since">Since: <link linkend="api-index-2.52">2.52</link></para></refsect2>
<refsect2 id="g-utf8-strup" role="function">
<title>g_utf8_strup&#160;()</title>
<indexterm zone="g-utf8-strup"><primary sortas="utf8_strup">g_utf8_strup</primary></indexterm>
<programlisting language="C"><link linkend="gchar"><returnvalue>gchar</returnvalue></link>&#160;*
g_utf8_strup (<parameter>const <link linkend="gchar"><type>gchar</type></link> *str</parameter>,
              <parameter><link linkend="gssize"><type>gssize</type></link> len</parameter>);</programlisting>
<para>Converts all Unicode characters in the string that have a case
to uppercase. The exact manner that this is done depends
on the current locale, and may result in the number of
characters in the string increasing. (For instance, the
German ess-zet will be changed to SS.)</para>
<refsect3 id="g-utf8-strup.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>str</para></entry>
<entry role="parameter_description"><para>a UTF-8 encoded string</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>len</para></entry>
<entry role="parameter_description"><para>length of <parameter>str</parameter>
, in bytes, or -1 if <parameter>str</parameter>
is nul-terminated.</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="g-utf8-strup.returns" role="returns">
<title>Returns</title>
<para> a newly allocated string, with all characters
converted to uppercase.  </para>
</refsect3></refsect2>
<refsect2 id="g-utf8-strdown" role="function">
<title>g_utf8_strdown&#160;()</title>
<indexterm zone="g-utf8-strdown"><primary sortas="utf8_strdown">g_utf8_strdown</primary></indexterm>
<programlisting language="C"><link linkend="gchar"><returnvalue>gchar</returnvalue></link>&#160;*
g_utf8_strdown (<parameter>const <link linkend="gchar"><type>gchar</type></link> *str</parameter>,
                <parameter><link linkend="gssize"><type>gssize</type></link> len</parameter>);</programlisting>
<para>Converts all Unicode characters in the string that have a case
to lowercase. The exact manner that this is done depends
on the current locale, and may result in the number of
characters in the string changing.</para>
<refsect3 id="g-utf8-strdown.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>str</para></entry>
<entry role="parameter_description"><para>a UTF-8 encoded string</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>len</para></entry>
<entry role="parameter_description"><para>length of <parameter>str</parameter>
, in bytes, or -1 if <parameter>str</parameter>
is nul-terminated.</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="g-utf8-strdown.returns" role="returns">
<title>Returns</title>
<para> a newly allocated string, with all characters
converted to lowercase.  </para>
</refsect3></refsect2>
<refsect2 id="g-utf8-casefold" role="function">
<title>g_utf8_casefold&#160;()</title>
<indexterm zone="g-utf8-casefold"><primary sortas="utf8_casefold">g_utf8_casefold</primary></indexterm>
<programlisting language="C"><link linkend="gchar"><returnvalue>gchar</returnvalue></link>&#160;*
g_utf8_casefold (<parameter>const <link linkend="gchar"><type>gchar</type></link> *str</parameter>,
                 <parameter><link linkend="gssize"><type>gssize</type></link> len</parameter>);</programlisting>
<para>Converts a string into a form that is independent of case. The
result will not correspond to any particular case, but can be
compared for equality or ordered with the results of calling
<link linkend="g-utf8-casefold"><function>g_utf8_casefold()</function></link> on other strings.</para>
<para>Note that calling <link linkend="g-utf8-casefold"><function>g_utf8_casefold()</function></link> followed by <link linkend="g-utf8-collate"><function>g_utf8_collate()</function></link> is
only an approximation to the correct linguistic case insensitive
ordering, though it is a fairly good one. Getting this exactly
right would require a more sophisticated collation function that
takes case sensitivity into account. GLib does not currently
provide such a function.</para>
<refsect3 id="g-utf8-casefold.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>str</para></entry>
<entry role="parameter_description"><para>a UTF-8 encoded string</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>len</para></entry>
<entry role="parameter_description"><para>length of <parameter>str</parameter>
, in bytes, or -1 if <parameter>str</parameter>
is nul-terminated.</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="g-utf8-casefold.returns" role="returns">
<title>Returns</title>
<para> a newly allocated string, that is a
case independent form of <parameter>str</parameter>
.</para>
</refsect3></refsect2>
<refsect2 id="g-utf8-normalize" role="function">
<title>g_utf8_normalize&#160;()</title>
<indexterm zone="g-utf8-normalize"><primary sortas="utf8_normalize">g_utf8_normalize</primary></indexterm>
<programlisting language="C"><link linkend="gchar"><returnvalue>gchar</returnvalue></link>&#160;*
g_utf8_normalize (<parameter>const <link linkend="gchar"><type>gchar</type></link> *str</parameter>,
                  <parameter><link linkend="gssize"><type>gssize</type></link> len</parameter>,
                  <parameter><link linkend="GNormalizeMode"><type>GNormalizeMode</type></link> mode</parameter>);</programlisting>
<para>Converts a string into canonical form, standardizing
such issues as whether a character with an accent
is represented as a base character and combining
accent or as a single precomposed character. The
string has to be valid UTF-8, otherwise <link linkend="NULL:CAPS"><literal>NULL</literal></link> is
returned. You should generally call <link linkend="g-utf8-normalize"><function>g_utf8_normalize()</function></link>
before comparing two Unicode strings.</para>
<para>The normalization mode <link linkend="G-NORMALIZE-DEFAULT:CAPS"><literal>G_NORMALIZE_DEFAULT</literal></link> only
standardizes differences that do not affect the
text content, such as the above-mentioned accent
representation. <link linkend="G-NORMALIZE-ALL:CAPS"><literal>G_NORMALIZE_ALL</literal></link> also standardizes
the "compatibility" characters in Unicode, such
as SUPERSCRIPT THREE to the standard forms
(in this case DIGIT THREE). Formatting information
may be lost but for most text operations such
characters should be considered the same.</para>
<para><link linkend="G-NORMALIZE-DEFAULT-COMPOSE:CAPS"><literal>G_NORMALIZE_DEFAULT_COMPOSE</literal></link> and <link linkend="G-NORMALIZE-ALL-COMPOSE:CAPS"><literal>G_NORMALIZE_ALL_COMPOSE</literal></link>
are like <link linkend="G-NORMALIZE-DEFAULT:CAPS"><literal>G_NORMALIZE_DEFAULT</literal></link> and <link linkend="G-NORMALIZE-ALL:CAPS"><literal>G_NORMALIZE_ALL</literal></link>,
but returned a result with composed forms rather
than a maximally decomposed form. This is often
useful if you intend to convert the string to
a legacy encoding or pass it to a system with
less capable Unicode handling.</para>
<refsect3 id="g-utf8-normalize.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>str</para></entry>
<entry role="parameter_description"><para>a UTF-8 encoded string.</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>len</para></entry>
<entry role="parameter_description"><para>length of <parameter>str</parameter>
, in bytes, or -1 if <parameter>str</parameter>
is nul-terminated.</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>mode</para></entry>
<entry role="parameter_description"><para>the type of normalization to perform.</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="g-utf8-normalize.returns" role="returns">
<title>Returns</title>
<para> a newly allocated string, that is the
normalized form of <parameter>str</parameter>
, or <link linkend="NULL:CAPS"><literal>NULL</literal></link> if <parameter>str</parameter>
is not
valid UTF-8.</para>
</refsect3></refsect2>
<refsect2 id="g-utf8-collate" role="function">
<title>g_utf8_collate&#160;()</title>
<indexterm zone="g-utf8-collate"><primary sortas="utf8_collate">g_utf8_collate</primary></indexterm>
<programlisting language="C"><link linkend="gint"><returnvalue>gint</returnvalue></link>
g_utf8_collate (<parameter>const <link linkend="gchar"><type>gchar</type></link> *str1</parameter>,
                <parameter>const <link linkend="gchar"><type>gchar</type></link> *str2</parameter>);</programlisting>
<para>Compares two strings for ordering using the linguistically
correct rules for the <link linkend="setlocale">current locale</link>.
When sorting a large number of strings, it will be significantly 
faster to obtain collation keys with <link linkend="g-utf8-collate-key"><function>g_utf8_collate_key()</function></link> and 
compare the keys with <link linkend="strcmp"><function>strcmp()</function></link> when sorting instead of sorting 
the original strings.</para>
<refsect3 id="g-utf8-collate.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>str1</para></entry>
<entry role="parameter_description"><para>a UTF-8 encoded string</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>str2</para></entry>
<entry role="parameter_description"><para>a UTF-8 encoded string</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="g-utf8-collate.returns" role="returns">
<title>Returns</title>
<para> &lt; 0 if <parameter>str1</parameter>
compares before <parameter>str2</parameter>
,
0 if they compare equal, &gt; 0 if <parameter>str1</parameter>
compares after <parameter>str2</parameter>
.</para>
</refsect3></refsect2>
<refsect2 id="g-utf8-collate-key" role="function">
<title>g_utf8_collate_key&#160;()</title>
<indexterm zone="g-utf8-collate-key"><primary sortas="utf8_collate_key">g_utf8_collate_key</primary></indexterm>
<programlisting language="C"><link linkend="gchar"><returnvalue>gchar</returnvalue></link>&#160;*
g_utf8_collate_key (<parameter>const <link linkend="gchar"><type>gchar</type></link> *str</parameter>,
                    <parameter><link linkend="gssize"><type>gssize</type></link> len</parameter>);</programlisting>
<para>Converts a string into a collation key that can be compared
with other collation keys produced by the same function using 
<link linkend="strcmp"><function>strcmp()</function></link>. </para>
<para>The results of comparing the collation keys of two strings 
with <link linkend="strcmp"><function>strcmp()</function></link> will always be the same as comparing the two 
original keys with <link linkend="g-utf8-collate"><function>g_utf8_collate()</function></link>.</para>
<para>Note that this function depends on the <link linkend="setlocale">current locale</link>.</para>
<refsect3 id="g-utf8-collate-key.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>str</para></entry>
<entry role="parameter_description"><para>a UTF-8 encoded string.</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>len</para></entry>
<entry role="parameter_description"><para>length of <parameter>str</parameter>
, in bytes, or -1 if <parameter>str</parameter>
is nul-terminated.</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="g-utf8-collate-key.returns" role="returns">
<title>Returns</title>
<para> a newly allocated string. This string should
be freed with <link linkend="g-free"><function>g_free()</function></link> when you are done with it.</para>
</refsect3></refsect2>
<refsect2 id="g-utf8-collate-key-for-filename" role="function" condition="since:2.8">
<title>g_utf8_collate_key_for_filename&#160;()</title>
<indexterm zone="g-utf8-collate-key-for-filename" role="2.8"><primary sortas="utf8_collate_key_for_filename">g_utf8_collate_key_for_filename</primary></indexterm>
<programlisting language="C"><link linkend="gchar"><returnvalue>gchar</returnvalue></link>&#160;*
g_utf8_collate_key_for_filename (<parameter>const <link linkend="gchar"><type>gchar</type></link> *str</parameter>,
                                 <parameter><link linkend="gssize"><type>gssize</type></link> len</parameter>);</programlisting>
<para>Converts a string into a collation key that can be compared
with other collation keys produced by the same function using <link linkend="strcmp"><function>strcmp()</function></link>. </para>
<para>In order to sort filenames correctly, this function treats the dot '.' 
as a special case. Most dictionary orderings seem to consider it
insignificant, thus producing the ordering "event.c" "eventgenerator.c"
"event.h" instead of "event.c" "event.h" "eventgenerator.c". Also, we
would like to treat numbers intelligently so that "file1" "file10" "file5"
is sorted as "file1" "file5" "file10".</para>
<para>Note that this function depends on the <link linkend="setlocale">current locale</link>.</para>
<refsect3 id="g-utf8-collate-key-for-filename.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>str</para></entry>
<entry role="parameter_description"><para>a UTF-8 encoded string.</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>len</para></entry>
<entry role="parameter_description"><para>length of <parameter>str</parameter>
, in bytes, or -1 if <parameter>str</parameter>
is nul-terminated.</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="g-utf8-collate-key-for-filename.returns" role="returns">
<title>Returns</title>
<para> a newly allocated string. This string should
be freed with <link linkend="g-free"><function>g_free()</function></link> when you are done with it.</para>
</refsect3><para role="since">Since: <link linkend="api-index-2.8">2.8</link></para></refsect2>
<refsect2 id="g-utf8-to-utf16" role="function">
<title>g_utf8_to_utf16&#160;()</title>
<indexterm zone="g-utf8-to-utf16"><primary sortas="utf8_to_utf16">g_utf8_to_utf16</primary></indexterm>
<programlisting language="C"><link linkend="gunichar2"><returnvalue>gunichar2</returnvalue></link>&#160;*
g_utf8_to_utf16 (<parameter>const <link linkend="gchar"><type>gchar</type></link> *str</parameter>,
                 <parameter><link linkend="glong"><type>glong</type></link> len</parameter>,
                 <parameter><link linkend="glong"><type>glong</type></link> *items_read</parameter>,
                 <parameter><link linkend="glong"><type>glong</type></link> *items_written</parameter>,
                 <parameter><link linkend="GError"><type>GError</type></link> **error</parameter>);</programlisting>
<para>Convert a string from UTF-8 to UTF-16. A 0 character will be
added to the result after the converted text.</para>
<refsect3 id="g-utf8-to-utf16.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>str</para></entry>
<entry role="parameter_description"><para>a UTF-8 encoded string</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>len</para></entry>
<entry role="parameter_description"><para>the maximum length (number of bytes) of <parameter>str</parameter>
to use.
If <parameter>len</parameter>
&lt; 0, then the string is nul-terminated.</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>items_read</para></entry>
<entry role="parameter_description"><para>location to store number of
bytes read, or <link linkend="NULL:CAPS"><literal>NULL</literal></link>. If <link linkend="NULL:CAPS"><literal>NULL</literal></link>, then <link linkend="G-CONVERT-ERROR-PARTIAL-INPUT:CAPS"><literal>G_CONVERT_ERROR_PARTIAL_INPUT</literal></link> will
be returned in case <parameter>str</parameter>
contains a trailing partial character. If
an error occurs then the index of the invalid input is stored here. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>out caller-allocates</acronym>][<acronym>optional</acronym>]</emphasis></entry></row>
<row><entry role="parameter_name"><para>items_written</para></entry>
<entry role="parameter_description"><para>location to store number
of <link linkend="gunichar2"><type>gunichar2</type></link> written, or <link linkend="NULL:CAPS"><literal>NULL</literal></link>. The value stored here does not include
the trailing 0. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>out caller-allocates</acronym>][<acronym>optional</acronym>]</emphasis></entry></row>
<row><entry role="parameter_name"><para>error</para></entry>
<entry role="parameter_description"><para>location to store the error occurring, or <link linkend="NULL:CAPS"><literal>NULL</literal></link> to ignore
errors. Any of the errors in <link linkend="GConvertError"><type>GConvertError</type></link> other than
<link linkend="G-CONVERT-ERROR-NO-CONVERSION:CAPS"><literal>G_CONVERT_ERROR_NO_CONVERSION</literal></link> may occur.</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="g-utf8-to-utf16.returns" role="returns">
<title>Returns</title>
<para> a pointer to a newly allocated UTF-16 string.
This value must be freed with <link linkend="g-free"><function>g_free()</function></link>. If an error occurs,
<link linkend="NULL:CAPS"><literal>NULL</literal></link> will be returned and <parameter>error</parameter>
set.</para>
</refsect3></refsect2>
<refsect2 id="g-utf8-to-ucs4" role="function">
<title>g_utf8_to_ucs4&#160;()</title>
<indexterm zone="g-utf8-to-ucs4"><primary sortas="utf8_to_ucs4">g_utf8_to_ucs4</primary></indexterm>
<programlisting language="C"><link linkend="gunichar"><returnvalue>gunichar</returnvalue></link>&#160;*
g_utf8_to_ucs4 (<parameter>const <link linkend="gchar"><type>gchar</type></link> *str</parameter>,
                <parameter><link linkend="glong"><type>glong</type></link> len</parameter>,
                <parameter><link linkend="glong"><type>glong</type></link> *items_read</parameter>,
                <parameter><link linkend="glong"><type>glong</type></link> *items_written</parameter>,
                <parameter><link linkend="GError"><type>GError</type></link> **error</parameter>);</programlisting>
<para>Convert a string from UTF-8 to a 32-bit fixed width
representation as UCS-4. A trailing 0 character will be added to the
string after the converted text.</para>
<refsect3 id="g-utf8-to-ucs4.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>str</para></entry>
<entry role="parameter_description"><para>a UTF-8 encoded string</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>len</para></entry>
<entry role="parameter_description"><para>the maximum length of <parameter>str</parameter>
to use, in bytes. If <parameter>len</parameter>
&lt; 0,
then the string is nul-terminated.</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>items_read</para></entry>
<entry role="parameter_description"><para>location to store number of
bytes read, or <link linkend="NULL:CAPS"><literal>NULL</literal></link>.
If <link linkend="NULL:CAPS"><literal>NULL</literal></link>, then <link linkend="G-CONVERT-ERROR-PARTIAL-INPUT:CAPS"><literal>G_CONVERT_ERROR_PARTIAL_INPUT</literal></link> will be
returned in case <parameter>str</parameter>
contains a trailing partial
character. If an error occurs then the index of the
invalid input is stored here. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>out caller-allocates</acronym>][<acronym>optional</acronym>]</emphasis></entry></row>
<row><entry role="parameter_name"><para>items_written</para></entry>
<entry role="parameter_description"><para>location to store number
of characters written or <link linkend="NULL:CAPS"><literal>NULL</literal></link>. The value here stored does not include
the trailing 0 character. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>out caller-allocates</acronym>][<acronym>optional</acronym>]</emphasis></entry></row>
<row><entry role="parameter_name"><para>error</para></entry>
<entry role="parameter_description"><para>location to store the error occurring, or <link linkend="NULL:CAPS"><literal>NULL</literal></link> to ignore
errors. Any of the errors in <link linkend="GConvertError"><type>GConvertError</type></link> other than
<link linkend="G-CONVERT-ERROR-NO-CONVERSION:CAPS"><literal>G_CONVERT_ERROR_NO_CONVERSION</literal></link> may occur.</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="g-utf8-to-ucs4.returns" role="returns">
<title>Returns</title>
<para> a pointer to a newly allocated UCS-4 string.
This value must be freed with <link linkend="g-free"><function>g_free()</function></link>. If an error occurs,
<link linkend="NULL:CAPS"><literal>NULL</literal></link> will be returned and <parameter>error</parameter>
set.</para>
</refsect3></refsect2>
<refsect2 id="g-utf8-to-ucs4-fast" role="function">
<title>g_utf8_to_ucs4_fast&#160;()</title>
<indexterm zone="g-utf8-to-ucs4-fast"><primary sortas="utf8_to_ucs4_fast">g_utf8_to_ucs4_fast</primary></indexterm>
<programlisting language="C"><link linkend="gunichar"><returnvalue>gunichar</returnvalue></link>&#160;*
g_utf8_to_ucs4_fast (<parameter>const <link linkend="gchar"><type>gchar</type></link> *str</parameter>,
                     <parameter><link linkend="glong"><type>glong</type></link> len</parameter>,
                     <parameter><link linkend="glong"><type>glong</type></link> *items_written</parameter>);</programlisting>
<para>Convert a string from UTF-8 to a 32-bit fixed width
representation as UCS-4, assuming valid UTF-8 input.
This function is roughly twice as fast as <link linkend="g-utf8-to-ucs4"><function>g_utf8_to_ucs4()</function></link>
but does no error checking on the input. A trailing 0 character
will be added to the string after the converted text.</para>
<refsect3 id="g-utf8-to-ucs4-fast.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>str</para></entry>
<entry role="parameter_description"><para>a UTF-8 encoded string</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>len</para></entry>
<entry role="parameter_description"><para>the maximum length of <parameter>str</parameter>
to use, in bytes. If <parameter>len</parameter>
&lt; 0,
then the string is nul-terminated.</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>items_written</para></entry>
<entry role="parameter_description"><para>location to store the
number of characters in the result, or <link linkend="NULL:CAPS"><literal>NULL</literal></link>. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>out caller-allocates</acronym>][<acronym>optional</acronym>]</emphasis></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="g-utf8-to-ucs4-fast.returns" role="returns">
<title>Returns</title>
<para> a pointer to a newly allocated UCS-4 string.
This value must be freed with <link linkend="g-free"><function>g_free()</function></link>.</para>
</refsect3></refsect2>
<refsect2 id="g-utf16-to-ucs4" role="function">
<title>g_utf16_to_ucs4&#160;()</title>
<indexterm zone="g-utf16-to-ucs4"><primary sortas="utf16_to_ucs4">g_utf16_to_ucs4</primary></indexterm>
<programlisting language="C"><link linkend="gunichar"><returnvalue>gunichar</returnvalue></link>&#160;*
g_utf16_to_ucs4 (<parameter>const <link linkend="gunichar2"><type>gunichar2</type></link> *str</parameter>,
                 <parameter><link linkend="glong"><type>glong</type></link> len</parameter>,
                 <parameter><link linkend="glong"><type>glong</type></link> *items_read</parameter>,
                 <parameter><link linkend="glong"><type>glong</type></link> *items_written</parameter>,
                 <parameter><link linkend="GError"><type>GError</type></link> **error</parameter>);</programlisting>
<para>Convert a string from UTF-16 to UCS-4. The result will be
nul-terminated.</para>
<refsect3 id="g-utf16-to-ucs4.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>str</para></entry>
<entry role="parameter_description"><para>a UTF-16 encoded string</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>len</para></entry>
<entry role="parameter_description"><para>the maximum length (number of <link linkend="gunichar2"><type>gunichar2</type></link>) of <parameter>str</parameter>
to use.
If <parameter>len</parameter>
&lt; 0, then the string is nul-terminated.</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>items_read</para></entry>
<entry role="parameter_description"><para>location to store number of
words read, or <link linkend="NULL:CAPS"><literal>NULL</literal></link>. If <link linkend="NULL:CAPS"><literal>NULL</literal></link>, then <link linkend="G-CONVERT-ERROR-PARTIAL-INPUT:CAPS"><literal>G_CONVERT_ERROR_PARTIAL_INPUT</literal></link> will
be returned in case <parameter>str</parameter>
contains a trailing partial character. If
an error occurs then the index of the invalid input is stored here. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>out caller-allocates</acronym>][<acronym>optional</acronym>]</emphasis></entry></row>
<row><entry role="parameter_name"><para>items_written</para></entry>
<entry role="parameter_description"><para>location to store number
of characters written, or <link linkend="NULL:CAPS"><literal>NULL</literal></link>. The value stored here does not include
the trailing 0 character. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>out caller-allocates</acronym>][<acronym>optional</acronym>]</emphasis></entry></row>
<row><entry role="parameter_name"><para>error</para></entry>
<entry role="parameter_description"><para>location to store the error occurring, or <link linkend="NULL:CAPS"><literal>NULL</literal></link> to ignore
errors. Any of the errors in <link linkend="GConvertError"><type>GConvertError</type></link> other than
<link linkend="G-CONVERT-ERROR-NO-CONVERSION:CAPS"><literal>G_CONVERT_ERROR_NO_CONVERSION</literal></link> may occur.</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="g-utf16-to-ucs4.returns" role="returns">
<title>Returns</title>
<para> a pointer to a newly allocated UCS-4 string.
This value must be freed with <link linkend="g-free"><function>g_free()</function></link>. If an error occurs,
<link linkend="NULL:CAPS"><literal>NULL</literal></link> will be returned and <parameter>error</parameter>
set.</para>
</refsect3></refsect2>
<refsect2 id="g-utf16-to-utf8" role="function">
<title>g_utf16_to_utf8&#160;()</title>
<indexterm zone="g-utf16-to-utf8"><primary sortas="utf16_to_utf8">g_utf16_to_utf8</primary></indexterm>
<programlisting language="C"><link linkend="gchar"><returnvalue>gchar</returnvalue></link>&#160;*
g_utf16_to_utf8 (<parameter>const <link linkend="gunichar2"><type>gunichar2</type></link> *str</parameter>,
                 <parameter><link linkend="glong"><type>glong</type></link> len</parameter>,
                 <parameter><link linkend="glong"><type>glong</type></link> *items_read</parameter>,
                 <parameter><link linkend="glong"><type>glong</type></link> *items_written</parameter>,
                 <parameter><link linkend="GError"><type>GError</type></link> **error</parameter>);</programlisting>
<para>Convert a string from UTF-16 to UTF-8. The result will be
terminated with a 0 byte.</para>
<para>Note that the input is expected to be already in native endianness,
an initial byte-order-mark character is not handled specially.
<link linkend="g-convert"><function>g_convert()</function></link> can be used to convert a byte buffer of UTF-16 data of
ambiguous endianess.</para>
<para>Further note that this function does not validate the result
string; it may e.g. include embedded NUL characters. The only
validation done by this function is to ensure that the input can
be correctly interpreted as UTF-16, i.e. it doesn't contain
things unpaired surrogates.</para>
<refsect3 id="g-utf16-to-utf8.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>str</para></entry>
<entry role="parameter_description"><para>a UTF-16 encoded string</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>len</para></entry>
<entry role="parameter_description"><para>the maximum length (number of <link linkend="gunichar2"><type>gunichar2</type></link>) of <parameter>str</parameter>
to use.
If <parameter>len</parameter>
&lt; 0, then the string is nul-terminated.</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>items_read</para></entry>
<entry role="parameter_description"><para>location to store number of
words read, or <link linkend="NULL:CAPS"><literal>NULL</literal></link>. If <link linkend="NULL:CAPS"><literal>NULL</literal></link>, then <link linkend="G-CONVERT-ERROR-PARTIAL-INPUT:CAPS"><literal>G_CONVERT_ERROR_PARTIAL_INPUT</literal></link> will
be returned in case <parameter>str</parameter>
contains a trailing partial character. If
an error occurs then the index of the invalid input is stored here. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>out caller-allocates</acronym>][<acronym>optional</acronym>]</emphasis></entry></row>
<row><entry role="parameter_name"><para>items_written</para></entry>
<entry role="parameter_description"><para>location to store number
of bytes written, or <link linkend="NULL:CAPS"><literal>NULL</literal></link>. The value stored here does not include the
trailing 0 byte. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>out caller-allocates</acronym>][<acronym>optional</acronym>]</emphasis></entry></row>
<row><entry role="parameter_name"><para>error</para></entry>
<entry role="parameter_description"><para>location to store the error occurring, or <link linkend="NULL:CAPS"><literal>NULL</literal></link> to ignore
errors. Any of the errors in <link linkend="GConvertError"><type>GConvertError</type></link> other than
<link linkend="G-CONVERT-ERROR-NO-CONVERSION:CAPS"><literal>G_CONVERT_ERROR_NO_CONVERSION</literal></link> may occur.</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="g-utf16-to-utf8.returns" role="returns">
<title>Returns</title>
<para> a pointer to a newly allocated UTF-8 string.
This value must be freed with <link linkend="g-free"><function>g_free()</function></link>. If an error occurs,
<link linkend="NULL:CAPS"><literal>NULL</literal></link> will be returned and <parameter>error</parameter>
set.</para>
</refsect3></refsect2>
<refsect2 id="g-ucs4-to-utf16" role="function">
<title>g_ucs4_to_utf16&#160;()</title>
<indexterm zone="g-ucs4-to-utf16"><primary sortas="ucs4_to_utf16">g_ucs4_to_utf16</primary></indexterm>
<programlisting language="C"><link linkend="gunichar2"><returnvalue>gunichar2</returnvalue></link>&#160;*
g_ucs4_to_utf16 (<parameter>const <link linkend="gunichar"><type>gunichar</type></link> *str</parameter>,
                 <parameter><link linkend="glong"><type>glong</type></link> len</parameter>,
                 <parameter><link linkend="glong"><type>glong</type></link> *items_read</parameter>,
                 <parameter><link linkend="glong"><type>glong</type></link> *items_written</parameter>,
                 <parameter><link linkend="GError"><type>GError</type></link> **error</parameter>);</programlisting>
<para>Convert a string from UCS-4 to UTF-16. A 0 character will be
added to the result after the converted text.</para>
<refsect3 id="g-ucs4-to-utf16.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>str</para></entry>
<entry role="parameter_description"><para>a UCS-4 encoded string</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>len</para></entry>
<entry role="parameter_description"><para>the maximum length (number of characters) of <parameter>str</parameter>
to use.
If <parameter>len</parameter>
&lt; 0, then the string is nul-terminated.</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>items_read</para></entry>
<entry role="parameter_description"><para>location to store number of
bytes read, or <link linkend="NULL:CAPS"><literal>NULL</literal></link>. If an error occurs then the index of the invalid
input is stored here. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>out caller-allocates</acronym>][<acronym>optional</acronym>]</emphasis></entry></row>
<row><entry role="parameter_name"><para>items_written</para></entry>
<entry role="parameter_description"><para>location to store number
of <link linkend="gunichar2"><type>gunichar2</type></link>  written, or <link linkend="NULL:CAPS"><literal>NULL</literal></link>. The value stored here does not include
the trailing 0. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>out caller-allocates</acronym>][<acronym>optional</acronym>]</emphasis></entry></row>
<row><entry role="parameter_name"><para>error</para></entry>
<entry role="parameter_description"><para>location to store the error occurring, or <link linkend="NULL:CAPS"><literal>NULL</literal></link> to ignore
errors. Any of the errors in <link linkend="GConvertError"><type>GConvertError</type></link> other than
<link linkend="G-CONVERT-ERROR-NO-CONVERSION:CAPS"><literal>G_CONVERT_ERROR_NO_CONVERSION</literal></link> may occur.</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="g-ucs4-to-utf16.returns" role="returns">
<title>Returns</title>
<para> a pointer to a newly allocated UTF-16 string.
This value must be freed with <link linkend="g-free"><function>g_free()</function></link>. If an error occurs,
<link linkend="NULL:CAPS"><literal>NULL</literal></link> will be returned and <parameter>error</parameter>
set.</para>
</refsect3></refsect2>
<refsect2 id="g-ucs4-to-utf8" role="function">
<title>g_ucs4_to_utf8&#160;()</title>
<indexterm zone="g-ucs4-to-utf8"><primary sortas="ucs4_to_utf8">g_ucs4_to_utf8</primary></indexterm>
<programlisting language="C"><link linkend="gchar"><returnvalue>gchar</returnvalue></link>&#160;*
g_ucs4_to_utf8 (<parameter>const <link linkend="gunichar"><type>gunichar</type></link> *str</parameter>,
                <parameter><link linkend="glong"><type>glong</type></link> len</parameter>,
                <parameter><link linkend="glong"><type>glong</type></link> *items_read</parameter>,
                <parameter><link linkend="glong"><type>glong</type></link> *items_written</parameter>,
                <parameter><link linkend="GError"><type>GError</type></link> **error</parameter>);</programlisting>
<para>Convert a string from a 32-bit fixed width representation as UCS-4.
to UTF-8. The result will be terminated with a 0 byte.</para>
<refsect3 id="g-ucs4-to-utf8.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>str</para></entry>
<entry role="parameter_description"><para>a UCS-4 encoded string</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>len</para></entry>
<entry role="parameter_description"><para>the maximum length (number of characters) of <parameter>str</parameter>
to use.
If <parameter>len</parameter>
&lt; 0, then the string is nul-terminated.</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>items_read</para></entry>
<entry role="parameter_description"><para>location to store number of
characters read, or <link linkend="NULL:CAPS"><literal>NULL</literal></link>. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>out caller-allocates</acronym>][<acronym>optional</acronym>]</emphasis></entry></row>
<row><entry role="parameter_name"><para>items_written</para></entry>
<entry role="parameter_description"><para>location to store number
of bytes written or <link linkend="NULL:CAPS"><literal>NULL</literal></link>. The value here stored does not include the
trailing 0 byte. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>out caller-allocates</acronym>][<acronym>optional</acronym>]</emphasis></entry></row>
<row><entry role="parameter_name"><para>error</para></entry>
<entry role="parameter_description"><para>location to store the error occurring, or <link linkend="NULL:CAPS"><literal>NULL</literal></link> to ignore
errors. Any of the errors in <link linkend="GConvertError"><type>GConvertError</type></link> other than
<link linkend="G-CONVERT-ERROR-NO-CONVERSION:CAPS"><literal>G_CONVERT_ERROR_NO_CONVERSION</literal></link> may occur.</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="g-ucs4-to-utf8.returns" role="returns">
<title>Returns</title>
<para> a pointer to a newly allocated UTF-8 string.
This value must be freed with <link linkend="g-free"><function>g_free()</function></link>. If an error occurs,
<link linkend="NULL:CAPS"><literal>NULL</literal></link> will be returned and <parameter>error</parameter>
set. In that case, <parameter>items_read</parameter>
will be set to the position of the first invalid input character.</para>
</refsect3></refsect2>
<refsect2 id="g-unichar-to-utf8" role="function">
<title>g_unichar_to_utf8&#160;()</title>
<indexterm zone="g-unichar-to-utf8"><primary sortas="unichar_to_utf8">g_unichar_to_utf8</primary></indexterm>
<programlisting language="C"><link linkend="gint"><returnvalue>gint</returnvalue></link>
g_unichar_to_utf8 (<parameter><link linkend="gunichar"><type>gunichar</type></link> c</parameter>,
                   <parameter><link linkend="gchar"><type>gchar</type></link> *outbuf</parameter>);</programlisting>
<para>Converts a single character to UTF-8.</para>
<refsect3 id="g-unichar-to-utf8.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>c</para></entry>
<entry role="parameter_description"><para>a Unicode character code</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>outbuf</para></entry>
<entry role="parameter_description"><para>output buffer, must have at
least 6 bytes of space. If <link linkend="NULL:CAPS"><literal>NULL</literal></link>, the length will be computed and
returned and nothing will be written to <parameter>outbuf</parameter>
. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>out caller-allocates</acronym>][<acronym>optional</acronym>]</emphasis></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="g-unichar-to-utf8.returns" role="returns">
<title>Returns</title>
<para> number of bytes written</para>
</refsect3></refsect2>

</refsect1>
<refsect1 id="glib-Unicode-Manipulation.other_details" role="details">
<title role="details.title">Types and Values</title>
<refsect2 id="gunichar" role="typedef">
<title>gunichar</title>
<indexterm zone="gunichar"><primary sortas="unichar">gunichar</primary></indexterm>
<programlisting language="C">typedef guint32 gunichar;
</programlisting>
<para>A type which can hold any UTF-32 or UCS-4 character code,
also known as a Unicode code point.</para>
<para>If you want to produce the UTF-8 representation of a <link linkend="gunichar"><type>gunichar</type></link>,
use <link linkend="g-ucs4-to-utf8"><function>g_ucs4_to_utf8()</function></link>. See also <link linkend="g-utf8-to-ucs4"><function>g_utf8_to_ucs4()</function></link> for the reverse
process.</para>
<para>To print/scan values of this type as integer, use
<link linkend="G-GINT32-MODIFIER:CAPS"><literal>G_GINT32_MODIFIER</literal></link> and/or <link linkend="G-GUINT32-FORMAT:CAPS"><literal>G_GUINT32_FORMAT</literal></link>.</para>
<para>The notation to express a Unicode code point in running text is
as a hexadecimal number with four to six digits and uppercase
letters, prefixed by the string "U+". Leading zeros are omitted,
unless the code point would have fewer than four hexadecimal digits.
For example, "U+0041 LATIN CAPITAL LETTER A". To print a code point
in the U+-notation, use the format string "U+%04"G_GINT32_FORMAT"X".
To scan, use the format string "U+%06"G_GINT32_FORMAT"X".</para>
<informalexample><programlisting role="example"><![CDATA[
gunichar c;
sscanf ("U+0041", "U+%06"G_GINT32_FORMAT"X", &c)
g_print ("Read U+%04"G_GINT32_FORMAT"X", c);
]]></programlisting></informalexample>
<para></para>
</refsect2>
<refsect2 id="gunichar2" role="typedef">
<title>gunichar2</title>
<indexterm zone="gunichar2"><primary sortas="unichar2">gunichar2</primary></indexterm>
<programlisting language="C">typedef guint16 gunichar2;
</programlisting>
<para>A type which can hold any UTF-16 code
point&lt;footnote id="utf16_surrogate_pairs">UTF-16 also has so called
&lt;firstterm>surrogate pairs&lt;/firstterm> to encode characters beyond
the BMP as pairs of 16bit numbers. Surrogate pairs cannot be stored
in a single gunichar2 field, but all GLib functions accepting gunichar2
arrays will correctly interpret surrogate pairs.&lt;/footnote>.</para>
<para>To print/scan values of this type to/from text you need to convert
to/from UTF-8, using <link linkend="g-utf16-to-utf8"><function>g_utf16_to_utf8()</function></link>/<link linkend="g-utf8-to-utf16"><function>g_utf8_to_utf16()</function></link>.</para>
<para>To print/scan values of this type as integer, use
<link linkend="G-GINT16-MODIFIER:CAPS"><literal>G_GINT16_MODIFIER</literal></link> and/or <link linkend="G-GUINT16-FORMAT:CAPS"><literal>G_GUINT16_FORMAT</literal></link>.</para>
</refsect2>
<refsect2 id="G-UNICHAR-MAX-DECOMPOSITION-LENGTH:CAPS" role="macro" condition="since:2.32">
<title>G_UNICHAR_MAX_DECOMPOSITION_LENGTH</title>
<indexterm zone="G-UNICHAR-MAX-DECOMPOSITION-LENGTH:CAPS" role="2.32"><primary sortas="UNICHAR_MAX_DECOMPOSITION_LENGTH">G_UNICHAR_MAX_DECOMPOSITION_LENGTH</primary></indexterm>
<programlisting language="C">#define G_UNICHAR_MAX_DECOMPOSITION_LENGTH 18 /* codepoints */
</programlisting>
<para>The maximum length (in codepoints) of a compatibility or canonical
decomposition of a single Unicode character.</para>
<para>This is as defined by Unicode 6.1.</para>
<para role="since">Since: <link linkend="api-index-2.32">2.32</link></para></refsect2>
<refsect2 id="GUnicodeType" role="enum">
<title>enum GUnicodeType</title>
<indexterm zone="GUnicodeType"><primary sortas="UnicodeType">GUnicodeType</primary></indexterm>
<para>These are the possible character classifications from the
Unicode specification.
See <ulink url="http://www.unicode.org/reports/tr44/#General_Category_Values">Unicode Character Database</ulink>.</para>
<refsect3 id="GUnicodeType.members" role="enum_members">
<title>Members</title>
<informaltable role="enum_members_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="enum_members_name" colwidth="300px"/>
<colspec colname="enum_members_description"/>
<colspec colname="enum_members_annotations" colwidth="200px"/>
<tbody>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-CONTROL:CAPS">G_UNICODE_CONTROL</para></entry>
<entry role="enum_member_description"><para>General category "Other, Control" (Cc)</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-FORMAT:CAPS">G_UNICODE_FORMAT</para></entry>
<entry role="enum_member_description"><para>General category "Other, Format" (Cf)</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-UNASSIGNED:CAPS">G_UNICODE_UNASSIGNED</para></entry>
<entry role="enum_member_description"><para>General category "Other, Not Assigned" (Cn)</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-PRIVATE-USE:CAPS">G_UNICODE_PRIVATE_USE</para></entry>
<entry role="enum_member_description"><para>General category "Other, Private Use" (Co)</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SURROGATE:CAPS">G_UNICODE_SURROGATE</para></entry>
<entry role="enum_member_description"><para>General category "Other, Surrogate" (Cs)</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-LOWERCASE-LETTER:CAPS">G_UNICODE_LOWERCASE_LETTER</para></entry>
<entry role="enum_member_description"><para>General category "Letter, Lowercase" (Ll)</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-MODIFIER-LETTER:CAPS">G_UNICODE_MODIFIER_LETTER</para></entry>
<entry role="enum_member_description"><para>General category "Letter, Modifier" (Lm)</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-OTHER-LETTER:CAPS">G_UNICODE_OTHER_LETTER</para></entry>
<entry role="enum_member_description"><para>General category "Letter, Other" (Lo)</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-TITLECASE-LETTER:CAPS">G_UNICODE_TITLECASE_LETTER</para></entry>
<entry role="enum_member_description"><para>General category "Letter, Titlecase" (Lt)</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-UPPERCASE-LETTER:CAPS">G_UNICODE_UPPERCASE_LETTER</para></entry>
<entry role="enum_member_description"><para>General category "Letter, Uppercase" (Lu)</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SPACING-MARK:CAPS">G_UNICODE_SPACING_MARK</para></entry>
<entry role="enum_member_description"><para>General category "Mark, Spacing" (Mc)</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-ENCLOSING-MARK:CAPS">G_UNICODE_ENCLOSING_MARK</para></entry>
<entry role="enum_member_description"><para>General category "Mark, Enclosing" (Me)</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-NON-SPACING-MARK:CAPS">G_UNICODE_NON_SPACING_MARK</para></entry>
<entry role="enum_member_description"><para>General category "Mark, Nonspacing" (Mn)</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-DECIMAL-NUMBER:CAPS">G_UNICODE_DECIMAL_NUMBER</para></entry>
<entry role="enum_member_description"><para>General category "Number, Decimal Digit" (Nd)</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-LETTER-NUMBER:CAPS">G_UNICODE_LETTER_NUMBER</para></entry>
<entry role="enum_member_description"><para>General category "Number, Letter" (Nl)</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-OTHER-NUMBER:CAPS">G_UNICODE_OTHER_NUMBER</para></entry>
<entry role="enum_member_description"><para>General category "Number, Other" (No)</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-CONNECT-PUNCTUATION:CAPS">G_UNICODE_CONNECT_PUNCTUATION</para></entry>
<entry role="enum_member_description"><para>General category "Punctuation, Connector" (Pc)</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-DASH-PUNCTUATION:CAPS">G_UNICODE_DASH_PUNCTUATION</para></entry>
<entry role="enum_member_description"><para>General category "Punctuation, Dash" (Pd)</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-CLOSE-PUNCTUATION:CAPS">G_UNICODE_CLOSE_PUNCTUATION</para></entry>
<entry role="enum_member_description"><para>General category "Punctuation, Close" (Pe)</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-FINAL-PUNCTUATION:CAPS">G_UNICODE_FINAL_PUNCTUATION</para></entry>
<entry role="enum_member_description"><para>General category "Punctuation, Final quote" (Pf)</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-INITIAL-PUNCTUATION:CAPS">G_UNICODE_INITIAL_PUNCTUATION</para></entry>
<entry role="enum_member_description"><para>General category "Punctuation, Initial quote" (Pi)</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-OTHER-PUNCTUATION:CAPS">G_UNICODE_OTHER_PUNCTUATION</para></entry>
<entry role="enum_member_description"><para>General category "Punctuation, Other" (Po)</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-OPEN-PUNCTUATION:CAPS">G_UNICODE_OPEN_PUNCTUATION</para></entry>
<entry role="enum_member_description"><para>General category "Punctuation, Open" (Ps)</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-CURRENCY-SYMBOL:CAPS">G_UNICODE_CURRENCY_SYMBOL</para></entry>
<entry role="enum_member_description"><para>General category "Symbol, Currency" (Sc)</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-MODIFIER-SYMBOL:CAPS">G_UNICODE_MODIFIER_SYMBOL</para></entry>
<entry role="enum_member_description"><para>General category "Symbol, Modifier" (Sk)</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-MATH-SYMBOL:CAPS">G_UNICODE_MATH_SYMBOL</para></entry>
<entry role="enum_member_description"><para>General category "Symbol, Math" (Sm)</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-OTHER-SYMBOL:CAPS">G_UNICODE_OTHER_SYMBOL</para></entry>
<entry role="enum_member_description"><para>General category "Symbol, Other" (So)</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-LINE-SEPARATOR:CAPS">G_UNICODE_LINE_SEPARATOR</para></entry>
<entry role="enum_member_description"><para>General category "Separator, Line" (Zl)</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-PARAGRAPH-SEPARATOR:CAPS">G_UNICODE_PARAGRAPH_SEPARATOR</para></entry>
<entry role="enum_member_description"><para>General category "Separator, Paragraph" (Zp)</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SPACE-SEPARATOR:CAPS">G_UNICODE_SPACE_SEPARATOR</para></entry>
<entry role="enum_member_description"><para>General category "Separator, Space" (Zs)</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="G-UNICODE-COMBINING-MARK:CAPS" role="macro" condition="deprecated:2.30: Use %G_UNICODE_SPACING_MARK.">
<title>G_UNICODE_COMBINING_MARK</title>
<indexterm zone="G-UNICODE-COMBINING-MARK:CAPS" role="deprecated"><primary sortas="UNICODE_COMBINING_MARK">G_UNICODE_COMBINING_MARK</primary></indexterm>
<programlisting language="C">#define G_UNICODE_COMBINING_MARK G_UNICODE_SPACING_MARK
</programlisting>
<warning><para><literal>G_UNICODE_COMBINING_MARK</literal> has been deprecated since version 2.30 and should not be used in newly-written code.</para> <para>Use <link linkend="G-UNICODE-SPACING-MARK:CAPS"><literal>G_UNICODE_SPACING_MARK</literal></link>.</para>
</warning>
<para>Older name for <link linkend="G-UNICODE-SPACING-MARK:CAPS"><literal>G_UNICODE_SPACING_MARK</literal></link>.</para>
</refsect2>
<refsect2 id="GUnicodeBreakType" role="enum">
<title>enum GUnicodeBreakType</title>
<indexterm zone="GUnicodeBreakType"><primary sortas="UnicodeBreakType">GUnicodeBreakType</primary></indexterm>
<para>These are the possible line break classifications.</para>
<para>Since new unicode versions may add new types here, applications should be ready 
to handle unknown values. They may be regarded as <link linkend="G-UNICODE-BREAK-UNKNOWN:CAPS"><literal>G_UNICODE_BREAK_UNKNOWN</literal></link>.</para>
<para>See <ulink url="http://www.unicode.org/unicode/reports/tr14/">Unicode Line Breaking Algorithm</ulink>.</para>
<refsect3 id="GUnicodeBreakType.members" role="enum_members">
<title>Members</title>
<informaltable role="enum_members_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="enum_members_name" colwidth="300px"/>
<colspec colname="enum_members_description"/>
<colspec colname="enum_members_annotations" colwidth="200px"/>
<tbody>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-BREAK-MANDATORY:CAPS">G_UNICODE_BREAK_MANDATORY</para></entry>
<entry role="enum_member_description"><para>Mandatory Break (BK)</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-BREAK-CARRIAGE-RETURN:CAPS">G_UNICODE_BREAK_CARRIAGE_RETURN</para></entry>
<entry role="enum_member_description"><para>Carriage Return (CR)</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-BREAK-LINE-FEED:CAPS">G_UNICODE_BREAK_LINE_FEED</para></entry>
<entry role="enum_member_description"><para>Line Feed (LF)</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-BREAK-COMBINING-MARK:CAPS">G_UNICODE_BREAK_COMBINING_MARK</para></entry>
<entry role="enum_member_description"><para>Attached Characters and Combining Marks (CM)</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-BREAK-SURROGATE:CAPS">G_UNICODE_BREAK_SURROGATE</para></entry>
<entry role="enum_member_description"><para>Surrogates (SG)</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-BREAK-ZERO-WIDTH-SPACE:CAPS">G_UNICODE_BREAK_ZERO_WIDTH_SPACE</para></entry>
<entry role="enum_member_description"><para>Zero Width Space (ZW)</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-BREAK-INSEPARABLE:CAPS">G_UNICODE_BREAK_INSEPARABLE</para></entry>
<entry role="enum_member_description"><para>Inseparable (IN)</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-BREAK-NON-BREAKING-GLUE:CAPS">G_UNICODE_BREAK_NON_BREAKING_GLUE</para></entry>
<entry role="enum_member_description"><para>Non-breaking ("Glue") (GL)</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-BREAK-CONTINGENT:CAPS">G_UNICODE_BREAK_CONTINGENT</para></entry>
<entry role="enum_member_description"><para>Contingent Break Opportunity (CB)</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-BREAK-SPACE:CAPS">G_UNICODE_BREAK_SPACE</para></entry>
<entry role="enum_member_description"><para>Space (SP)</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-BREAK-AFTER:CAPS">G_UNICODE_BREAK_AFTER</para></entry>
<entry role="enum_member_description"><para>Break Opportunity After (BA)</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-BREAK-BEFORE:CAPS">G_UNICODE_BREAK_BEFORE</para></entry>
<entry role="enum_member_description"><para>Break Opportunity Before (BB)</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-BREAK-BEFORE-AND-AFTER:CAPS">G_UNICODE_BREAK_BEFORE_AND_AFTER</para></entry>
<entry role="enum_member_description"><para>Break Opportunity Before and After (B2)</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-BREAK-HYPHEN:CAPS">G_UNICODE_BREAK_HYPHEN</para></entry>
<entry role="enum_member_description"><para>Hyphen (HY)</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-BREAK-NON-STARTER:CAPS">G_UNICODE_BREAK_NON_STARTER</para></entry>
<entry role="enum_member_description"><para>Nonstarter (NS)</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-BREAK-OPEN-PUNCTUATION:CAPS">G_UNICODE_BREAK_OPEN_PUNCTUATION</para></entry>
<entry role="enum_member_description"><para>Opening Punctuation (OP)</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-BREAK-CLOSE-PUNCTUATION:CAPS">G_UNICODE_BREAK_CLOSE_PUNCTUATION</para></entry>
<entry role="enum_member_description"><para>Closing Punctuation (CL)</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-BREAK-QUOTATION:CAPS">G_UNICODE_BREAK_QUOTATION</para></entry>
<entry role="enum_member_description"><para>Ambiguous Quotation (QU)</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-BREAK-EXCLAMATION:CAPS">G_UNICODE_BREAK_EXCLAMATION</para></entry>
<entry role="enum_member_description"><para>Exclamation/Interrogation (EX)</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-BREAK-IDEOGRAPHIC:CAPS">G_UNICODE_BREAK_IDEOGRAPHIC</para></entry>
<entry role="enum_member_description"><para>Ideographic (ID)</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-BREAK-NUMERIC:CAPS">G_UNICODE_BREAK_NUMERIC</para></entry>
<entry role="enum_member_description"><para>Numeric (NU)</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-BREAK-INFIX-SEPARATOR:CAPS">G_UNICODE_BREAK_INFIX_SEPARATOR</para></entry>
<entry role="enum_member_description"><para>Infix Separator (Numeric) (IS)</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-BREAK-SYMBOL:CAPS">G_UNICODE_BREAK_SYMBOL</para></entry>
<entry role="enum_member_description"><para>Symbols Allowing Break After (SY)</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-BREAK-ALPHABETIC:CAPS">G_UNICODE_BREAK_ALPHABETIC</para></entry>
<entry role="enum_member_description"><para>Ordinary Alphabetic and Symbol Characters (AL)</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-BREAK-PREFIX:CAPS">G_UNICODE_BREAK_PREFIX</para></entry>
<entry role="enum_member_description"><para>Prefix (Numeric) (PR)</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-BREAK-POSTFIX:CAPS">G_UNICODE_BREAK_POSTFIX</para></entry>
<entry role="enum_member_description"><para>Postfix (Numeric) (PO)</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-BREAK-COMPLEX-CONTEXT:CAPS">G_UNICODE_BREAK_COMPLEX_CONTEXT</para></entry>
<entry role="enum_member_description"><para>Complex Content Dependent (South East Asian) (SA)</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-BREAK-AMBIGUOUS:CAPS">G_UNICODE_BREAK_AMBIGUOUS</para></entry>
<entry role="enum_member_description"><para>Ambiguous (Alphabetic or Ideographic) (AI)</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-BREAK-UNKNOWN:CAPS">G_UNICODE_BREAK_UNKNOWN</para></entry>
<entry role="enum_member_description"><para>Unknown (XX)</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-BREAK-NEXT-LINE:CAPS">G_UNICODE_BREAK_NEXT_LINE</para></entry>
<entry role="enum_member_description"><para>Next Line (NL)</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-BREAK-WORD-JOINER:CAPS">G_UNICODE_BREAK_WORD_JOINER</para></entry>
<entry role="enum_member_description"><para>Word Joiner (WJ)</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-BREAK-HANGUL-L-JAMO:CAPS">G_UNICODE_BREAK_HANGUL_L_JAMO</para></entry>
<entry role="enum_member_description"><para>Hangul L Jamo (JL)</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-BREAK-HANGUL-V-JAMO:CAPS">G_UNICODE_BREAK_HANGUL_V_JAMO</para></entry>
<entry role="enum_member_description"><para>Hangul V Jamo (JV)</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-BREAK-HANGUL-T-JAMO:CAPS">G_UNICODE_BREAK_HANGUL_T_JAMO</para></entry>
<entry role="enum_member_description"><para>Hangul T Jamo (JT)</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-BREAK-HANGUL-LV-SYLLABLE:CAPS">G_UNICODE_BREAK_HANGUL_LV_SYLLABLE</para></entry>
<entry role="enum_member_description"><para>Hangul LV Syllable (H2)</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-BREAK-HANGUL-LVT-SYLLABLE:CAPS">G_UNICODE_BREAK_HANGUL_LVT_SYLLABLE</para></entry>
<entry role="enum_member_description"><para>Hangul LVT Syllable (H3)</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-BREAK-CLOSE-PARANTHESIS:CAPS">G_UNICODE_BREAK_CLOSE_PARANTHESIS</para></entry>
<entry role="enum_member_description"><para>Closing Parenthesis (CP). Since 2.28</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-BREAK-CONDITIONAL-JAPANESE-STARTER:CAPS">G_UNICODE_BREAK_CONDITIONAL_JAPANESE_STARTER</para></entry>
<entry role="enum_member_description"><para>Conditional Japanese Starter (CJ). Since: 2.32</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-BREAK-HEBREW-LETTER:CAPS">G_UNICODE_BREAK_HEBREW_LETTER</para></entry>
<entry role="enum_member_description"><para>Hebrew Letter (HL). Since: 2.32</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-BREAK-REGIONAL-INDICATOR:CAPS">G_UNICODE_BREAK_REGIONAL_INDICATOR</para></entry>
<entry role="enum_member_description"><para>Regional Indicator (RI). Since: 2.36</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-BREAK-EMOJI-BASE:CAPS">G_UNICODE_BREAK_EMOJI_BASE</para></entry>
<entry role="enum_member_description"><para>Emoji Base (EB). Since: 2.50</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-BREAK-EMOJI-MODIFIER:CAPS">G_UNICODE_BREAK_EMOJI_MODIFIER</para></entry>
<entry role="enum_member_description"><para>Emoji Modifier (EM). Since: 2.50</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-BREAK-ZERO-WIDTH-JOINER:CAPS">G_UNICODE_BREAK_ZERO_WIDTH_JOINER</para></entry>
<entry role="enum_member_description"><para>Zero Width Joiner (ZWJ). Since: 2.50</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="GUnicodeScript" role="enum">
<title>enum GUnicodeScript</title>
<indexterm zone="GUnicodeScript"><primary sortas="UnicodeScript">GUnicodeScript</primary></indexterm>
<para>The <link linkend="GUnicodeScript"><type>GUnicodeScript</type></link> enumeration identifies different writing
systems. The values correspond to the names as defined in the
Unicode standard. The enumeration has been added in GLib 2.14,
and is interchangeable with <link linkend="PangoScript"><type>PangoScript</type></link>.</para>
<para>Note that new types may be added in the future. Applications
should be ready to handle unknown values.
See <ulink url="http://www.unicode.org/reports/tr24/">Unicode Standard Annex <link linkend="24"><type>24</type></link>: Script names</ulink>.</para>
<refsect3 id="GUnicodeScript.members" role="enum_members">
<title>Members</title>
<informaltable role="enum_members_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="enum_members_name" colwidth="300px"/>
<colspec colname="enum_members_description"/>
<colspec colname="enum_members_annotations" colwidth="200px"/>
<tbody>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-INVALID-CODE:CAPS">G_UNICODE_SCRIPT_INVALID_CODE</para></entry>
<entry role="enum_member_description"><para>                              a value never returned from <link linkend="g-unichar-get-script"><function>g_unichar_get_script()</function></link></para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-COMMON:CAPS">G_UNICODE_SCRIPT_COMMON</para></entry>
<entry role="enum_member_description"><para>a character used by multiple different scripts</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-INHERITED:CAPS">G_UNICODE_SCRIPT_INHERITED</para></entry>
<entry role="enum_member_description"><para>a mark glyph that takes its script from the
                              base glyph to which it is attached</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-ARABIC:CAPS">G_UNICODE_SCRIPT_ARABIC</para></entry>
<entry role="enum_member_description"><para>Arabic</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-ARMENIAN:CAPS">G_UNICODE_SCRIPT_ARMENIAN</para></entry>
<entry role="enum_member_description"><para>Armenian</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-BENGALI:CAPS">G_UNICODE_SCRIPT_BENGALI</para></entry>
<entry role="enum_member_description"><para>Bengali</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-BOPOMOFO:CAPS">G_UNICODE_SCRIPT_BOPOMOFO</para></entry>
<entry role="enum_member_description"><para>Bopomofo</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-CHEROKEE:CAPS">G_UNICODE_SCRIPT_CHEROKEE</para></entry>
<entry role="enum_member_description"><para>Cherokee</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-COPTIC:CAPS">G_UNICODE_SCRIPT_COPTIC</para></entry>
<entry role="enum_member_description"><para>Coptic</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-CYRILLIC:CAPS">G_UNICODE_SCRIPT_CYRILLIC</para></entry>
<entry role="enum_member_description"><para>Cyrillic</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-DESERET:CAPS">G_UNICODE_SCRIPT_DESERET</para></entry>
<entry role="enum_member_description"><para>Deseret</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-DEVANAGARI:CAPS">G_UNICODE_SCRIPT_DEVANAGARI</para></entry>
<entry role="enum_member_description"><para>Devanagari</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-ETHIOPIC:CAPS">G_UNICODE_SCRIPT_ETHIOPIC</para></entry>
<entry role="enum_member_description"><para>Ethiopic</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-GEORGIAN:CAPS">G_UNICODE_SCRIPT_GEORGIAN</para></entry>
<entry role="enum_member_description"><para>Georgian</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-GOTHIC:CAPS">G_UNICODE_SCRIPT_GOTHIC</para></entry>
<entry role="enum_member_description"><para>Gothic</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-GREEK:CAPS">G_UNICODE_SCRIPT_GREEK</para></entry>
<entry role="enum_member_description"><para>Greek</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-GUJARATI:CAPS">G_UNICODE_SCRIPT_GUJARATI</para></entry>
<entry role="enum_member_description"><para>Gujarati</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-GURMUKHI:CAPS">G_UNICODE_SCRIPT_GURMUKHI</para></entry>
<entry role="enum_member_description"><para>Gurmukhi</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-HAN:CAPS">G_UNICODE_SCRIPT_HAN</para></entry>
<entry role="enum_member_description"><para>Han</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-HANGUL:CAPS">G_UNICODE_SCRIPT_HANGUL</para></entry>
<entry role="enum_member_description"><para>Hangul</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-HEBREW:CAPS">G_UNICODE_SCRIPT_HEBREW</para></entry>
<entry role="enum_member_description"><para>Hebrew</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-HIRAGANA:CAPS">G_UNICODE_SCRIPT_HIRAGANA</para></entry>
<entry role="enum_member_description"><para>Hiragana</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-KANNADA:CAPS">G_UNICODE_SCRIPT_KANNADA</para></entry>
<entry role="enum_member_description"><para>Kannada</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-KATAKANA:CAPS">G_UNICODE_SCRIPT_KATAKANA</para></entry>
<entry role="enum_member_description"><para>Katakana</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-KHMER:CAPS">G_UNICODE_SCRIPT_KHMER</para></entry>
<entry role="enum_member_description"><para>Khmer</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-LAO:CAPS">G_UNICODE_SCRIPT_LAO</para></entry>
<entry role="enum_member_description"><para>Lao</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-LATIN:CAPS">G_UNICODE_SCRIPT_LATIN</para></entry>
<entry role="enum_member_description"><para>Latin</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-MALAYALAM:CAPS">G_UNICODE_SCRIPT_MALAYALAM</para></entry>
<entry role="enum_member_description"><para>Malayalam</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-MONGOLIAN:CAPS">G_UNICODE_SCRIPT_MONGOLIAN</para></entry>
<entry role="enum_member_description"><para>Mongolian</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-MYANMAR:CAPS">G_UNICODE_SCRIPT_MYANMAR</para></entry>
<entry role="enum_member_description"><para>Myanmar</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-OGHAM:CAPS">G_UNICODE_SCRIPT_OGHAM</para></entry>
<entry role="enum_member_description"><para>Ogham</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-OLD-ITALIC:CAPS">G_UNICODE_SCRIPT_OLD_ITALIC</para></entry>
<entry role="enum_member_description"><para>Old Italic</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-ORIYA:CAPS">G_UNICODE_SCRIPT_ORIYA</para></entry>
<entry role="enum_member_description"><para>Oriya</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-RUNIC:CAPS">G_UNICODE_SCRIPT_RUNIC</para></entry>
<entry role="enum_member_description"><para>Runic</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-SINHALA:CAPS">G_UNICODE_SCRIPT_SINHALA</para></entry>
<entry role="enum_member_description"><para>Sinhala</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-SYRIAC:CAPS">G_UNICODE_SCRIPT_SYRIAC</para></entry>
<entry role="enum_member_description"><para>Syriac</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-TAMIL:CAPS">G_UNICODE_SCRIPT_TAMIL</para></entry>
<entry role="enum_member_description"><para>Tamil</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-TELUGU:CAPS">G_UNICODE_SCRIPT_TELUGU</para></entry>
<entry role="enum_member_description"><para>Telugu</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-THAANA:CAPS">G_UNICODE_SCRIPT_THAANA</para></entry>
<entry role="enum_member_description"><para>Thaana</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-THAI:CAPS">G_UNICODE_SCRIPT_THAI</para></entry>
<entry role="enum_member_description"><para>Thai</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-TIBETAN:CAPS">G_UNICODE_SCRIPT_TIBETAN</para></entry>
<entry role="enum_member_description"><para>Tibetan</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-CANADIAN-ABORIGINAL:CAPS">G_UNICODE_SCRIPT_CANADIAN_ABORIGINAL</para></entry>
<entry role="enum_member_description"><para>                              Canadian Aboriginal</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-YI:CAPS">G_UNICODE_SCRIPT_YI</para></entry>
<entry role="enum_member_description"><para>Yi</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-TAGALOG:CAPS">G_UNICODE_SCRIPT_TAGALOG</para></entry>
<entry role="enum_member_description"><para>Tagalog</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-HANUNOO:CAPS">G_UNICODE_SCRIPT_HANUNOO</para></entry>
<entry role="enum_member_description"><para>Hanunoo</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-BUHID:CAPS">G_UNICODE_SCRIPT_BUHID</para></entry>
<entry role="enum_member_description"><para>Buhid</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-TAGBANWA:CAPS">G_UNICODE_SCRIPT_TAGBANWA</para></entry>
<entry role="enum_member_description"><para>Tagbanwa</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-BRAILLE:CAPS">G_UNICODE_SCRIPT_BRAILLE</para></entry>
<entry role="enum_member_description"><para>Braille</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-CYPRIOT:CAPS">G_UNICODE_SCRIPT_CYPRIOT</para></entry>
<entry role="enum_member_description"><para>Cypriot</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-LIMBU:CAPS">G_UNICODE_SCRIPT_LIMBU</para></entry>
<entry role="enum_member_description"><para>Limbu</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-OSMANYA:CAPS">G_UNICODE_SCRIPT_OSMANYA</para></entry>
<entry role="enum_member_description"><para>Osmanya</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-SHAVIAN:CAPS">G_UNICODE_SCRIPT_SHAVIAN</para></entry>
<entry role="enum_member_description"><para>Shavian</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-LINEAR-B:CAPS">G_UNICODE_SCRIPT_LINEAR_B</para></entry>
<entry role="enum_member_description"><para>Linear B</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-TAI-LE:CAPS">G_UNICODE_SCRIPT_TAI_LE</para></entry>
<entry role="enum_member_description"><para>Tai Le</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-UGARITIC:CAPS">G_UNICODE_SCRIPT_UGARITIC</para></entry>
<entry role="enum_member_description"><para>Ugaritic</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-NEW-TAI-LUE:CAPS">G_UNICODE_SCRIPT_NEW_TAI_LUE</para></entry>
<entry role="enum_member_description"><para>                              New Tai Lue</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-BUGINESE:CAPS">G_UNICODE_SCRIPT_BUGINESE</para></entry>
<entry role="enum_member_description"><para>Buginese</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-GLAGOLITIC:CAPS">G_UNICODE_SCRIPT_GLAGOLITIC</para></entry>
<entry role="enum_member_description"><para>Glagolitic</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-TIFINAGH:CAPS">G_UNICODE_SCRIPT_TIFINAGH</para></entry>
<entry role="enum_member_description"><para>Tifinagh</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-SYLOTI-NAGRI:CAPS">G_UNICODE_SCRIPT_SYLOTI_NAGRI</para></entry>
<entry role="enum_member_description"><para>                              Syloti Nagri</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-OLD-PERSIAN:CAPS">G_UNICODE_SCRIPT_OLD_PERSIAN</para></entry>
<entry role="enum_member_description"><para>                              Old Persian</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-KHAROSHTHI:CAPS">G_UNICODE_SCRIPT_KHAROSHTHI</para></entry>
<entry role="enum_member_description"><para>Kharoshthi</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-UNKNOWN:CAPS">G_UNICODE_SCRIPT_UNKNOWN</para></entry>
<entry role="enum_member_description"><para>an unassigned code point</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-BALINESE:CAPS">G_UNICODE_SCRIPT_BALINESE</para></entry>
<entry role="enum_member_description"><para>Balinese</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-CUNEIFORM:CAPS">G_UNICODE_SCRIPT_CUNEIFORM</para></entry>
<entry role="enum_member_description"><para>Cuneiform</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-PHOENICIAN:CAPS">G_UNICODE_SCRIPT_PHOENICIAN</para></entry>
<entry role="enum_member_description"><para>Phoenician</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-PHAGS-PA:CAPS">G_UNICODE_SCRIPT_PHAGS_PA</para></entry>
<entry role="enum_member_description"><para>Phags-pa</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-NKO:CAPS">G_UNICODE_SCRIPT_NKO</para></entry>
<entry role="enum_member_description"><para>N'Ko</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-KAYAH-LI:CAPS">G_UNICODE_SCRIPT_KAYAH_LI</para></entry>
<entry role="enum_member_description"><para>Kayah Li. Since 2.16.3</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-LEPCHA:CAPS">G_UNICODE_SCRIPT_LEPCHA</para></entry>
<entry role="enum_member_description"><para>Lepcha. Since 2.16.3</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-REJANG:CAPS">G_UNICODE_SCRIPT_REJANG</para></entry>
<entry role="enum_member_description"><para>Rejang. Since 2.16.3</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-SUNDANESE:CAPS">G_UNICODE_SCRIPT_SUNDANESE</para></entry>
<entry role="enum_member_description"><para>Sundanese. Since 2.16.3</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-SAURASHTRA:CAPS">G_UNICODE_SCRIPT_SAURASHTRA</para></entry>
<entry role="enum_member_description"><para>Saurashtra. Since 2.16.3</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-CHAM:CAPS">G_UNICODE_SCRIPT_CHAM</para></entry>
<entry role="enum_member_description"><para>Cham. Since 2.16.3</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-OL-CHIKI:CAPS">G_UNICODE_SCRIPT_OL_CHIKI</para></entry>
<entry role="enum_member_description"><para>Ol Chiki. Since 2.16.3</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-VAI:CAPS">G_UNICODE_SCRIPT_VAI</para></entry>
<entry role="enum_member_description"><para>Vai. Since 2.16.3</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-CARIAN:CAPS">G_UNICODE_SCRIPT_CARIAN</para></entry>
<entry role="enum_member_description"><para>Carian. Since 2.16.3</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-LYCIAN:CAPS">G_UNICODE_SCRIPT_LYCIAN</para></entry>
<entry role="enum_member_description"><para>Lycian. Since 2.16.3</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-LYDIAN:CAPS">G_UNICODE_SCRIPT_LYDIAN</para></entry>
<entry role="enum_member_description"><para>Lydian. Since 2.16.3</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-AVESTAN:CAPS">G_UNICODE_SCRIPT_AVESTAN</para></entry>
<entry role="enum_member_description"><para>Avestan. Since 2.26</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-BAMUM:CAPS">G_UNICODE_SCRIPT_BAMUM</para></entry>
<entry role="enum_member_description"><para>Bamum. Since 2.26</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-EGYPTIAN-HIEROGLYPHS:CAPS">G_UNICODE_SCRIPT_EGYPTIAN_HIEROGLYPHS</para></entry>
<entry role="enum_member_description"><para>                              Egyptian Hieroglpyhs. Since 2.26</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-IMPERIAL-ARAMAIC:CAPS">G_UNICODE_SCRIPT_IMPERIAL_ARAMAIC</para></entry>
<entry role="enum_member_description"><para>                              Imperial Aramaic. Since 2.26</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-INSCRIPTIONAL-PAHLAVI:CAPS">G_UNICODE_SCRIPT_INSCRIPTIONAL_PAHLAVI</para></entry>
<entry role="enum_member_description"><para>                              Inscriptional Pahlavi. Since 2.26</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-INSCRIPTIONAL-PARTHIAN:CAPS">G_UNICODE_SCRIPT_INSCRIPTIONAL_PARTHIAN</para></entry>
<entry role="enum_member_description"><para>                              Inscriptional Parthian. Since 2.26</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-JAVANESE:CAPS">G_UNICODE_SCRIPT_JAVANESE</para></entry>
<entry role="enum_member_description"><para>Javanese. Since 2.26</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-KAITHI:CAPS">G_UNICODE_SCRIPT_KAITHI</para></entry>
<entry role="enum_member_description"><para>Kaithi. Since 2.26</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-LISU:CAPS">G_UNICODE_SCRIPT_LISU</para></entry>
<entry role="enum_member_description"><para>Lisu. Since 2.26</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-MEETEI-MAYEK:CAPS">G_UNICODE_SCRIPT_MEETEI_MAYEK</para></entry>
<entry role="enum_member_description"><para>                              Meetei Mayek. Since 2.26</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-OLD-SOUTH-ARABIAN:CAPS">G_UNICODE_SCRIPT_OLD_SOUTH_ARABIAN</para></entry>
<entry role="enum_member_description"><para>                              Old South Arabian. Since 2.26</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-OLD-TURKIC:CAPS">G_UNICODE_SCRIPT_OLD_TURKIC</para></entry>
<entry role="enum_member_description"><para>Old Turkic. Since 2.28</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-SAMARITAN:CAPS">G_UNICODE_SCRIPT_SAMARITAN</para></entry>
<entry role="enum_member_description"><para>Samaritan. Since 2.26</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-TAI-THAM:CAPS">G_UNICODE_SCRIPT_TAI_THAM</para></entry>
<entry role="enum_member_description"><para>Tai Tham. Since 2.26</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-TAI-VIET:CAPS">G_UNICODE_SCRIPT_TAI_VIET</para></entry>
<entry role="enum_member_description"><para>Tai Viet. Since 2.26</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-BATAK:CAPS">G_UNICODE_SCRIPT_BATAK</para></entry>
<entry role="enum_member_description"><para>Batak. Since 2.28</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-BRAHMI:CAPS">G_UNICODE_SCRIPT_BRAHMI</para></entry>
<entry role="enum_member_description"><para>Brahmi. Since 2.28</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-MANDAIC:CAPS">G_UNICODE_SCRIPT_MANDAIC</para></entry>
<entry role="enum_member_description"><para>Mandaic. Since 2.28</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-CHAKMA:CAPS">G_UNICODE_SCRIPT_CHAKMA</para></entry>
<entry role="enum_member_description"><para>Chakma. Since: 2.32</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-MEROITIC-CURSIVE:CAPS">G_UNICODE_SCRIPT_MEROITIC_CURSIVE</para></entry>
<entry role="enum_member_description"><para>Meroitic Cursive. Since: 2.32</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-MEROITIC-HIEROGLYPHS:CAPS">G_UNICODE_SCRIPT_MEROITIC_HIEROGLYPHS</para></entry>
<entry role="enum_member_description"><para>Meroitic Hieroglyphs. Since: 2.32</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-MIAO:CAPS">G_UNICODE_SCRIPT_MIAO</para></entry>
<entry role="enum_member_description"><para>Miao. Since: 2.32</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-SHARADA:CAPS">G_UNICODE_SCRIPT_SHARADA</para></entry>
<entry role="enum_member_description"><para>Sharada. Since: 2.32</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-SORA-SOMPENG:CAPS">G_UNICODE_SCRIPT_SORA_SOMPENG</para></entry>
<entry role="enum_member_description"><para>Sora Sompeng. Since: 2.32</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-TAKRI:CAPS">G_UNICODE_SCRIPT_TAKRI</para></entry>
<entry role="enum_member_description"><para>Takri. Since: 2.32</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-BASSA-VAH:CAPS">G_UNICODE_SCRIPT_BASSA_VAH</para></entry>
<entry role="enum_member_description"><para>Bassa. Since: 2.42</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-CAUCASIAN-ALBANIAN:CAPS">G_UNICODE_SCRIPT_CAUCASIAN_ALBANIAN</para></entry>
<entry role="enum_member_description"><para>Caucasian Albanian. Since: 2.42</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-DUPLOYAN:CAPS">G_UNICODE_SCRIPT_DUPLOYAN</para></entry>
<entry role="enum_member_description"><para>Duployan. Since: 2.42</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-ELBASAN:CAPS">G_UNICODE_SCRIPT_ELBASAN</para></entry>
<entry role="enum_member_description"><para>Elbasan. Since: 2.42</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-GRANTHA:CAPS">G_UNICODE_SCRIPT_GRANTHA</para></entry>
<entry role="enum_member_description"><para>Grantha. Since: 2.42</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-KHOJKI:CAPS">G_UNICODE_SCRIPT_KHOJKI</para></entry>
<entry role="enum_member_description"><para>Kjohki. Since: 2.42</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-KHUDAWADI:CAPS">G_UNICODE_SCRIPT_KHUDAWADI</para></entry>
<entry role="enum_member_description"><para>Khudawadi, Sindhi. Since: 2.42</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-LINEAR-A:CAPS">G_UNICODE_SCRIPT_LINEAR_A</para></entry>
<entry role="enum_member_description"><para>Linear A. Since: 2.42</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-MAHAJANI:CAPS">G_UNICODE_SCRIPT_MAHAJANI</para></entry>
<entry role="enum_member_description"><para>Mahajani. Since: 2.42</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-MANICHAEAN:CAPS">G_UNICODE_SCRIPT_MANICHAEAN</para></entry>
<entry role="enum_member_description"><para>Manichaean. Since: 2.42</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-MENDE-KIKAKUI:CAPS">G_UNICODE_SCRIPT_MENDE_KIKAKUI</para></entry>
<entry role="enum_member_description"><para>Mende Kikakui. Since: 2.42</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-MODI:CAPS">G_UNICODE_SCRIPT_MODI</para></entry>
<entry role="enum_member_description"><para>Modi. Since: 2.42</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-MRO:CAPS">G_UNICODE_SCRIPT_MRO</para></entry>
<entry role="enum_member_description"><para>Mro. Since: 2.42</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-NABATAEAN:CAPS">G_UNICODE_SCRIPT_NABATAEAN</para></entry>
<entry role="enum_member_description"><para>Nabataean. Since: 2.42</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-OLD-NORTH-ARABIAN:CAPS">G_UNICODE_SCRIPT_OLD_NORTH_ARABIAN</para></entry>
<entry role="enum_member_description"><para>Old North Arabian. Since: 2.42</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-OLD-PERMIC:CAPS">G_UNICODE_SCRIPT_OLD_PERMIC</para></entry>
<entry role="enum_member_description"><para>Old Permic. Since: 2.42</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-PAHAWH-HMONG:CAPS">G_UNICODE_SCRIPT_PAHAWH_HMONG</para></entry>
<entry role="enum_member_description"><para>Pahawh Hmong. Since: 2.42</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-PALMYRENE:CAPS">G_UNICODE_SCRIPT_PALMYRENE</para></entry>
<entry role="enum_member_description"><para>Palmyrene. Since: 2.42</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-PAU-CIN-HAU:CAPS">G_UNICODE_SCRIPT_PAU_CIN_HAU</para></entry>
<entry role="enum_member_description"><para>Pau Cin Hau. Since: 2.42</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-PSALTER-PAHLAVI:CAPS">G_UNICODE_SCRIPT_PSALTER_PAHLAVI</para></entry>
<entry role="enum_member_description"><para>Psalter Pahlavi. Since: 2.42</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-SIDDHAM:CAPS">G_UNICODE_SCRIPT_SIDDHAM</para></entry>
<entry role="enum_member_description"><para>Siddham. Since: 2.42</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-TIRHUTA:CAPS">G_UNICODE_SCRIPT_TIRHUTA</para></entry>
<entry role="enum_member_description"><para>Tirhuta. Since: 2.42</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-WARANG-CITI:CAPS">G_UNICODE_SCRIPT_WARANG_CITI</para></entry>
<entry role="enum_member_description"><para>Warang Citi. Since: 2.42</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-AHOM:CAPS">G_UNICODE_SCRIPT_AHOM</para></entry>
<entry role="enum_member_description"><para>Ahom. Since: 2.48</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-ANATOLIAN-HIEROGLYPHS:CAPS">G_UNICODE_SCRIPT_ANATOLIAN_HIEROGLYPHS</para></entry>
<entry role="enum_member_description"><para>Anatolian Hieroglyphs. Since: 2.48</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-HATRAN:CAPS">G_UNICODE_SCRIPT_HATRAN</para></entry>
<entry role="enum_member_description"><para>Hatran. Since: 2.48</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-MULTANI:CAPS">G_UNICODE_SCRIPT_MULTANI</para></entry>
<entry role="enum_member_description"><para>Multani. Since: 2.48</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-OLD-HUNGARIAN:CAPS">G_UNICODE_SCRIPT_OLD_HUNGARIAN</para></entry>
<entry role="enum_member_description"><para>Old Hungarian. Since: 2.48</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-SIGNWRITING:CAPS">G_UNICODE_SCRIPT_SIGNWRITING</para></entry>
<entry role="enum_member_description"><para>Signwriting. Since: 2.48</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-ADLAM:CAPS">G_UNICODE_SCRIPT_ADLAM</para></entry>
<entry role="enum_member_description"><para>Adlam. Since: 2.50</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-BHAIKSUKI:CAPS">G_UNICODE_SCRIPT_BHAIKSUKI</para></entry>
<entry role="enum_member_description"><para>Bhaiksuki. Since: 2.50</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-MARCHEN:CAPS">G_UNICODE_SCRIPT_MARCHEN</para></entry>
<entry role="enum_member_description"><para>Marchen. Since: 2.50</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-NEWA:CAPS">G_UNICODE_SCRIPT_NEWA</para></entry>
<entry role="enum_member_description"><para>Newa. Since: 2.50</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-OSAGE:CAPS">G_UNICODE_SCRIPT_OSAGE</para></entry>
<entry role="enum_member_description"><para>Osage. Since: 2.50</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-TANGUT:CAPS">G_UNICODE_SCRIPT_TANGUT</para></entry>
<entry role="enum_member_description"><para>Tangut. Since: 2.50</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-MASARAM-GONDI:CAPS">G_UNICODE_SCRIPT_MASARAM_GONDI</para></entry>
<entry role="enum_member_description"><para>Masaram Gondi. Since: 2.54</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-NUSHU:CAPS">G_UNICODE_SCRIPT_NUSHU</para></entry>
<entry role="enum_member_description"><para>Nushu. Since: 2.54</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-SOYOMBO:CAPS">G_UNICODE_SCRIPT_SOYOMBO</para></entry>
<entry role="enum_member_description"><para>Soyombo. Since: 2.54</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-ZANABAZAR-SQUARE:CAPS">G_UNICODE_SCRIPT_ZANABAZAR_SQUARE</para></entry>
<entry role="enum_member_description"><para>Zanabazar Square. Since: 2.54</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-DOGRA:CAPS">G_UNICODE_SCRIPT_DOGRA</para></entry>
<entry role="enum_member_description"><para>Dogra. Since: 2.58</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-GUNJALA-GONDI:CAPS">G_UNICODE_SCRIPT_GUNJALA_GONDI</para></entry>
<entry role="enum_member_description"><para>Gunjala Gondi. Since: 2.58</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-HANIFI-ROHINGYA:CAPS">G_UNICODE_SCRIPT_HANIFI_ROHINGYA</para></entry>
<entry role="enum_member_description"><para>Hanifi Rohingya. Since: 2.58</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-MAKASAR:CAPS">G_UNICODE_SCRIPT_MAKASAR</para></entry>
<entry role="enum_member_description"><para>Makasar. Since: 2.58</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-MEDEFAIDRIN:CAPS">G_UNICODE_SCRIPT_MEDEFAIDRIN</para></entry>
<entry role="enum_member_description"><para>Medefaidrin. Since: 2.58</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-OLD-SOGDIAN:CAPS">G_UNICODE_SCRIPT_OLD_SOGDIAN</para></entry>
<entry role="enum_member_description"><para>Old Sogdian. Since: 2.58</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-UNICODE-SCRIPT-SOGDIAN:CAPS">G_UNICODE_SCRIPT_SOGDIAN</para></entry>
<entry role="enum_member_description"><para>Sogdian. Since: 2.58</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="GNormalizeMode" role="enum">
<title>enum GNormalizeMode</title>
<indexterm zone="GNormalizeMode"><primary sortas="NormalizeMode">GNormalizeMode</primary></indexterm>
<para>Defines how a Unicode string is transformed in a canonical
form, standardizing such issues as whether a character with
an accent is represented as a base character and combining
accent or as a single precomposed character. Unicode strings
should generally be normalized before comparing them.</para>
<refsect3 id="GNormalizeMode.members" role="enum_members">
<title>Members</title>
<informaltable role="enum_members_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="enum_members_name" colwidth="300px"/>
<colspec colname="enum_members_description"/>
<colspec colname="enum_members_annotations" colwidth="200px"/>
<tbody>
<row role="constant"><entry role="enum_member_name"><para id="G-NORMALIZE-DEFAULT:CAPS">G_NORMALIZE_DEFAULT</para></entry>
<entry role="enum_member_description"><para>standardize differences that do not affect the
    text content, such as the above-mentioned accent representation</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-NORMALIZE-NFD:CAPS">G_NORMALIZE_NFD</para></entry>
<entry role="enum_member_description"><para>another name for <link linkend="G-NORMALIZE-DEFAULT:CAPS"><literal>G_NORMALIZE_DEFAULT</literal></link></para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-NORMALIZE-DEFAULT-COMPOSE:CAPS">G_NORMALIZE_DEFAULT_COMPOSE</para></entry>
<entry role="enum_member_description"><para>like <link linkend="G-NORMALIZE-DEFAULT:CAPS"><literal>G_NORMALIZE_DEFAULT</literal></link>, but with
    composed forms rather than a maximally decomposed form</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-NORMALIZE-NFC:CAPS">G_NORMALIZE_NFC</para></entry>
<entry role="enum_member_description"><para>another name for <link linkend="G-NORMALIZE-DEFAULT-COMPOSE:CAPS"><literal>G_NORMALIZE_DEFAULT_COMPOSE</literal></link></para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-NORMALIZE-ALL:CAPS">G_NORMALIZE_ALL</para></entry>
<entry role="enum_member_description"><para>beyond <link linkend="G-NORMALIZE-DEFAULT:CAPS"><literal>G_NORMALIZE_DEFAULT</literal></link> also standardize the
    "compatibility" characters in Unicode, such as SUPERSCRIPT THREE
    to the standard forms (in this case DIGIT THREE). Formatting
    information may be lost but for most text operations such
    characters should be considered the same</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-NORMALIZE-NFKD:CAPS">G_NORMALIZE_NFKD</para></entry>
<entry role="enum_member_description"><para>another name for <link linkend="G-NORMALIZE-ALL:CAPS"><literal>G_NORMALIZE_ALL</literal></link></para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-NORMALIZE-ALL-COMPOSE:CAPS">G_NORMALIZE_ALL_COMPOSE</para></entry>
<entry role="enum_member_description"><para>like <link linkend="G-NORMALIZE-ALL:CAPS"><literal>G_NORMALIZE_ALL</literal></link>, but with composed
    forms rather than a maximally decomposed form</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="G-NORMALIZE-NFKC:CAPS">G_NORMALIZE_NFKC</para></entry>
<entry role="enum_member_description"><para>another name for <link linkend="G-NORMALIZE-ALL-COMPOSE:CAPS"><literal>G_NORMALIZE_ALL_COMPOSE</literal></link></para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>

</refsect1>
<refsect1 id="glib-Unicode-Manipulation.see-also">
<title>See Also</title>
<para>g_locale_to_utf8(), <link linkend="g-locale-from-utf8"><function>g_locale_from_utf8()</function></link></para>

</refsect1>

</refentry>
