diff options
Diffstat (limited to 'docs/pango_bidi.md')
-rw-r--r-- | docs/pango_bidi.md | 25 |
1 files changed, 22 insertions, 3 deletions
diff --git a/docs/pango_bidi.md b/docs/pango_bidi.md index 0e8612d1..996e9781 100644 --- a/docs/pango_bidi.md +++ b/docs/pango_bidi.md @@ -14,21 +14,40 @@ control over bidirectional setting of text, Pango provides APIs such as [func@unichar_direction], [func@find_base_dir], [func@get_mirror_char] or [func@Pango.BidiType.for_unichar]. +Here is an example for mixed-direction text (shown in logical order): + +<picture> + <source srcset="bidi-input-dark.png" media="(prefers-color-scheme: dark)"> + <img alt="mixed-direction text, logical order" src="bidi-input-light.png"> +</picture> + +Pango reorders the text according to the direction of the runs: + +<picture> + <source srcset="bidi-annotate-dark.png" media="(prefers-color-scheme: dark)"> + <img alt="mixed-direction text, visual order" src="bidi-annotate-light.png"> +</picture> + # Vertical Text Pango is not only capable of vertical text layout, it can handle mixed vertical and non-vertical text correctly. This section describes the types used for setting vertical text parameters. -The way this is implemented is through the concept of *gravity*. Gravity of -normal Latin text is south. A gravity value of east means that glyphs will be -rotated ninety degrees counterclockwise. So, to render vertical text one needs +<picture> + <source srcset="vertical-dark.png" media="(prefers-color-scheme: dark)"> + <img alt="gravity west, rotated 90 degrees" align="right" valign="top" src="vertical-light.png"> +</picture> +The way this is implemented is through the concept of *gravity*. Gravity tells glyphs which way is down, so the gravity of normal Latin text is south. A gravity value of east means that glyphs will be rotated ninety degrees +counterclockwise. So, to render vertical text one needs to set the gravity and rotate the layout using the matrix machinery already in place. This has the huge advantage that most algorithms working on a [class@Pango.Layout] do not need any change as the assumption that lines run in the X direction and stack in the Y direction holds even for vertical text layouts. +Here is an example for some English text rendered with gravity west, rotated 90 degrees: + Applications should only need to set base gravity on [class@Pango.Context] in use, and let Pango decide the gravity assigned to each run of text. This automatically handles text with mixed scripts. A very common use is to set the context base |