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