<!-- ##### SECTION Title ##### -->
Text

<!-- ##### SECTION Short_Description ##### -->
Rendering text and glyphs

<!-- ##### SECTION Long_Description ##### -->
<para>
Cairo has two sets of text rendering capabilities:
<itemizedlist>
  <listitem>
    The functions with <emphasis>text</emphasis> in their name form cairo's
    <firstterm>toy</firstterm> text API.  The toy API takes UTF-8 encoded
    text and is limited in its functionality to rendering simple
    left-to-right text with no advanced features.  That means for example
    that most complex scripts like Hebrew, Arabic, and Indic scripts are
    out of question.  No kerning or correct positioning of diacritical marks
    either.  The font selection is pretty limited too and doesn't handle the
    case that the selected font does not cover the characters in the text.
    This set of functions are really that, a toy text API, for testing and
    demonstration purposes.  Any serious application should avoid them.
  </listitem>
  <listitem>
    The functions with <emphasis>glyphs</emphasis> in their name form cairo's
    <firstterm>low-level</firstterm> text API.  The low-level API relies on
    the user to convert text to a set of glyph indexes and positions.  This
    is a very hard problem and is best handled by external libraries, like
    the pangocairo that is part of the Pango text layout and rendering library.
    Pango is available from <ulink
    url="http://www.pango.org/">http://www.pango.org/</ulink>.
  </listitem>
</itemizedlist>
</para>

<!-- ##### SECTION See_Also ##### -->
<para>
<itemizedlist>
<listitem>#cairo_font_face_t</listitem>
<listitem>#cairo_scaled_font_t</listitem>
<listitem>cairo_text_path()</listitem>
<listitem>cairo_glyph_path()</listitem>
</itemizedlist>
</para>

<!-- ##### SECTION Stability_Level ##### -->


<!-- ##### STRUCT cairo_glyph_t ##### -->
<para>

</para>

@index: 
@x: 
@y: 

<!-- ##### ENUM cairo_font_slant_t ##### -->
<para>

</para>

@CAIRO_FONT_SLANT_NORMAL: 
@CAIRO_FONT_SLANT_ITALIC: 
@CAIRO_FONT_SLANT_OBLIQUE: 

<!-- ##### ENUM cairo_font_weight_t ##### -->
<para>

</para>

@CAIRO_FONT_WEIGHT_NORMAL: 
@CAIRO_FONT_WEIGHT_BOLD: 

<!-- ##### STRUCT cairo_text_cluster_t ##### -->
<para>

</para>

@num_bytes: 
@num_glyphs: 

<!-- ##### ENUM cairo_text_cluster_flags_t ##### -->
<para>

</para>

@CAIRO_TEXT_CLUSTER_FLAG_BACKWARD: 

<!-- ##### FUNCTION cairo_select_font_face ##### -->
<para>

</para>

@cr: 
@family: 
@slant: 
@weight: 


<!-- ##### FUNCTION cairo_set_font_size ##### -->
<para>

</para>

@cr: 
@size: 


<!-- ##### FUNCTION cairo_set_font_matrix ##### -->
<para>

</para>

@cr: 
@matrix: 


<!-- ##### FUNCTION cairo_get_font_matrix ##### -->
<para>

</para>

@cr: 
@matrix: 


<!-- ##### FUNCTION cairo_set_font_options ##### -->
<para>

</para>

@cr: 
@options: 


<!-- ##### FUNCTION cairo_get_font_options ##### -->
<para>

</para>

@cr: 
@options: 


<!-- ##### FUNCTION cairo_set_font_face ##### -->
<para>

</para>

@cr: 
@font_face: 


<!-- ##### FUNCTION cairo_get_font_face ##### -->
<para>

</para>

@cr: 
@Returns: 


<!-- ##### FUNCTION cairo_set_scaled_font ##### -->
<para>

</para>

@cr: 
@scaled_font: 


<!-- ##### FUNCTION cairo_get_scaled_font ##### -->
<para>

</para>

@cr: 
@Returns: 


<!-- ##### FUNCTION cairo_show_text ##### -->
<para>

</para>

@cr: 
@utf8: 


<!-- ##### FUNCTION cairo_show_glyphs ##### -->
<para>

</para>

@cr: 
@glyphs: 
@num_glyphs: 


<!-- ##### FUNCTION cairo_show_text_glyphs ##### -->
<para>

</para>

@cr: 
@utf8: 
@utf8_len: 
@glyphs: 
@num_glyphs: 
@clusters: 
@num_clusters: 
@cluster_flags: 


<!-- ##### FUNCTION cairo_font_extents ##### -->
<para>

</para>

@cr: 
@extents: 


<!-- ##### FUNCTION cairo_text_extents ##### -->
<para>

</para>

@cr: 
@utf8: 
@extents: 


<!-- ##### FUNCTION cairo_glyph_extents ##### -->
<para>

</para>

@cr: 
@glyphs: 
@num_glyphs: 
@extents: 


<!-- ##### FUNCTION cairo_toy_font_face_create ##### -->
<para>

</para>

@family: 
@slant: 
@weight: 
@Returns: 


<!-- ##### FUNCTION cairo_toy_font_face_get_family ##### -->
<para>

</para>

@font_face: 
@Returns: 


<!-- ##### FUNCTION cairo_toy_font_face_get_slant ##### -->
<para>

</para>

@font_face: 
@Returns: 


<!-- ##### FUNCTION cairo_toy_font_face_get_weight ##### -->
<para>

</para>

@font_face: 
@Returns: 


<!-- ##### FUNCTION cairo_glyph_allocate ##### -->
<para>

</para>

@num_glyphs: 
@Returns: 


<!-- ##### FUNCTION cairo_glyph_free ##### -->
<para>

</para>

@glyphs: 


<!-- ##### FUNCTION cairo_text_cluster_allocate ##### -->
<para>

</para>

@num_clusters: 
@Returns: 


<!-- ##### FUNCTION cairo_text_cluster_free ##### -->
<para>

</para>

@clusters: 


