Pango Reference Manual | ||||
---|---|---|---|---|
Top | Description |
Bidirectional TextBidirectional Text — Types and functions to help with handling bidirectional text |
Synopsis
enum PangoDirection; PangoDirection pango_unichar_direction (gunichar ch
); PangoDirection pango_find_base_dir (const gchar *text
,gint length
); gboolean pango_get_mirror_char (gunichar ch
,gunichar *mirrored_ch
); enum PangoBidiType; PangoBidiType pango_bidi_type_for_unichar (gunichar ch
);
Description
Pango supports bidirectional text (like Arabic and Hebrew) automatically. Some applications however, need some help to correctly handle bidirectional text.
The PangoDirection type can be used with pango_context_set_base_dir()
to
instruct Pango about direction of text, though in most cases Pango detects
that correctly and automatically. The rest of the facilities in this section
are used internally by Pango already, and are provided to help applications
that need more direct control over bidirectional setting of text.
Details
enum PangoDirection
typedef enum { 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 } PangoDirection;
The PangoDirection type represents a direction in the
Unicode bidirectional algorithm; not every value in this
enumeration makes sense for every usage of PangoDirection;
for example, the return value of pango_unichar_direction()
and pango_find_base_dir()
cannot be PANGO_DIRECTION_WEAK_LTR
or PANGO_DIRECTION_WEAK_RTL
, since every character is either
neutral or has a strong direction; on the other hand
PANGO_DIRECTION_NEUTRAL
doesn't make sense to pass
to pango_itemize_with_base_dir()
.
The PANGO_DIRECTION_TTB_LTR
, PANGO_DIRECTION_TTB_RTL
values come from an earlier interpretation of this
enumeration as the writing direction of a block of
text and are no longer used; See PangoGravity for how
vertical text is handled in Pango.
A strong left-to-right direction | |
A strong right-to-left direction | |
Deprecated value; treated the
same as PANGO_DIRECTION_RTL .
|
|
Deprecated value; treated the
same as PANGO_DIRECTION_LTR
|
|
A weak left-to-right direction | |
A weak right-to-left direction | |
No direction specified |
pango_unichar_direction ()
PangoDirection pango_unichar_direction (gunichar ch
);
Determines the inherent direction of a character; either
PANGO_DIRECTION_LTR
, PANGO_DIRECTION_RTL
, or
PANGO_DIRECTION_NEUTRAL
.
This function is useful to categorize characters into left-to-right
letters, right-to-left letters, and everything else. If full
Unicode bidirectional type of a character is needed,
pango_bidi_type_for_gunichar()
can be used instead.
|
a Unicode character |
Returns : |
the direction of the character. |
pango_find_base_dir ()
PangoDirection pango_find_base_dir (const gchar *text
,gint length
);
Searches a string the first character that has a strong direction, according to the Unicode bidirectional algorithm.
|
the text to process |
|
length of text in bytes (may be -1 if text is nul-terminated)
|
Returns : |
The direction corresponding to the first strong character.
If no such character is found, then PANGO_DIRECTION_NEUTRAL is returned.
|
Since 1.4
pango_get_mirror_char ()
gboolean pango_get_mirror_char (gunichar ch
,gunichar *mirrored_ch
);
Warning
pango_get_mirror_char
is deprecated and should not be used in newly-written code.
If ch
has the Unicode mirrored property and there is another Unicode
character that typically has a glyph that is the mirror image of ch
's
glyph, puts that character in the address pointed to by mirrored_ch
.
Use g_unichar_get_mirror_char()
instead; the docs for that function
provide full details.
|
a Unicode character |
|
location to store the mirrored character |
Returns : |
TRUE if ch has a mirrored character and mirrored_ch is
filled in, FALSE otherwise
|
enum PangoBidiType
typedef enum { /* Strong types */ PANGO_BIDI_TYPE_L, PANGO_BIDI_TYPE_LRE, PANGO_BIDI_TYPE_LRO, PANGO_BIDI_TYPE_R, PANGO_BIDI_TYPE_AL, PANGO_BIDI_TYPE_RLE, PANGO_BIDI_TYPE_RLO, /* Weak types */ PANGO_BIDI_TYPE_PDF, PANGO_BIDI_TYPE_EN, PANGO_BIDI_TYPE_ES, PANGO_BIDI_TYPE_ET, PANGO_BIDI_TYPE_AN, PANGO_BIDI_TYPE_CS, PANGO_BIDI_TYPE_NSM, PANGO_BIDI_TYPE_BN, /* Neutral types */ PANGO_BIDI_TYPE_B, PANGO_BIDI_TYPE_S, PANGO_BIDI_TYPE_WS, PANGO_BIDI_TYPE_ON } PangoBidiType;
The PangoBidiType type represents the bidirectional character type of a Unicode character as specified by the Unicode bidirectional algorithm.
Left-to-Right | |
Left-to-Right Embedding | |
Left-to-Right Override | |
Right-to-Left | |
Right-to-Left Arabic | |
Right-to-Left Embedding | |
Right-to-Left Override | |
Pop Directional Format | |
European Number | |
European Number Separator | |
European Number Terminator | |
Arabic Number | |
Common Number Separator | |
Nonspacing Mark | |
Boundary Neutral | |
Paragraph Separator | |
Segment Separator | |
Whitespace | |
Other Neutrals |
Since 1.22
pango_bidi_type_for_unichar ()
PangoBidiType pango_bidi_type_for_unichar (gunichar ch
);
Determines the normative bidirectional character type of a character, as specified in the Unicode Character Database.
A simplified version of this function is available as
pango_unichar_get_direction()
.
|
a Unicode character |
Returns : |
the bidirectional character type, as used in the Unicode bidirectional algorithm. |
Since 1.22