1/***************************************************************************/
2/* */
3/* afscript.h */
4/* */
5/* Auto-fitter scripts (specification only). */
6/* */
7/* Copyright 2013-2018 by */
8/* David Turner, Robert Wilhelm, and Werner Lemberg. */
9/* */
10/* This file is part of the FreeType project, and may only be used, */
11/* modified, and distributed under the terms of the FreeType project */
12/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
13/* this file you indicate that you have read the license and */
14/* understand and accept it fully. */
15/* */
16/***************************************************************************/
17
18
19 /* The following part can be included multiple times. */
20 /* Define `SCRIPT' as needed. */
21
22
23 /* Add new scripts here. The first and second arguments are the */
24 /* script name in lowercase and uppercase, respectively, followed */
25 /* by a description string. Then comes the corresponding HarfBuzz */
26 /* script name tag, followed by a string of standard characters (to */
27 /* derive the standard width and height of stems). */
28 /* */
29 /* Note that fallback scripts only have a default style, thus we */
30 /* use `HB_SCRIPT_INVALID' as the HarfBuzz script name tag for */
31 /* them. */
32
33 SCRIPT( adlm, ADLM,
34 "Adlam",
35 HB_SCRIPT_ADLAM,
36 HINTING_BOTTOM_TO_TOP,
37 "\xF0\x9E\xA4\x8C \xF0\x9E\xA4\xAE" ) /* 𞤌 𞤮 */
38
39 SCRIPT( arab, ARAB,
40 "Arabic",
41 HB_SCRIPT_ARABIC,
42 HINTING_BOTTOM_TO_TOP,
43 "\xD9\x84 \xD8\xAD \xD9\x80" ) /* ل ح ـ */
44
45 SCRIPT( armn, ARMN,
46 "Armenian",
47 HB_SCRIPT_ARMENIAN,
48 HINTING_BOTTOM_TO_TOP,
49 "\xD5\xBD \xD5\x8D" ) /* ս Ս */
50
51 SCRIPT( avst, AVST,
52 "Avestan",
53 HB_SCRIPT_AVESTAN,
54 HINTING_BOTTOM_TO_TOP,
55 "\xF0\x90\xAC\x9A" ) /* 𐬚 */
56
57 SCRIPT( bamu, BAMU,
58 "Bamum",
59 HB_SCRIPT_BAMUM,
60 HINTING_BOTTOM_TO_TOP,
61 "\xEA\x9B\x81 \xEA\x9B\xAF" ) /* ꛁ ꛯ */
62
63 /* there are no simple forms for letters; we thus use two digit shapes */
64 SCRIPT( beng, BENG,
65 "Bengali",
66 HB_SCRIPT_BENGALI,
67 HINTING_TOP_TO_BOTTOM,
68 "\xE0\xA7\xA6 \xE0\xA7\xAA" ) /* ০ ৪ */
69
70 SCRIPT( buhd, BUHD,
71 "Buhid",
72 HB_SCRIPT_BUHID,
73 HINTING_BOTTOM_TO_TOP,
74 "\xE1\x9D\x8B \xE1\x9D\x8F" ) /* ᝋ ᝏ */
75
76 SCRIPT( cakm, CAKM,
77 "Chakma",
78 HB_SCRIPT_CHAKMA,
79 HINTING_BOTTOM_TO_TOP,
80 "\xF0\x91\x84\xA4 \xF0\x91\x84\x89 \xF0\x91\x84\x9B" ) /* 𑄤 𑄉 𑄛 */
81
82 SCRIPT( cans, CANS,
83 "Canadian Syllabics",
84 HB_SCRIPT_CANADIAN_SYLLABICS,
85 HINTING_BOTTOM_TO_TOP,
86 "\xE1\x91\x8C \xE1\x93\x9A" ) /* ᑌ ᓚ */
87
88 SCRIPT( cari, CARI,
89 "Carian",
90 HB_SCRIPT_CARIAN,
91 HINTING_BOTTOM_TO_TOP,
92 "\xF0\x90\x8A\xAB \xF0\x90\x8B\x89" ) /* 𐊫 𐋉 */
93
94 SCRIPT( cher, CHER,
95 "Cherokee",
96 HB_SCRIPT_CHEROKEE,
97 HINTING_BOTTOM_TO_TOP,
98 "\xE1\x8E\xA4 \xE1\x8F\x85 \xEA\xAE\x95" ) /* Ꭴ Ꮕ ꮕ */
99
100 SCRIPT( copt, COPT,
101 "Coptic",
102 HB_SCRIPT_COPTIC,
103 HINTING_BOTTOM_TO_TOP,
104 "\xE2\xB2\x9E \xE2\xB2\x9F" ) /* Ⲟ ⲟ */
105
106 SCRIPT( cprt, CPRT,
107 "Cypriot",
108 HB_SCRIPT_CYPRIOT,
109 HINTING_BOTTOM_TO_TOP,
110 "\xF0\x90\xA0\x85 \xF0\x90\xA0\xA3" ) /* 𐠅 𐠣 */
111
112 SCRIPT( cyrl, CYRL,
113 "Cyrillic",
114 HB_SCRIPT_CYRILLIC,
115 HINTING_BOTTOM_TO_TOP,
116 "\xD0\xBE \xD0\x9E" ) /* о О */
117
118 SCRIPT( deva, DEVA,
119 "Devanagari",
120 HB_SCRIPT_DEVANAGARI,
121 HINTING_TOP_TO_BOTTOM,
122 "\xE0\xA4\xA0 \xE0\xA4\xB5 \xE0\xA4\x9F" ) /* ठ व ट */
123
124 SCRIPT( dsrt, DSRT,
125 "Deseret",
126 HB_SCRIPT_DESERET,
127 HINTING_BOTTOM_TO_TOP,
128 "\xF0\x90\x90\x84 \xF0\x90\x90\xAC" ) /* 𐐄 𐐬 */
129
130 SCRIPT( ethi, ETHI,
131 "Ethiopic",
132 HB_SCRIPT_ETHIOPIC,
133 HINTING_BOTTOM_TO_TOP,
134 "\xE1\x8B\x90" ) /* ዐ */
135
136 SCRIPT( geor, GEOR,
137 "Georgian (Mkhedruli)",
138 HB_SCRIPT_GEORGIAN,
139 HINTING_BOTTOM_TO_TOP,
140 "\xE1\x83\x98 \xE1\x83\x94 \xE1\x83\x90 \xE1\xB2\xBF" ) /* ი ე ა Ი */
141
142 SCRIPT( geok, GEOK,
143 "Georgian (Khutsuri)",
144 HB_SCRIPT_INVALID,
145 HINTING_BOTTOM_TO_TOP,
146 "\xE1\x82\xB6 \xE1\x82\xB1 \xE2\xB4\x99" ) /* Ⴖ Ⴑ ⴙ */
147
148 SCRIPT( glag, GLAG,
149 "Glagolitic",
150 HB_SCRIPT_GLAGOLITIC,
151 HINTING_BOTTOM_TO_TOP,
152 "\xE2\xB0\x95 \xE2\xB1\x85" ) /* Ⱅ ⱅ */
153
154 SCRIPT( goth, GOTH,
155 "Gothic",
156 HB_SCRIPT_GOTHIC,
157 HINTING_TOP_TO_BOTTOM,
158 "\xF0\x90\x8C\xB4 \xF0\x90\x8C\xBE \xF0\x90\x8D\x83" ) /* 𐌴 𐌾 𐍃 */
159
160 SCRIPT( grek, GREK,
161 "Greek",
162 HB_SCRIPT_GREEK,
163 HINTING_BOTTOM_TO_TOP,
164 "\xCE\xBF \xCE\x9F" ) /* ο Ο */
165
166 SCRIPT( gujr, GUJR,
167 "Gujarati",
168 HB_SCRIPT_GUJARATI,
169 HINTING_BOTTOM_TO_TOP,
170 "\xE0\xAA\x9F \xE0\xAB\xA6" ) /* ટ ૦ */
171
172 SCRIPT( guru, GURU,
173 "Gurmukhi",
174 HB_SCRIPT_GURMUKHI,
175 HINTING_TOP_TO_BOTTOM,
176 "\xE0\xA8\xA0 \xE0\xA8\xB0 \xE0\xA9\xA6" ) /* ਠ ਰ ੦ */
177
178 SCRIPT( hebr, HEBR,
179 "Hebrew",
180 HB_SCRIPT_HEBREW,
181 HINTING_BOTTOM_TO_TOP,
182 "\xD7\x9D" ) /* ם */
183
184 SCRIPT( kali, KALI,
185 "Kayah Li",
186 HB_SCRIPT_KAYAH_LI,
187 HINTING_BOTTOM_TO_TOP,
188 "\xEA\xA4\x8D \xEA\xA4\x80" ) /* ꤍ ꤀ */
189
190 /* only digit zero has a simple shape in the Khmer script */
191 SCRIPT( khmr, KHMR,
192 "Khmer",
193 HB_SCRIPT_KHMER,
194 HINTING_BOTTOM_TO_TOP,
195 "\xE1\x9F\xA0" ) /* ០ */
196
197 SCRIPT( khms, KHMS,
198 "Khmer Symbols",
199 HB_SCRIPT_INVALID,
200 HINTING_BOTTOM_TO_TOP,
201 "\xE1\xA7\xA1 \xE1\xA7\xAA" ) /* ᧡ ᧪ */
202
203 SCRIPT( knda, KNDA,
204 "Kannada",
205 HB_SCRIPT_KANNADA,
206 HINTING_BOTTOM_TO_TOP,
207 "\xE0\xB3\xA6 \xE0\xB2\xAC" ) /* ೦ ಬ */
208
209 /* only digit zero has a simple shape in the Lao script */
210 SCRIPT( lao, LAO,
211 "Lao",
212 HB_SCRIPT_LAO,
213 HINTING_BOTTOM_TO_TOP,
214 "\xE0\xBB\x90" ) /* ໐ */
215
216 SCRIPT( latn, LATN,
217 "Latin",
218 HB_SCRIPT_LATIN,
219 HINTING_BOTTOM_TO_TOP,
220 "o O 0" )
221
222 SCRIPT( latb, LATB,
223 "Latin Subscript Fallback",
224 HB_SCRIPT_INVALID,
225 HINTING_BOTTOM_TO_TOP,
226 "\xE2\x82\x92 \xE2\x82\x80" ) /* ₒ ₀ */
227
228 SCRIPT( latp, LATP,
229 "Latin Superscript Fallback",
230 HB_SCRIPT_INVALID,
231 HINTING_BOTTOM_TO_TOP,
232 "\xE1\xB5\x92 \xE1\xB4\xBC \xE2\x81\xB0" ) /* ᵒ ᴼ ⁰ */
233
234 SCRIPT( lisu, LISU,
235 "Lisu",
236 HB_SCRIPT_LISU,
237 HINTING_BOTTOM_TO_TOP,
238 "\xEA\x93\xB3" ) /* ꓳ */
239
240 SCRIPT( mlym, MLYM,
241 "Malayalam",
242 HB_SCRIPT_MALAYALAM,
243 HINTING_BOTTOM_TO_TOP,
244 "\xE0\xB4\xA0 \xE0\xB4\xB1" ) /* ഠ റ */
245
246 SCRIPT( mymr, MYMR,
247 "Myanmar",
248 HB_SCRIPT_MYANMAR,
249 HINTING_BOTTOM_TO_TOP,
250 "\xE1\x80\x9D \xE1\x80\x84 \xE1\x80\x82" ) /* ဝ င ဂ */
251
252 SCRIPT( nkoo, NKOO,
253 "N'Ko",
254 HB_SCRIPT_NKO,
255 HINTING_BOTTOM_TO_TOP,
256 "\xDF\x8B \xDF\x80" ) /* ߋ ߀ */
257
258 SCRIPT( none, NONE,
259 "no script",
260 HB_SCRIPT_INVALID,
261 HINTING_BOTTOM_TO_TOP,
262 "" )
263
264 SCRIPT( olck, OLCK,
265 "Ol Chiki",
266 HB_SCRIPT_OL_CHIKI,
267 HINTING_BOTTOM_TO_TOP,
268 "\xE1\xB1\x9B" ) /* ᱛ */
269
270 SCRIPT( orkh, ORKH,
271 "Old Turkic",
272 HB_SCRIPT_OLD_TURKIC,
273 HINTING_BOTTOM_TO_TOP,
274 "\xF0\x90\xB0\x97" ) /* 𐰗 */
275
276 SCRIPT( osge, OSGE,
277 "Osage",
278 HB_SCRIPT_OSAGE,
279 HINTING_BOTTOM_TO_TOP,
280 "\xF0\x90\x93\x82 \xF0\x90\x93\xAA" ) /* 𐓂 𐓪 */
281
282 SCRIPT( osma, OSMA,
283 "Osmanya",
284 HB_SCRIPT_OSMANYA,
285 HINTING_BOTTOM_TO_TOP,
286 "\xF0\x90\x92\x86 \xF0\x90\x92\xA0" ) /* 𐒆 𐒠 */
287
288 SCRIPT( saur, SAUR,
289 "Saurashtra",
290 HB_SCRIPT_SAURASHTRA,
291 HINTING_BOTTOM_TO_TOP,
292 "\xEA\xA2\x9D \xEA\xA3\x90" ) /* ꢝ ꣐ */
293
294 SCRIPT( shaw, SHAW,
295 "Shavian",
296 HB_SCRIPT_SHAVIAN,
297 HINTING_BOTTOM_TO_TOP,
298 "\xF0\x90\x91\xB4" ) /* 𐑴 */
299
300 SCRIPT( sinh, SINH,
301 "Sinhala",
302 HB_SCRIPT_SINHALA,
303 HINTING_BOTTOM_TO_TOP,
304 "\xE0\xB6\xA7" ) /* ට */
305
306 /* only digit zero has a simple (round) shape in the Sundanese script */
307 SCRIPT( sund, SUND,
308 "Sundanese",
309 HB_SCRIPT_SUNDANESE,
310 HINTING_BOTTOM_TO_TOP,
311 "\xE1\xAE\xB0" ) /* ᮰ */
312
313 /* only digit zero has a simple (round) shape in the Tamil script */
314 SCRIPT( taml, TAML,
315 "Tamil",
316 HB_SCRIPT_TAMIL,
317 HINTING_BOTTOM_TO_TOP,
318 "\xE0\xAF\xA6" ) /* ௦ */
319
320 SCRIPT( tavt, TAVT,
321 "Tai Viet",
322 HB_SCRIPT_TAI_VIET,
323 HINTING_BOTTOM_TO_TOP,
324 "\xEA\xAA\x92 \xEA\xAA\xAB" ) /* ꪒ ꪫ */
325
326 /* there are no simple forms for letters; we thus use two digit shapes */
327 SCRIPT( telu, TELU,
328 "Telugu",
329 HB_SCRIPT_TELUGU,
330 HINTING_BOTTOM_TO_TOP,
331 "\xE0\xB1\xA6 \xE0\xB1\xA7" ) /* ౦ ౧ */
332
333 SCRIPT( tfng, TFNG,
334 "Tifinagh",
335 HB_SCRIPT_TIFINAGH,
336 HINTING_BOTTOM_TO_TOP,
337 "\xE2\xB5\x94" ) /* ⵔ */
338
339 SCRIPT( thai, THAI,
340 "Thai",
341 HB_SCRIPT_THAI,
342 HINTING_BOTTOM_TO_TOP,
343 "\xE0\xB8\xB2 \xE0\xB9\x85 \xE0\xB9\x90" ) /* า ๅ ๐ */
344
345 SCRIPT( vaii, VAII,
346 "Vai",
347 HB_SCRIPT_VAI,
348 HINTING_BOTTOM_TO_TOP,
349 "\xEA\x98\x93 \xEA\x96\x9C \xEA\x96\xB4" ) /* ꘓ ꖜ ꖴ */
350
351#ifdef AF_CONFIG_OPTION_INDIC
352
353 SCRIPT( limb, LIMB,
354 "Limbu",
355 HB_SCRIPT_LIMBU,
356 HINTING_BOTTOM_TO_TOP,
357 "o" ) /* XXX */
358
359 SCRIPT( orya, ORYA,
360 "Oriya",
361 HB_SCRIPT_ORIYA,
362 HINTING_BOTTOM_TO_TOP,
363 "o" ) /* XXX */
364
365 SCRIPT( sylo, SYLO,
366 "Syloti Nagri",
367 HB_SCRIPT_SYLOTI_NAGRI,
368 HINTING_BOTTOM_TO_TOP,
369 "o" ) /* XXX */
370
371 SCRIPT( tibt, TIBT,
372 "Tibetan",
373 HB_SCRIPT_TIBETAN,
374 HINTING_BOTTOM_TO_TOP,
375 "o" ) /* XXX */
376
377#endif /* AF_CONFIG_OPTION_INDIC */
378
379#ifdef AF_CONFIG_OPTION_CJK
380
381 SCRIPT( hani, HANI,
382 "CJKV ideographs",
383 HB_SCRIPT_HAN,
384 HINTING_BOTTOM_TO_TOP,
385 "\xE7\x94\xB0 \xE5\x9B\x97" ) /* 田 囗 */
386
387#endif /* AF_CONFIG_OPTION_CJK */
388
389
390/* END */
391