Imported Upstream version 0.19.5
[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 <license@farsiweb.info> or write to
22  * Sharif FarsiWeb, Inc., PO Box 13445-389, Tehran, Iran.
23  */
24 /* $Id: fribidi-arabic.h,v 1.1 2005-11-03 01:39:01 behdad Exp $
25  * $Author: behdad $
26  * $Date: 2005-11-03 01:39:01 $
27  * $Revision: 1.1 $
28  * $Source: /home/behdad/src/fdo/fribidi/togit/git/../fribidi/fribidi2/lib/fribidi-arabic.h,v $
29  *
30  * Author(s):
31  *   Behdad Esfahbod, 2005
32  */
33 #ifndef _FRIBIDI_ARABIC_H
34 #define _FRIBIDI_ARABIC_H
35
36 #include "fribidi-common.h"
37
38 #include "fribidi-types.h"
39 #include "fribidi-flags.h"
40 #include "fribidi-bidi-types.h"
41 #include "fribidi-joining.h"
42
43 #include "fribidi-begindecls.h"
44
45
46 #define fribidi_shape_arabic FRIBIDI_NAMESPACE(shape_arabic)
47 /* fribidi_shape_arabic - do Arabic shaping
48  *
49  * The actual shaping that is done depends on the flags set.  Only flags
50  * starting with FRIBIDI_FLAG_SHAPE_ARAB_ affect this function.
51  * Currently these are:
52  *
53  *      * FRIBIDI_FLAG_SHAPE_MIRRORING: Do mirroring.
54  *      * FRIBIDI_FLAG_SHAPE_ARAB_PRES: Shape Arabic characters to their
55  *                                      presentation form glyphs.
56  *      * FRIBIDI_FLAG_SHAPE_ARAB_LIGA: Form mandatory Arabic ligatures.
57  *      * FRIBIDI_FLAG_SHAPE_ARAB_CONSOLE: Perform additional Arabic shaping
58  *                                         suitable for text rendered on
59  *                                         grid terminals with no mark
60  *                                         rendering capabilities.
61  *
62  * Of the above, FRIBIDI_FLAG_SHAPE_ARAB_CONSOLE is only used in special
63  * cases, but the rest are recommended in any enviroment that doesn't have
64  * other means for doing Arabic shaping.  The set of extra flags that enable
65  * this level of Arabic support has a shortcut named FRIBIDI_FLAGS_ARABIC.
66  */
67 FRIBIDI_ENTRY void
68 fribidi_shape_arabic (
69   FriBidiFlags flags, /* shaping flags */
70   const FriBidiLevel *embedding_levels,
71   const FriBidiStrIndex len,    /* input string length */
72   FriBidiArabicProp *ar_props, /* input/output Arabic properties as
73                                 * computed by fribidi_join_arabic */
74   FriBidiChar *str              /* string to shape */
75 );
76
77 #include "fribidi-enddecls.h"
78
79 #endif /* !_FRIBIDI_ARABIC_H */
80 /* Editor directions:
81  * Local Variables:
82  *   mode: c
83  *   c-basic-offset: 2
84  *   indent-tabs-mode: t
85  *   tab-width: 8
86  * End:
87  * vim: textwidth=78: autoindent: cindent: shiftwidth=2: tabstop=8:
88  */