1 /*
2  * Distributed under the Boost Software License, Version 1.0.
3  *    (See accompanying file LICENSE_1_0.txt or copy at
4  *          http://www.boost.org/LICENSE_1_0.txt)
5  */
6 module pango.c.script;
7 
8 import pango.c.language;
9 
10 import glib;
11 
12 
13 extern (C):
14 
15 /**
16  * PangoScriptIter:
17  *
18  * A #PangoScriptIter is used to iterate through a string
19  * and identify ranges in different scripts.
20  **/
21 struct PangoScriptIter;
22 
23 /**
24  * PangoScript:
25  * @PANGO_SCRIPT_INVALID_CODE: a value never returned from pango_script_for_unichar()
26  * @PANGO_SCRIPT_COMMON: a character used by multiple different scripts
27  * @PANGO_SCRIPT_INHERITED: a mark glyph that takes its script from the
28  * base glyph to which it is attached
29  * @PANGO_SCRIPT_ARABIC: 	Arabic
30  * @PANGO_SCRIPT_ARMENIAN: Armenian
31  * @PANGO_SCRIPT_BENGALI: 	Bengali
32  * @PANGO_SCRIPT_BOPOMOFO: Bopomofo
33  * @PANGO_SCRIPT_CHEROKEE: 	Cherokee
34  * @PANGO_SCRIPT_COPTIC: 	Coptic
35  * @PANGO_SCRIPT_CYRILLIC: 	Cyrillic
36  * @PANGO_SCRIPT_DESERET: 	Deseret
37  * @PANGO_SCRIPT_DEVANAGARI: 	Devanagari
38  * @PANGO_SCRIPT_ETHIOPIC: 	Ethiopic
39  * @PANGO_SCRIPT_GEORGIAN: 	Georgian
40  * @PANGO_SCRIPT_GOTHIC: 	Gothic
41  * @PANGO_SCRIPT_GREEK: 	Greek
42  * @PANGO_SCRIPT_GUJARATI: 	Gujarati
43  * @PANGO_SCRIPT_GURMUKHI: 	Gurmukhi
44  * @PANGO_SCRIPT_HAN: 	Han
45  * @PANGO_SCRIPT_HANGUL: 	Hangul
46  * @PANGO_SCRIPT_HEBREW: 	Hebrew
47  * @PANGO_SCRIPT_HIRAGANA: 	Hiragana
48  * @PANGO_SCRIPT_KANNADA: 	Kannada
49  * @PANGO_SCRIPT_KATAKANA: 	Katakana
50  * @PANGO_SCRIPT_KHMER: 	Khmer
51  * @PANGO_SCRIPT_LAO: 	Lao
52  * @PANGO_SCRIPT_LATIN: 	Latin
53  * @PANGO_SCRIPT_MALAYALAM: 	Malayalam
54  * @PANGO_SCRIPT_MONGOLIAN: 	Mongolian
55  * @PANGO_SCRIPT_MYANMAR: 	Myanmar
56  * @PANGO_SCRIPT_OGHAM: 	Ogham
57  * @PANGO_SCRIPT_OLD_ITALIC: 	Old Italic
58  * @PANGO_SCRIPT_ORIYA: 	Oriya
59  * @PANGO_SCRIPT_RUNIC: 	Runic
60  * @PANGO_SCRIPT_SINHALA: 	Sinhala
61  * @PANGO_SCRIPT_SYRIAC: 	Syriac
62  * @PANGO_SCRIPT_TAMIL: 	Tamil
63  * @PANGO_SCRIPT_TELUGU: 	Telugu
64  * @PANGO_SCRIPT_THAANA: 	Thaana
65  * @PANGO_SCRIPT_THAI: 	Thai
66  * @PANGO_SCRIPT_TIBETAN: 	Tibetan
67  * @PANGO_SCRIPT_CANADIAN_ABORIGINAL: 	Canadian Aboriginal
68  * @PANGO_SCRIPT_YI: 	Yi
69  * @PANGO_SCRIPT_TAGALOG: 	Tagalog
70  * @PANGO_SCRIPT_HANUNOO: 	Hanunoo
71  * @PANGO_SCRIPT_BUHID: 	Buhid
72  * @PANGO_SCRIPT_TAGBANWA: 	Tagbanwa
73  * @PANGO_SCRIPT_BRAILLE: 	Braille
74  * @PANGO_SCRIPT_CYPRIOT: 	Cypriot
75  * @PANGO_SCRIPT_LIMBU: 	Limbu
76  * @PANGO_SCRIPT_OSMANYA: 	Osmanya
77  * @PANGO_SCRIPT_SHAVIAN: 	Shavian
78  * @PANGO_SCRIPT_LINEAR_B: 	Linear B
79  * @PANGO_SCRIPT_TAI_LE: 	Tai Le
80  * @PANGO_SCRIPT_UGARITIC: 	Ugaritic
81  * @PANGO_SCRIPT_NEW_TAI_LUE: 	New Tai Lue. Since 1.10
82  * @PANGO_SCRIPT_BUGINESE: 	Buginese. Since 1.10
83  * @PANGO_SCRIPT_GLAGOLITIC: 	Glagolitic. Since 1.10
84  * @PANGO_SCRIPT_TIFINAGH: 	Tifinagh. Since 1.10
85  * @PANGO_SCRIPT_SYLOTI_NAGRI: 	Syloti Nagri. Since 1.10
86  * @PANGO_SCRIPT_OLD_PERSIAN: 	Old Persian. Since 1.10
87  * @PANGO_SCRIPT_KHAROSHTHI: 	Kharoshthi. Since 1.10
88  * @PANGO_SCRIPT_UNKNOWN: 		an unassigned code point. Since 1.14
89  * @PANGO_SCRIPT_BALINESE: 		Balinese. Since 1.14
90  * @PANGO_SCRIPT_CUNEIFORM: 	Cuneiform. Since 1.14
91  * @PANGO_SCRIPT_PHOENICIAN: 	Phoenician. Since 1.14
92  * @PANGO_SCRIPT_PHAGS_PA: 		Phags-pa. Since 1.14
93  * @PANGO_SCRIPT_NKO: 		N'Ko. Since 1.14
94  * @PANGO_SCRIPT_KAYAH_LI:   Kayah Li. Since 1.20.1
95  * @PANGO_SCRIPT_LEPCHA:     Lepcha. Since 1.20.1
96  * @PANGO_SCRIPT_REJANG:     Rejang. Since 1.20.1
97  * @PANGO_SCRIPT_SUNDANESE:  Sundanese. Since 1.20.1
98  * @PANGO_SCRIPT_SAURASHTRA: Saurashtra. Since 1.20.1
99  * @PANGO_SCRIPT_CHAM:       Cham. Since 1.20.1
100  * @PANGO_SCRIPT_OL_CHIKI:   Ol Chiki. Since 1.20.1
101  * @PANGO_SCRIPT_VAI:        Vai. Since 1.20.1
102  * @PANGO_SCRIPT_CARIAN:     Carian. Since 1.20.1
103  * @PANGO_SCRIPT_LYCIAN:     Lycian. Since 1.20.1
104  * @PANGO_SCRIPT_LYDIAN:     Lydian. Since 1.20.1
105  * @PANGO_SCRIPT_BATAK:      Batak. Since 1.32
106  * @PANGO_SCRIPT_BRAHMI:     Brahmi. Since 1.32
107  * @PANGO_SCRIPT_MANDAIC:    Mandaic. Since 1.32
108  * @PANGO_SCRIPT_CHAKMA:               Chakma. Since: 1.32
109  * @PANGO_SCRIPT_MEROITIC_CURSIVE:     Meroitic Cursive. Since: 1.32
110  * @PANGO_SCRIPT_MEROITIC_HIEROGLYPHS: Meroitic Hieroglyphs. Since: 1.32
111  * @PANGO_SCRIPT_MIAO:                 Miao. Since: 1.32
112  * @PANGO_SCRIPT_SHARADA:              Sharada. Since: 1.32
113  * @PANGO_SCRIPT_SORA_SOMPENG:         Sora Sompeng. Since: 1.32
114  * @PANGO_SCRIPT_TAKRI:                Takri. Since: 1.32
115  *
116  * The #PangoScript enumeration identifies different writing
117  * systems. The values correspond to the names as defined in the
118  * Unicode standard.
119  * Note that new types may be added in the future. Applications should be ready
120  * to handle unknown values.  This enumeration is interchangeable with
121  * #GUnicodeScript.  See <ulink
122  * url="http://www.unicode.org/reports/tr24/">Unicode Standard Annex
123  * #24: Script names</ulink>.
124  */
125 enum PangoScript {                         /* ISO 15924 code */
126       PANGO_SCRIPT_INVALID_CODE = -1,
127       PANGO_SCRIPT_COMMON       = 0,   /* Zyyy */
128       PANGO_SCRIPT_INHERITED,          /* Qaai */
129       PANGO_SCRIPT_ARABIC,             /* Arab */
130       PANGO_SCRIPT_ARMENIAN,           /* Armn */
131       PANGO_SCRIPT_BENGALI,            /* Beng */
132       PANGO_SCRIPT_BOPOMOFO,           /* Bopo */
133       PANGO_SCRIPT_CHEROKEE,           /* Cher */
134       PANGO_SCRIPT_COPTIC,             /* Qaac */
135       PANGO_SCRIPT_CYRILLIC,           /* Cyrl (Cyrs) */
136       PANGO_SCRIPT_DESERET,            /* Dsrt */
137       PANGO_SCRIPT_DEVANAGARI,         /* Deva */
138       PANGO_SCRIPT_ETHIOPIC,           /* Ethi */
139       PANGO_SCRIPT_GEORGIAN,           /* Geor (Geon, Geoa) */
140       PANGO_SCRIPT_GOTHIC,             /* Goth */
141       PANGO_SCRIPT_GREEK,              /* Grek */
142       PANGO_SCRIPT_GUJARATI,           /* Gujr */
143       PANGO_SCRIPT_GURMUKHI,           /* Guru */
144       PANGO_SCRIPT_HAN,                /* Hani */
145       PANGO_SCRIPT_HANGUL,             /* Hang */
146       PANGO_SCRIPT_HEBREW,             /* Hebr */
147       PANGO_SCRIPT_HIRAGANA,           /* Hira */
148       PANGO_SCRIPT_KANNADA,            /* Knda */
149       PANGO_SCRIPT_KATAKANA,           /* Kana */
150       PANGO_SCRIPT_KHMER,              /* Khmr */
151       PANGO_SCRIPT_LAO,                /* Laoo */
152       PANGO_SCRIPT_LATIN,              /* Latn (Latf, Latg) */
153       PANGO_SCRIPT_MALAYALAM,          /* Mlym */
154       PANGO_SCRIPT_MONGOLIAN,          /* Mong */
155       PANGO_SCRIPT_MYANMAR,            /* Mymr */
156       PANGO_SCRIPT_OGHAM,              /* Ogam */
157       PANGO_SCRIPT_OLD_ITALIC,         /* Ital */
158       PANGO_SCRIPT_ORIYA,              /* Orya */
159       PANGO_SCRIPT_RUNIC,              /* Runr */
160       PANGO_SCRIPT_SINHALA,            /* Sinh */
161       PANGO_SCRIPT_SYRIAC,             /* Syrc (Syrj, Syrn, Syre) */
162       PANGO_SCRIPT_TAMIL,              /* Taml */
163       PANGO_SCRIPT_TELUGU,             /* Telu */
164       PANGO_SCRIPT_THAANA,             /* Thaa */
165       PANGO_SCRIPT_THAI,               /* Thai */
166       PANGO_SCRIPT_TIBETAN,            /* Tibt */
167       PANGO_SCRIPT_CANADIAN_ABORIGINAL, /* Cans */
168       PANGO_SCRIPT_YI,                 /* Yiii */
169       PANGO_SCRIPT_TAGALOG,            /* Tglg */
170       PANGO_SCRIPT_HANUNOO,            /* Hano */
171       PANGO_SCRIPT_BUHID,              /* Buhd */
172       PANGO_SCRIPT_TAGBANWA,           /* Tagb */
173 
174       /* Unicode-4.0 additions */
175       PANGO_SCRIPT_BRAILLE,            /* Brai */
176       PANGO_SCRIPT_CYPRIOT,            /* Cprt */
177       PANGO_SCRIPT_LIMBU,              /* Limb */
178       PANGO_SCRIPT_OSMANYA,            /* Osma */
179       PANGO_SCRIPT_SHAVIAN,            /* Shaw */
180       PANGO_SCRIPT_LINEAR_B,           /* Linb */
181       PANGO_SCRIPT_TAI_LE,             /* Tale */
182       PANGO_SCRIPT_UGARITIC,           /* Ugar */
183 
184       /* Unicode-4.1 additions */
185       PANGO_SCRIPT_NEW_TAI_LUE,        /* Talu */
186       PANGO_SCRIPT_BUGINESE,           /* Bugi */
187       PANGO_SCRIPT_GLAGOLITIC,         /* Glag */
188       PANGO_SCRIPT_TIFINAGH,           /* Tfng */
189       PANGO_SCRIPT_SYLOTI_NAGRI,       /* Sylo */
190       PANGO_SCRIPT_OLD_PERSIAN,        /* Xpeo */
191       PANGO_SCRIPT_KHAROSHTHI,         /* Khar */
192 
193       /* Unicode-5.0 additions */
194       PANGO_SCRIPT_UNKNOWN,            /* Zzzz */
195       PANGO_SCRIPT_BALINESE,           /* Bali */
196       PANGO_SCRIPT_CUNEIFORM,          /* Xsux */
197       PANGO_SCRIPT_PHOENICIAN,         /* Phnx */
198       PANGO_SCRIPT_PHAGS_PA,           /* Phag */
199       PANGO_SCRIPT_NKO,                /* Nkoo */
200 
201       /* Unicode-5.1 additions */
202       PANGO_SCRIPT_KAYAH_LI,           /* Kali */
203       PANGO_SCRIPT_LEPCHA,             /* Lepc */
204       PANGO_SCRIPT_REJANG,             /* Rjng */
205       PANGO_SCRIPT_SUNDANESE,          /* Sund */
206       PANGO_SCRIPT_SAURASHTRA,         /* Saur */
207       PANGO_SCRIPT_CHAM,               /* Cham */
208       PANGO_SCRIPT_OL_CHIKI,           /* Olck */
209       PANGO_SCRIPT_VAI,                /* Vaii */
210       PANGO_SCRIPT_CARIAN,             /* Cari */
211       PANGO_SCRIPT_LYCIAN,             /* Lyci */
212       PANGO_SCRIPT_LYDIAN,             /* Lydi */
213 
214       /* Unicode-6.0 additions */
215       PANGO_SCRIPT_BATAK,              /* Batk */
216       PANGO_SCRIPT_BRAHMI,             /* Brah */
217       PANGO_SCRIPT_MANDAIC,            /* Mand */
218 
219       /* Unicode-6.1 additions */
220       PANGO_SCRIPT_CHAKMA,             /* Cakm */
221       PANGO_SCRIPT_MEROITIC_CURSIVE,   /* Merc */
222       PANGO_SCRIPT_MEROITIC_HIEROGLYPHS,/* Mero */
223       PANGO_SCRIPT_MIAO,               /* Plrd */
224       PANGO_SCRIPT_SHARADA,            /* Shrd */
225       PANGO_SCRIPT_SORA_SOMPENG,       /* Sora */
226       PANGO_SCRIPT_TAKRI               /* Takr */
227 }
228 
229 pure PangoScript pango_script_for_unichar         (gunichar             ch);
230 
231 PangoScriptIter *pango_script_iter_new       (const(char)          *text,
232 					      int                  length);
233 
234 void             pango_script_iter_get_range (PangoScriptIter     *iter,
235                                               const(char)         **start,
236                                               const(char)         **end,
237                                               PangoScript         *script);
238 
239 gboolean         pango_script_iter_next      (PangoScriptIter     *iter);
240 
241 void             pango_script_iter_free      (PangoScriptIter     *iter);
242 
243 pure PangoLanguage *pango_script_get_sample_language (PangoScript    script);
244