1 | /* FriBidi |
2 | * fribidi-unicode.h - general Unicode definitions |
3 | * |
4 | * Author: |
5 | * Behdad Esfahbod, 2001, 2002, 2004 |
6 | * |
7 | * Copyright (C) 2004 Sharif FarsiWeb, Inc |
8 | * Copyright (C) 2001,2002 Behdad Esfahbod |
9 | * |
10 | * This library is free software; you can redistribute it and/or |
11 | * modify it under the terms of the GNU Lesser General Public |
12 | * License as published by the Free Software Foundation; either |
13 | * version 2.1 of the License, or (at your option) any later version. |
14 | * |
15 | * This library is distributed in the hope that it will be useful, |
16 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
17 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
18 | * Lesser General Public License for more details. |
19 | * |
20 | * You should have received a copy of the GNU Lesser General Public License |
21 | * along with this library, in a file named COPYING; if not, write to the |
22 | * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
23 | * Boston, MA 02110-1301, USA |
24 | * |
25 | * For licensing issues, contact <fribidi.license@gmail.com>. |
26 | */ |
27 | #ifndef _FRIBIDI_UNICODE_H |
28 | #define _FRIBIDI_UNICODE_H |
29 | |
30 | #include "fribidi-common.h" |
31 | |
32 | #include "fribidi-types.h" |
33 | |
34 | #include "fribidi-begindecls.h" |
35 | |
36 | /* We do not support surrogates yet */ |
37 | #define FRIBIDI_UNICODE_CHARS (sizeof(FriBidiChar) >= 4 ? 0x110000 : 0xFFFE) |
38 | |
39 | /* Unicode version - FRIBIDI_UNICODE_VERSION */ |
40 | #ifdef DONT_HAVE_FRIBIDI_UNICODE_VERSION_H |
41 | # define FRIBIDI_UNICODE_VERSION "unknown" |
42 | #else /* !DONT_HAVE_FRIBIDI_UNICODE_VERSION_H */ |
43 | # include "fribidi-unicode-version.h" |
44 | #endif /* !DONT_HAVE_FRIBIDI_UNICODE_VERSION_H */ |
45 | |
46 | /* An string containing the version the Unicode standard implemented, |
47 | * in the form of "x.y.z", or "unknown". */ |
48 | FRIBIDI_ENTRY FRIBIDI_EXTERN const char *fribidi_unicode_version; |
49 | |
50 | |
51 | /* Unicode Bidirectional Algorithm definitions: */ |
52 | |
53 | /* Number of types defined in the bidi algorithm */ |
54 | #define FRIBIDI_BIDI_NUM_TYPES 19 |
55 | |
56 | /* The maximum embedding level value assigned by explicit marks */ |
57 | #define FRIBIDI_BIDI_MAX_EXPLICIT_LEVEL 125 |
58 | |
59 | /* The maximum *number* of different resolved embedding levels: 0-126 */ |
60 | #define FRIBIDI_BIDI_MAX_RESOLVED_LEVELS 127 |
61 | |
62 | /* The maximum *number* of nested brackets: 0-63 */ |
63 | #define FRIBIDI_BIDI_MAX_NESTED_BRACKET_PAIRS 63 |
64 | |
65 | /* A few Unicode characters: */ |
66 | |
67 | /* Bidirectional marks */ |
68 | #define FRIBIDI_CHAR_LRM 0x200E |
69 | #define FRIBIDI_CHAR_RLM 0x200F |
70 | #define FRIBIDI_CHAR_LRE 0x202A |
71 | #define FRIBIDI_CHAR_RLE 0x202B |
72 | #define FRIBIDI_CHAR_PDF 0x202C |
73 | #define FRIBIDI_CHAR_LRO 0x202D |
74 | #define FRIBIDI_CHAR_RLO 0x202E |
75 | #define FRIBIDI_CHAR_LRI 0x2066 |
76 | #define FRIBIDI_CHAR_RLI 0x2067 |
77 | #define FRIBIDI_CHAR_FSI 0x2068 |
78 | #define FRIBIDI_CHAR_PDI 0x2069 |
79 | |
80 | /* Line and Paragraph Separators */ |
81 | #define FRIBIDI_CHAR_LS 0x2028 |
82 | #define FRIBIDI_CHAR_PS 0x2029 |
83 | |
84 | /* Arabic Joining marks */ |
85 | #define FRIBIDI_CHAR_ZWNJ 0x200C |
86 | #define FRIBIDI_CHAR_ZWJ 0x200D |
87 | |
88 | /* Hebrew and Arabic */ |
89 | #define FRIBIDI_CHAR_HEBREW_ALEF 0x05D0 |
90 | #define FRIBIDI_CHAR_ARABIC_ALEF 0x0627 |
91 | #define FRIBIDI_CHAR_ARABIC_ZERO 0x0660 |
92 | #define FRIBIDI_CHAR_PERSIAN_ZERO 0x06F0 |
93 | |
94 | /* Misc */ |
95 | #define FRIBIDI_CHAR_ZWNBSP 0xFEFF |
96 | |
97 | /* Char we place for a deleted slot, to delete later */ |
98 | #define FRIBIDI_CHAR_FILL FRIBIDI_CHAR_ZWNBSP |
99 | |
100 | #include "fribidi-enddecls.h" |
101 | |
102 | #endif /* !_FRIBIDI_UNICODE_H */ |
103 | /* Editor directions: |
104 | * vim:textwidth=78:tabstop=8:shiftwidth=2:autoindent:cindent |
105 | */ |
106 | |