SYNOPSIS

#include <fribidi.h>

FriBidiLevel fribidi_get_par_embedding_levels

(

const FriBidiCharType *bidi_types,

const FriBidiStrIndex len,

FriBidiParType *pbase_dir,

FriBidiLevel *embedding_levels

);

PARAMETERS

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 of the paragraph.

FriBidiParType *pbase_dir

Requested and resolved paragraph base direction.

Possible values for a 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

Output list of embedding levels.

DESCRIPTION

This function finds the bidi embedding levels of a single paragraph, as defined by the Unicode Bidirectional Algorithm available at http://www.unicode.org/reports/tr9/. This function implements rules P2 to I1 inclusive, and parts 1 to 3 of L1, except for rule X9 which is implemented in fribidi_remove_bidi_marks(). Part 4 of L1 is implemented in fribidi_reorder_line().

There are a few macros defined in fribidi-bidi-types.h to work with this embedding levels.

RETURNS

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

RELATED TO fribidi_get_par_embedding_levels…