Synopsisenum PangoGravity; enum PangoGravityHint; #define PANGO_GRAVITY_IS_VERTICAL (gravity) PangoGravity pango_gravity_get_for_matrix (const PangoMatrix *matrix); PangoGravity pango_gravity_get_for_script (PangoScript script, PangoGravity base_gravity, PangoGravityHint hint); double pango_gravity_to_rotation (PangoGravity gravity); DescriptionSince 1.16, Pango is able to correctly lay vertical text out. In fact, it can set layouts of mixed vertical and non-vertical text. 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 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 PangoLayout 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.
Applications should only need to set base gravity on PangoContext 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
gravity to auto using
The correct way to set gravity on a layout is to set it on the context
associated with it using The next thing an application may want to set on the context is the gravity hint. A PangoGravityHint instructs how different scripts should react to the set base gravity.
Font descriptions have a gravity property too, that can be set using
Last but not least, one can create PangoAttributes for gravity
and gravity hint using Detailsenum PangoGravitytypedef enum { PANGO_GRAVITY_SOUTH, PANGO_GRAVITY_EAST, PANGO_GRAVITY_NORTH, PANGO_GRAVITY_WEST, PANGO_GRAVITY_AUTO } PangoGravity;
The PangoGravity type represents the orientation of glyphs in a segment
of text. This is useful when rendering vertical text layouts. In
those situations, the layout is rotated using a non-identity PangoMatrix,
and then glyph orientation is controlled using PangoGravity.
Not every value in this enumeration makes sense for every usage of
PangoGravity; for example, See also: PangoGravityHint
Since 1.16 enum PangoGravityHinttypedef enum { PANGO_GRAVITY_HINT_NATURAL, PANGO_GRAVITY_HINT_STRONG, PANGO_GRAVITY_HINT_LINE } PangoGravityHint; The PangoGravityHint defines how horizontal scripts should behave in a vertical context. That is, English excerpt in a vertical paragraph for example. See PangoGravity.
Since 1.16 PANGO_GRAVITY_IS_VERTICAL()#define PANGO_GRAVITY_IS_VERTICAL(gravity) Whether a PangoGravity represents vertical writing directions.
Since 1.16 pango_gravity_get_for_matrix ()PangoGravity pango_gravity_get_for_matrix (const PangoMatrix *matrix); Finds the gravity that best matches the rotation component in a PangoMatrix.
Since 1.16 pango_gravity_get_for_script ()PangoGravity pango_gravity_get_for_script (PangoScript script, PangoGravity base_gravity, PangoGravityHint hint); Based on the script, base gravity, and hint, returns actual gravity to use in laying out a single PangoItem.
If
Since 1.16 pango_gravity_to_rotation ()double pango_gravity_to_rotation (PangoGravity gravity);
Converts a PangoGravity value to its natural rotation in radians.
Note that
Since 1.16 See Also
|