Man Linux: Main Page and Category List


       fribidi_join_arabic - 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

              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

       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    It
       also interacts correctly with the bidirection algorithm as  defined  in
       3.5  Shaping  of  the  Unicode  Bidirectional  Algorithm  available  at

       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)