Imported Upstream version 1.0.2
[platform/upstream/fribidi.git] / lib / fribidi-arabic.h
1 /* fribidi-arabic.h - do Arabic shaping to presentation forms
2  *
3  * Copyright (C) 2005  Behdad Esfahbod
4  * 
5  * This file is part of GNU FriBidi.
6  * 
7  * GNU FriBidi is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU Lesser General Public License
9  * as published by the Free Software Foundation; either version 2.1
10  * of the License, or (at your option) any later version.
11  * 
12  * GNU FriBidi is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  * GNU Lesser General Public License for more details.
16  * 
17  * You should have received a copy of the GNU Lesser General Public License
18  * along with GNU FriBidi; if not, write to the Free Software
19  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
20  * 
21  * For licensing issues, contact <fribidi.license@gmail.com> or write to
22  * Sharif FarsiWeb, Inc., PO Box 13445-389, Tehran, Iran.
23  *
24  * Author(s):
25  *   Behdad Esfahbod, 2005
26  */
27 #ifndef _FRIBIDI_ARABIC_H
28 #define _FRIBIDI_ARABIC_H
29
30 #include "fribidi-common.h"
31
32 #include "fribidi-types.h"
33 #include "fribidi-flags.h"
34 #include "fribidi-bidi-types.h"
35 #include "fribidi-joining.h"
36
37 #include "fribidi-begindecls.h"
38
39
40 /* fribidi_shape_arabic - do Arabic shaping
41  *
42  * The actual shaping that is done depends on the flags set.  Only flags
43  * starting with FRIBIDI_FLAG_SHAPE_ARAB_ affect this function.
44  * Currently these are:
45  *
46  *      * FRIBIDI_FLAG_SHAPE_MIRRORING: Do mirroring.
47  *      * FRIBIDI_FLAG_SHAPE_ARAB_PRES: Shape Arabic characters to their
48  *                                      presentation form glyphs.
49  *      * FRIBIDI_FLAG_SHAPE_ARAB_LIGA: Form mandatory Arabic ligatures.
50  *      * FRIBIDI_FLAG_SHAPE_ARAB_CONSOLE: Perform additional Arabic shaping
51  *                                         suitable for text rendered on
52  *                                         grid terminals with no mark
53  *                                         rendering capabilities.
54  *
55  * Of the above, FRIBIDI_FLAG_SHAPE_ARAB_CONSOLE is only used in special
56  * cases, but the rest are recommended in any environment that doesn't have
57  * other means for doing Arabic shaping.  The set of extra flags that enable
58  * this level of Arabic support has a shortcut named FRIBIDI_FLAGS_ARABIC.
59  */
60 FRIBIDI_ENTRY void
61 fribidi_shape_arabic (
62   FriBidiFlags flags, /* shaping flags */
63   const FriBidiLevel *embedding_levels,
64   const FriBidiStrIndex len,    /* input string length */
65   FriBidiArabicProp *ar_props, /* input/output Arabic properties as
66                                 * computed by fribidi_join_arabic */
67   FriBidiChar *str              /* string to shape */
68 );
69
70 #include "fribidi-enddecls.h"
71
72 #endif /* !_FRIBIDI_ARABIC_H */
73 /* Editor directions:
74  * Local Variables:
75  *   mode: c
76  *   c-basic-offset: 2
77  *   indent-tabs-mode: t
78  *   tab-width: 8
79  * End:
80  * vim: textwidth=78: autoindent: cindent: shiftwidth=2: tabstop=8:
81  */