summaryrefslogtreecommitdiff
path: root/doc/fribidi_join_arabic.3
blob: e9ee3eea9ea61a4999ba4353e4c226f5157f7a68 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
.\" WARNING! THIS FILE WAS GENERATED AUTOMATICALLY BY c2man!
.\" DO NOT EDIT! CHANGES MADE TO THIS FILE WILL BE LOST!
.TH "fribidi_join_arabic" 3 "6 December 2012" "GNU FriBidi 0.19.7" "Programmer's Manual"
.SH "NAME"
fribidi_join_arabic \- do Arabic joining
.SH "SYNOPSIS"
.ft B
#include <fribidi.h>
.sp
void fribidi_join_arabic
.br
(
.br
	const FriBidiCharType *bidi_types,
.br
	const FriBidiStrIndex len,
.br
	const FriBidiLevel *embedding_levels,
.br
	FriBidiArabicProp *ar_props
.br
);
.ft R
.SH "PARAMETERS"
.TP
.B "const FriBidiCharType *bidi_types"
Input list of bidi types as
returned by
fribidi_get_bidi_types().
.sp
Possible values for a \fBconst FriBidiCharType\fR are as follows:
.RS 0.75in
.PD 0
.ft B
.nr TL \w'FRIBIDI_TYPE_LTR'u+0.2i
.ft R
.TP \n(TLu
\fBFRIBIDI_TYPE_LTR\fR
Left-To-Right letter.
.TP \n(TLu
\fBFRIBIDI_TYPE_RTL\fR
Right-To-Left letter.
.TP \n(TLu
\fBFRIBIDI_TYPE_AL\fR
Arabic Letter.
.TP \n(TLu
\fBFRIBIDI_TYPE_EN\fR
European Numeral.
.TP \n(TLu
\fBFRIBIDI_TYPE_AN\fR
Arabic Numeral.
.TP \n(TLu
\fBFRIBIDI_TYPE_ES\fR
European number Separator.
.TP \n(TLu
\fBFRIBIDI_TYPE_ET\fR
European number Terminator.
.TP \n(TLu
\fBFRIBIDI_TYPE_CS\fR
Common Separator.
.TP \n(TLu
\fBFRIBIDI_TYPE_NSM\fR
Non Spacing Mark.
.TP \n(TLu
\fBFRIBIDI_TYPE_BN\fR
Boundary Neutral.
.TP \n(TLu
\fBFRIBIDI_TYPE_BS\fR
Block Separator.
.TP \n(TLu
\fBFRIBIDI_TYPE_SS\fR
Segment Separator.
.TP \n(TLu
\fBFRIBIDI_TYPE_WS\fR
WhiteSpace.
.TP \n(TLu
\fBFRIBIDI_TYPE_ON\fR
Other Neutral.
.TP \n(TLu
\fBFRIBIDI_TYPE_LRE\fR
Left-to-Right Embedding.
.TP \n(TLu
\fBFRIBIDI_TYPE_RLE\fR
Right-to-Left Embedding.
.TP \n(TLu
\fBFRIBIDI_TYPE_LRO\fR
Left-to-Right Override.
.TP \n(TLu
\fBFRIBIDI_TYPE_RLO\fR
Right-to-Left Override.
.TP \n(TLu
\fBFRIBIDI_TYPE_PDF\fR
Pop Directional Flag.
.RE
.PD
.TP
.B "const FriBidiStrIndex len"
Input string length.
.TP
.B "const FriBidiLevel *embedding_levels"
Input list of embedding
levels, as returned by
fribidi_get_par_embedding_levels.
.TP
.B "FriBidiArabicProp *ar_props"
Arabic properties to analyze, initilized by
joining types, as returned by
fribidi_get_joining_types.
.SH "DESCRIPTION"
This function does the Arabic joining algorithm.  Means, given Arabic
joining types of the characters in ar_props (don't worry,
FriBidiJoiningType can be casted to FriBidiArabicProp automagically), this
function modifies this properties to grasp the effect of neighboring
characters.  You probably need this information later to do Arabic shaping.

This function implements rules R1 to R7 inclusive (all rules) of the Arabic
Cursive Joining algorithm of the Unicode standard as available at
http://www.unicode.org/versions/Unicode4.0.0/ch08.pdf#G7462.  It also
interacts correctly with the bidirection algorithm as defined in Section
.br
3.5 Shaping of the Unicode Bidirectional Algorithm available at
http://www.unicode.org/reports/tr9/#Shaping.

There are a few macros defined in fribidi-joining-types.h for querying the
Arabic properties computed by this function.
.SH "SEE ALSO"
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_reorder_line(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_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)