Rendering
Functions to run the rendering pipeline
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.
The #PangoContext structure stores global information
used to control the itemization process.
The #PangoItem structure stores information about
a segment of text. It contains the following fields:
@offset: the offset of the segment from the beginning of the
string in bytes.
@length: the length of the segment in bytes.
@num_chars: the length of the segment in characters.
@analysis: the properties of the segment.
The #PangoAnalysis structure stores information about
the properties of a segment of text. It has the following
fields:
@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 bidrectional level for this segment.
@gravity: the glyph orientation for this segment.
@centered_baseline: whether this segment should be shifted to center around
the baseline.
@language: the detected language for this segment.
@extra_attrs: extra attributes for this segment.
@PANGO_DIRECTION_LTR:
@PANGO_DIRECTION_RTL:
@PANGO_DIRECTION_TTB_LTR:
@PANGO_DIRECTION_TTB_RTL:
@PANGO_DIRECTION_WEAK_LTR:
@PANGO_DIRECTION_WEAK_RTL:
@PANGO_DIRECTION_NEUTRAL:
The #GObject type for #PangoDirection.
@PANGO_GRAVITY_SOUTH:
@PANGO_GRAVITY_EAST:
@PANGO_GRAVITY_NORTH:
@PANGO_GRAVITY_WEST:
@PANGO_GRAVITY_AUTO:
The #GObject type for #PangoGravity.
@context:
@text:
@start_index:
@length:
@attrs:
@cached_iter:
@Returns:
@context:
@base_dir:
@text:
@start_index:
@length:
@attrs:
@cached_iter:
@Returns:
@item:
@item:
@Returns:
@Returns:
@orig:
@split_index:
@split_offset:
@Returns:
@logical_items:
@Returns:
@Returns:
@context:
@font_map:
@context:
@Returns:
@context:
@Returns:
@context:
@desc:
@context:
@Returns:
@context:
@language:
@context:
@Returns:
@context:
@direction:
@context:
@Returns:
@context:
@gravity:
@context:
@Returns:
@context:
@Returns:
@context:
@matrix:
@context:
@desc:
@Returns:
@context:
@desc:
@language:
@Returns:
@context:
@desc:
@language:
@Returns:
@context:
@families:
@n_families:
@ch:
@mirrored_ch:
@Returns:
@ch:
@Returns:
@text:
@length:
@Returns:
@gravity:
@Returns:
@text:
@length:
@analysis:
@attrs:
@attrs_len:
@text:
@length:
@level:
@language:
@log_attrs:
@attrs_len:
@text:
@length:
@paragraph_delimiter_index:
@next_paragraph_start:
@text:
@length:
@analysis:
@attrs:
@attrs_len:
The #PangoLogAttr structure stores information
about the attributes of a single character.
@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.
@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
intersentence 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.
@text:
@length:
@analysis:
@glyphs: