---
name: "fribidi_shape_arabic"
section: "3"
platform: "linux"
package: "fribidi"
version: "1.0.18-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/fribidi_shape_arabic"
---

# fribidi\_shape\_arabic(3)

do Arabic shaping

## NAME

fribidi\_shape\_arabic - do Arabic shaping

## SYNOPSIS

**#include \<../fribidi/lib/fribidi.h\>**

**void fribidi\_shape\_arabic**\
 **(**\
\
 	**FriBidiFlags flags,**\
\
 	**const FriBidiLevel \*embedding\_levels,**\
\
 	**const FriBidiStrIndex len,**\
\
 	**FriBidiArabicProp \*ar\_props,**\
\
 	**FriBidiChar \*str**\
 **);**

## PARAMETERS

- **FriBidiFlags flags**

  Shaping flags.

- **const FriBidiLevel \*embedding\_levels**

  Not Documented.

- **const FriBidiStrIndex len**

  Input string length.

- **FriBidiArabicProp \*ar\_props**

  Input/output Arabic properties as computed by fribidi\_join\_arabic.

- **FriBidiChar \*str**

  String to shape.

## DESCRIPTION

The actual shaping that is done depends on the flags set.  Only flags starting with FRIBIDI\_FLAG\_SHAPE\_ARAB\_ affect this function. Currently these are:

\* FRIBIDI\_FLAG\_SHAPE\_MIRRORING: Do mirroring.\
 \* FRIBIDI\_FLAG\_SHAPE\_ARAB\_PRES: Shape Arabic characters to their presentation form glyphs.\
 \* FRIBIDI\_FLAG\_SHAPE\_ARAB\_LIGA: Form mandatory Arabic ligatures.\
 \* FRIBIDI\_FLAG\_SHAPE\_ARAB\_CONSOLE: Perform additional Arabic shaping suitable for text rendered on grid terminals with no mark rendering capabilities.

Of the above, FRIBIDI\_FLAG\_SHAPE\_ARAB\_CONSOLE is only used in special cases, but the rest are recommended in any environment that doesn't have other means for doing Arabic shaping.  The set of extra flags that enable this level of Arabic support has a shortcut named FRIBIDI\_FLAGS\_ARABIC.

## SEE ALSO

[fribidi\_get\_par\_direction(3)](/fribidi_get_par_direction/3.md), [fribidi\_get\_par\_embedding\_levels\_ex(3)](/fribidi_get_par_embedding_levels_ex/3.md), [fribidi\_reorder\_line(3)](/fribidi_reorder_line/3.md), [fribidi\_get\_bidi\_type(3)](/fribidi_get_bidi_type/3.md), [fribidi\_get\_bidi\_types(3)](/fribidi_get_bidi_types/3.md), [fribidi\_get\_bidi\_type\_name(3)](/fribidi_get_bidi_type_name/3.md), [fribidi\_charset\_to\_unicode(3)](/fribidi_charset_to_unicode/3.md), [fribidi\_unicode\_to\_charset(3)](/fribidi_unicode_to_charset/3.md), [fribidi\_parse\_charset(3)](/fribidi_parse_charset/3.md), [fribidi\_debug\_status(3)](/fribidi_debug_status/3.md), [fribidi\_set\_debug(3)](/fribidi_set_debug/3.md), [fribidi\_mirroring\_status(3)](/fribidi_mirroring_status/3.md), [fribidi\_set\_mirroring(3)](/fribidi_set_mirroring/3.md), [fribidi\_reorder\_nsm\_status(3)](/fribidi_reorder_nsm_status/3.md), [fribidi\_set\_reorder\_nsm(3)](/fribidi_set_reorder_nsm/3.md), [fribidi\_log2vis\_get\_embedding\_levels(3)](/fribidi_log2vis_get_embedding_levels/3.md), [fribidi\_get\_type(3)](/fribidi_get_type/3.md), [fribidi\_get\_type\_internal(3)](/fribidi_get_type_internal/3.md), [fribidi\_get\_par\_embedding\_levels(3)](/fribidi_get_par_embedding_levels/3.md), [fribidi\_join\_arabic(3)](/fribidi_join_arabic/3.md), [fribidi\_get\_joining\_type(3)](/fribidi_get_joining_type/3.md), [fribidi\_get\_joining\_types(3)](/fribidi_get_joining_types/3.md), [fribidi\_get\_joining\_type\_name(3)](/fribidi_get_joining_type_name/3.md), [fribidi\_get\_mirror\_char(3)](/fribidi_get_mirror_char/3.md), [fribidi\_shape\_mirroring(3)](/fribidi_shape_mirroring/3.md), [fribidi\_get\_bracket(3)](/fribidi_get_bracket/3.md), [fribidi\_get\_bracket\_types(3)](/fribidi_get_bracket_types/3.md), [fribidi\_shape(3)](/fribidi_shape/3.md), [fribidi\_remove\_bidi\_marks(3)](/fribidi_remove_bidi_marks/3.md), [fribidi\_log2vis(3)](/fribidi_log2vis/3.md)
