Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
fribidi_reorder_line(3)	      Programmer's Manual      fribidi_reorder_line(3)

NAME
       fribidi_reorder_line - reorder a	line of	logical	string to visual

SYNOPSIS
       #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
       );

PARAMETERS
       FriBidiFlags flags
	      Reorder flags.

       const FriBidiCharType *bidi_types
	      Input	list	 of	bidi	 types	  as	returned    by
	      fribidi_get_bidi_types().

	      Since there are 23 possible values for a const  FriBidiCharType,
	      they are not all listed here.

       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
	      fribidi_get_par_embedding_levels.

       FriBidiChar *visual_str
	      Visual string to reorder.

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

DESCRIPTION
       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
       http://www.unicode.org/reports/tr9/#Reordering_Resolved_Levels.

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

       You should provide the resolved paragraph direction and embedding  lev-
       els  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	 para-
       graph 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 iden-
       tity mapping, or	pass NULL if no	map is needed.

       There is	an optional part to this function, which is whether  non-spac-
       ing  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_RE-
       ORDER_NSM flag.	The flag is on in FRIBIDI_FLAGS_DEFAULT.

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

SEE ALSO
       fribidi_shape_arabic(3),			 fribidi_get_par_direction(3),
       fribidi_get_par_embedding_levels_ex(3),	     fribidi_get_bidi_type(3),
       fribidi_get_bidi_types(3),  fribidi_get_bidi_type_name(3),  fribidi_de-
       bug_status(3),	fribidi_set_debug(3),	fribidi_charset_to_unicode(3),
       fribidi_unicode_to_charset(3),  fribidi_parse_charset(3),  fribidi_mir-
       roring_status(3),   fribidi_set_mirroring(3),  fribidi_reorder_nsm_sta-
       tus(3), fribidi_set_reorder_nsm(3),  fribidi_log2vis_get_embedding_lev-
       els(3),	      fribidi_get_type(3),	 fribidi_get_type_internal(3),
       fribidi_get_par_embedding_levels(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_get_bracket(3),
       fribidi_get_bracket_types(3),	   fribidi_shape(3),	   fribidi_re-
       move_bidi_marks(3), fribidi_log2vis(3)

c2man fribidi-bidi.h	       25 September 2024       fribidi_reorder_line(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=fribidi_reorder_line&sektion=3&manpath=FreeBSD+Ports+14.3.quarterly>

home | help