summaryrefslogtreecommitdiff
path: root/docs/pango_rendering.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/pango_rendering.md')
-rw-r--r--docs/pango_rendering.md35
1 files changed, 35 insertions, 0 deletions
diff --git a/docs/pango_rendering.md b/docs/pango_rendering.md
new file mode 100644
index 00000000..2fd61e93
--- /dev/null
+++ b/docs/pango_rendering.md
@@ -0,0 +1,35 @@
+---
+Title: The Rendering Pipeline
+---
+
+# The Rendering Pipeline
+
+The Pango rendering pipeline takes a string of Unicode characters, converts them
+it into glyphs, and renders them on some output medium. This section describes the
+various stages of this pipeline and the APIs that implement them.
+
+![Pango Rendering Pipeline](pipeline.png)
+
+Itemization
+: breaks a piece of text into segments with consistent direction and shaping
+ properies. Among other things, this determines which font to use for each
+ character. Use pango_itemize() or pango_itemize_with_base_dir() to itemize text.
+
+Shaping
+: converts characters into glyphs. Use pango_shape(), pango_shape_full() or
+ pango_shape_with_flags() to shape text.
+
+Line Breaking
+: determines where line breaks should be inserted into a sequence of glyphs.
+ The function pango_break() determines possible line breaks. The actual line
+ breaking is done by [class@Pango.Layout].
+
+Justification
+: adjusts inter-word spacing to form lines of even length. This is done by
+ [class@Pango.Layout].
+
+Rendering
+: takes a string of positioned glyphs, and renders them onto a surface. This is
+ accomplished by a [class@Pango.Renderer] object. The functions
+ pango_cairo_show_glyph_string() and pango_cairo_show_layout() use a
+ [class@Pango.Renderer] to draw text onto a cairo surface.