---
name: "fribidi_shape"
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"
---

# fribidi\_shape(3)

do bidi-aware shaping

## NAME

fribidi\_shape - do bidi-aware shaping

## SYNOPSIS

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

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

## PARAMETERS

- **FriBidiFlags flags**

  Shaping flags.

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

  Input list of embedding levels, as returned by fribidi\_get\_par\_embedding\_levels.

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

This function does all shaping work that depends on the resolved embedding levels of the characters.  Currently it does mirroring and Arabic shaping, but the list may grow in the future.  This function is a wrapper around fribidi\_shape\_mirroring and fribidi\_shape\_arabic.

The flags parameter specifies which shapings are applied.  The only flags affecting the functionality of this function are those beginning with FRIBIDI\_FLAG\_SHAPE\_.  Of these, only FRIBIDI\_FLAG\_SHAPE\_MIRRORING is on in FRIBIDI\_FLAGS\_DEFAULT.  For details of the Arabic-specific flags see fribidi\_shape\_arabic.  If ar\_props is NULL, no Arabic shaping is performed.

Feel free to do your own shaping before or after calling this function, but you should take care of embedding levels yourself then.

## SEE ALSO

[fribidi\_shape\_arabic(3)](/fribidi_shape_arabic/3.md), [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\_remove\_bidi\_marks(3)](/fribidi_remove_bidi_marks/3.md), [fribidi\_log2vis(3)](/fribidi_log2vis/3.md)
