Man Linux: Main Page and Category List


       fribidi_reorder_line - reorder a line of logical string to visual


       #include <fribidi.h>

       FriBidiLevel fribidi_reorder_line
            FriBidiFlags flags,
            const FriBidiCharType *bidi_types,
            const FriBidiStrIndex len,
            const FriBidiStrIndex off,
            const FriBidiParType base_dir,
            FriBidiLevel *embedding_levels,
            FriBidiChar *visual_str,
            FriBidiStrIndex *map


       FriBidiFlags flags
              Reorder flags.

       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 length of the line.

       const FriBidiStrIndex off
              Input offset of the beginning of the line in the paragraph.

       const FriBidiParType base_dir
              Resolved paragraph base direction.

              Possible values for a const FriBidiParType are as follows:
               FRIBIDI_PAR_LTR   Left-To-Right paragraph.
               FRIBIDI_PAR_RTL   Right-To-Left paragraph.
               FRIBIDI_PAR_ON    DirectiOn-Neutral paragraph.
               FRIBIDI_PAR_WLTR  Weak Left To Right paragraph.
               FRIBIDI_PAR_WRTL  Weak Right To Left paragraph.

       FriBidiLevel *embedding_levels
              Input   list   of   embedding    levels,    as    returned    by

       FriBidiChar *visual_str
              Visual string to reorder.

       FriBidiStrIndex *map
              A map of string indices which is reordered to reflect where each
              glyph ends up.


       This function reorders the characters in a line of text from logical to
       final  visual  order.   This function implements part 4 of rule L1, and
       rules L2 and L3 of the Unicode  Bidirectional  Algorithm  available  at

       As a side effect it also sets position maps if not NULL.

       You  should  provide  the  resolved  paragraph  direction and embedding
       levels as set by fribidi_get_par_embedding_levels().   Also  note  that
       the  embedding  levels  may  change  a bit.  To be exact, the embedding
       level of any sequence of white space at the end of line is reset to the
       paragraph embedding level (That is part 4 of rule L1).

       Note  that  the bidi types and embedding levels are not reordered.  You
       can reorder these (or any other) arrays using the map later.  The  user
       is  responsible  to  initialize  map  to  something  sensible,  like an
       identity mapping, or pass NULL if no map is needed.

       There is an optional part to  this  function,  which  is  whether  non-
       spacing  marks  for right-to-left parts of the text should be reordered
       to come after their base characters in the visual string or not.   Most
       rendering  engines  expect this behavior, but console-based systems for
       example   do   not   like   it.    This   is    controlled    by    the
       FRIBIDI_FLAG_REORDER_NSM     flag.      The     flag     is    on    in


       Maximum level found in this line plus one, or zero if any error occured
       (memory allocation failure most probably).


       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_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_join_arabic(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)