Do arabic joining
#include <fribidi.h>
void fribidi_join_arabic
(
const FriBidiCharType *bidi_types,
const FriBidiStrIndex len,
const FriBidiLevel *embedding_levels,
FriBidiArabicProp *ar_props
);
const FriBidiCharType *bidi_types
Input list of bidi types as returned by fribidi_get_bidi_types().
Possible values for a const FriBidiCharType are as follows:
FRIBIDI_TYPE_LTR
Left-To-Right letter.
FRIBIDI_TYPE_RTL
Right-To-Left letter.
FRIBIDI_TYPE_AL
Arabic Letter.
FRIBIDI_TYPE_EN
European Numeral.
FRIBIDI_TYPE_AN
Arabic Numeral.
FRIBIDI_TYPE_ES
European number Separator.
FRIBIDI_TYPE_ET
European number Terminator.
FRIBIDI_TYPE_CS
Common Separator.
FRIBIDI_TYPE_NSM
Non Spacing Mark.
FRIBIDI_TYPE_BN
Boundary Neutral.
FRIBIDI_TYPE_BS
Block Separator.
FRIBIDI_TYPE_SS
Segment Separator.
FRIBIDI_TYPE_WS
WhiteSpace.
FRIBIDI_TYPE_ON
Other Neutral.
FRIBIDI_TYPE_LRE
Left-to-Right Embedding.
FRIBIDI_TYPE_RLE
Right-to-Left Embedding.
FRIBIDI_TYPE_LRO
Left-to-Right Override.
FRIBIDI_TYPE_RLO
Right-to-Left Override.
FRIBIDI_TYPE_PDF
Pop Directional Flag.
const FriBidiStrIndex len
Input string length.
const FriBidiLevel *embedding_levels
Input list of embedding levels, as returned by fribidi_get_par_embedding_levels.
FriBidiArabicProp *ar_props
Arabic properties to analyze, initilized by joining types, as returned by fribidi_get_joining_types.
This function does the Arabic joining algorithm. Means, given Arabic joining types of the characters in ar_props (don't worry, FriBidiJoiningType can be casted to FriBidiArabicProp automagically), this function modifies this properties to grasp the effect of neighboring characters. You probably need this information later to do Arabic shaping.
This function implements rules R1 to R7 inclusive (all rules) of the Arabic Cursive Joining algorithm of the Unicode standard as available at http://www.unicode.org/versions/Unicode4.0.0/ch08.pdf#G7462. It also interacts correctly with the bidirection algorithm as defined in Section
3.5 Shaping of the Unicode Bidirectional Algorithm available at http://www.unicode.org/reports/tr9/#Shaping.
There are a few macros defined in fribidi-joining-types.h for querying the Arabic properties computed by this function.
fribidi_charset_to_unicode(3), fribidi_unicode_to_charset(3), fribidi_parse_charset(3), fribidi_shape_arabic(3), fribidi_get_par_direction(3), fribidi_get_par_embedding_levels(3), fribidi_reorder_line(3), fribidi_get_bidi_type(3), fribidi_get_bidi_types(3), fribidi_get_bidi_type_name(3), fribidi_debug_status(3), fribidi_mirroring_status(3), fribidi_set_mirroring(3), fribidi_reorder_nsm_status(3), fribidi_set_reorder_nsm(3), fribidi_log2vis_get_embedding_levels(3), fribidi_get_type(3), fribidi_get_type_internal(3), fribidi_remove_bidi_marks(3), fribidi_log2vis(3), fribidi_get_joining_type(3), fribidi_get_joining_types(3), fribidi_get_joining_type_name(3), fribidi_get_mirror_char(3), fribidi_shape_mirroring(3), fribidi_shape(3)