<!-- ##### SECTION Title ##### -->
Rendering

<!-- ##### SECTION Short_Description ##### -->
Functions to run the rendering pipeline

<!-- ##### SECTION Long_Description ##### -->
<para>
The Pango rendering pipeline takes a string of
Unicode characters and converts it into glyphs.
The functions described in this section accomplish
various steps of this process.
</para>

<!-- ##### SECTION See_Also ##### -->
<para>

</para>

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


<!-- ##### SECTION Image ##### -->


<!-- ##### STRUCT PangoContext ##### -->
<para>
The #PangoContext structure stores global information
used to control the itemization process. 
</para>


<!-- ##### STRUCT PangoItem ##### -->
<para>
The #PangoItem structure stores information about
a segment of text. It contains the following fields:
</para>


<!-- ##### STRUCT PangoAnalysis ##### -->
<para>
The #PangoAnalysis structure stores information about
the properties of a segment of text. It has the following
fields:
</para>

@shape_engine: the engine for doing rendering-system-dependent processing.
@lang_engine: the engine for doing rendering-system-independent processing.
@font: the font for this segment.
@level: the bidirectional level for this segment.
@gravity: the glyph orientation for this segment (A #PangoGravity).
@flags: boolean flags for this segment (currently only one) (Since: 1.16).
@script: the detected script for this segment (A #PangoScript) (Since: 1.18).
@language: the detected language for this segment.
@extra_attrs: extra attributes for this segment.

<!-- ##### MACRO PANGO_ANALYSIS_FLAG_CENTERED_BASELINE ##### -->
<para>
Whether the segment should be shifted to center around the baseline.
Used in vertical writing directions mostly.

Since: 1.16
</para>



<!-- ##### MACRO PANGO_TYPE_DIRECTION ##### -->
<para>
The #GObject type for #PangoDirection.
</para>



<!-- ##### FUNCTION pango_itemize ##### -->
<para>

</para>

@context: 
@text: 
@start_index: 
@length: 
@attrs: 
@cached_iter: 
@Returns: 


<!-- ##### FUNCTION pango_itemize_with_base_dir ##### -->
<para>

</para>

@context: 
@base_dir: 
@text: 
@start_index: 
@length: 
@attrs: 
@cached_iter: 
@Returns: 


<!-- ##### FUNCTION pango_item_free ##### -->
<para>

</para>

@item: 


<!-- ##### FUNCTION pango_item_copy ##### -->
<para>

</para>

@item: 
@Returns: 


<!-- ##### FUNCTION pango_item_new ##### -->
<para>

</para>

@void: 
@Returns: 


<!-- ##### FUNCTION pango_item_split ##### -->
<para>

</para>

@orig: 
@split_index: 
@split_offset: 
@Returns: 


<!-- ##### FUNCTION pango_reorder_items ##### -->
<para>

</para>

@logical_items: 
@Returns: 


<!-- ##### FUNCTION pango_context_new ##### -->
<para>

</para>

@void: 
@Returns: 


<!-- ##### FUNCTION pango_context_set_font_map ##### -->
<para>

</para>

@context: 
@font_map: 


<!-- ##### FUNCTION pango_context_get_font_map ##### -->
<para>

</para>

@context: 
@Returns: 


<!-- ##### FUNCTION pango_context_get_font_description ##### -->
<para>

</para>

@context: 
@Returns: 


<!-- ##### FUNCTION pango_context_set_font_description ##### -->
<para>

</para>

@context: 
@desc: 


<!-- ##### FUNCTION pango_context_get_language ##### -->
<para>

</para>

@context: 
@Returns: 


<!-- ##### FUNCTION pango_context_set_language ##### -->
<para>

</para>

@context: 
@language: 


<!-- ##### FUNCTION pango_context_get_base_dir ##### -->
<para>

</para>

@context: 
@Returns: 


<!-- ##### FUNCTION pango_context_set_base_dir ##### -->
<para>

</para>

@context: 
@direction: 


<!-- ##### FUNCTION pango_context_get_base_gravity ##### -->
<para>

</para>

@context: 
@Returns: 


<!-- ##### FUNCTION pango_context_set_base_gravity ##### -->
<para>

</para>

@context: 
@gravity: 


<!-- ##### FUNCTION pango_context_get_gravity ##### -->
<para>

</para>

@context: 
@Returns: 


<!-- ##### FUNCTION pango_context_get_gravity_hint ##### -->
<para>

</para>

@context: 
@Returns: 


<!-- ##### FUNCTION pango_context_set_gravity_hint ##### -->
<para>

</para>

@context: 
@hint: 


<!-- ##### FUNCTION pango_context_get_matrix ##### -->
<para>

</para>

@context: 
@Returns: 


<!-- ##### FUNCTION pango_context_set_matrix ##### -->
<para>

</para>

@context: 
@matrix: 


<!-- ##### FUNCTION pango_context_load_font ##### -->
<para>

</para>

@context: 
@desc: 
@Returns: 


<!-- ##### FUNCTION pango_context_load_fontset ##### -->
<para>

</para>

@context: 
@desc: 
@language: 
@Returns: 


<!-- ##### FUNCTION pango_context_get_metrics ##### -->
<para>

</para>

@context: 
@desc: 
@language: 
@Returns: 


<!-- ##### FUNCTION pango_context_list_families ##### -->
<para>

</para>

@context: 
@families: 
@n_families: 


<!-- ##### FUNCTION pango_break ##### -->
<para>

</para>

@text: 
@length: 
@analysis: 
@attrs: 
@attrs_len: 


<!-- ##### FUNCTION pango_get_log_attrs ##### -->
<para>

</para>

@text: 
@length: 
@level: 
@language: 
@log_attrs: 
@attrs_len: 


<!-- ##### FUNCTION pango_find_paragraph_boundary ##### -->
<para>

</para>

@text: 
@length: 
@paragraph_delimiter_index: 
@next_paragraph_start: 


<!-- ##### FUNCTION pango_default_break ##### -->
<para>

</para>

@text: 
@length: 
@analysis: 
@attrs: 
@attrs_len: 


<!-- ##### STRUCT PangoLogAttr ##### -->
<para>
The #PangoLogAttr structure stores information
about the attributes of a single character.
</para>

@is_line_break: if set, can break line in front of character
@is_mandatory_break: if set, must break line in front of character
@is_char_break: if set, can break here when doing character wrapping
@is_white: is whitespace character
@is_cursor_position: if set, cursor can appear in front of character.
	i.e. this is a grapheme boundary, or the first character
        in the text.
	This flag implements Unicode's
	<ulink url="http://www.unicode.org/reports/tr29/">Grapheme
	Cluster Boundaries</ulink> semantics.
@is_word_start: is first character in a word
@is_word_end: is first non-word char after a word
	Note that in degenerate cases, you could have both @is_word_start
	and @is_word_end set for some character.
@is_sentence_boundary: is a sentence boundary.
        There are two ways to divide sentences. The first assigns all
	inter-sentence whitespace/control/format chars to some sentence,
	so all chars are in some sentence; @is_sentence_boundary denotes
	the boundaries there. The second way doesn't assign
	between-sentence spaces, etc. to any sentence, so
	@is_sentence_start/@is_sentence_end mark the boundaries
	of those sentences.
@is_sentence_start: is first character in a sentence
@is_sentence_end: is first char after a sentence.
	Note that in degenerate cases, you could have both @is_sentence_start
	and @is_sentence_end set for some character. (e.g. no space after a
	period, so the next sentence starts right away)
@backspace_deletes_character: if set, backspace deletes one character
                              rather than the entire grapheme cluster. This
                              field is only meaningful on grapheme
                              boundaries (where @is_cursor_position is
                              set).  In some languages, the full grapheme
                              (e.g.  letter + diacritics) is considered a
                              unit, while in others, each decomposed
                              character in the grapheme is a unit. In the
                              default implementation of pango_break(), this
                              bit is set on all grapheme boundaries except
                              those following Latin, Cyrillic or Greek base
                              characters.
@is_expandable_space: is a whitespace character that can possibly be
                      expanded for justification purposes. (Since: 1.18)
@is_word_boundary: is a word boundary.
	More specifically, means that this is not a position in the middle
	of a word.  For example, both sides of a punctuation mark are
	considered word boundaries.  This flag is particularly useful when
	selecting text word-by-word.
	This flag implements Unicode's
	<ulink url="http://www.unicode.org/reports/tr29/">Word
	Boundaries</ulink> semantics.
	(Since: 1.22)

<!-- ##### FUNCTION pango_shape ##### -->
<para>

</para>

@text: 
@length: 
@analysis: 
@glyphs: 


