1/****************************************************************************
2 *
3 * afscript.h
4 *
5 * Auto-fitter scripts (specification only).
6 *
7 * Copyright (C) 2013-2023 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( medf, MEDF,
247 "Medefaidrin",
248 HB_SCRIPT_MEDEFAIDRIN,
249 HINTING_BOTTOM_TO_TOP,
250 "\xF0\x96\xB9\xA1 \xF0\x96\xB9\x9B \xF0\x96\xB9\xAF" ) /* 𖹡 𖹛 𖹯 */
251
252 SCRIPT( mong, MONG,
253 "Mongolian",
254 HB_SCRIPT_MONGOLIAN,
255 HINTING_TOP_TO_BOTTOM,
256 "\xE1\xA1\x82 \xE1\xA0\xAA" ) /* ᡂ ᠪ */
257
258 SCRIPT( mymr, MYMR,
259 "Myanmar",
260 HB_SCRIPT_MYANMAR,
261 HINTING_BOTTOM_TO_TOP,
262 "\xE1\x80\x9D \xE1\x80\x84 \xE1\x80\x82" ) /* ဝ င ဂ */
263
264 SCRIPT( nkoo, NKOO,
265 "N'Ko",
266 HB_SCRIPT_NKO,
267 HINTING_BOTTOM_TO_TOP,
268 "\xDF\x8B \xDF\x80" ) /* ߋ ߀ */
269
270 SCRIPT( none, NONE,
271 "no script",
272 HB_SCRIPT_INVALID,
273 HINTING_BOTTOM_TO_TOP,
274 "" )
275
276 SCRIPT( olck, OLCK,
277 "Ol Chiki",
278 HB_SCRIPT_OL_CHIKI,
279 HINTING_BOTTOM_TO_TOP,
280 "\xE1\xB1\x9B" ) /* ᱛ */
281
282 SCRIPT( orkh, ORKH,
283 "Old Turkic",
284 HB_SCRIPT_OLD_TURKIC,
285 HINTING_BOTTOM_TO_TOP,
286 "\xF0\x90\xB0\x97" ) /* 𐰗 */
287
288 SCRIPT( osge, OSGE,
289 "Osage",
290 HB_SCRIPT_OSAGE,
291 HINTING_BOTTOM_TO_TOP,
292 "\xF0\x90\x93\x82 \xF0\x90\x93\xAA" ) /* 𐓂 𐓪 */
293
294 SCRIPT( osma, OSMA,
295 "Osmanya",
296 HB_SCRIPT_OSMANYA,
297 HINTING_BOTTOM_TO_TOP,
298 "\xF0\x90\x92\x86 \xF0\x90\x92\xA0" ) /* 𐒆 𐒠 */
299
300 SCRIPT( rohg, ROHG,
301 "Hanifi Rohingya",
302 HB_SCRIPT_HANIFI_ROHINGYA,
303 HINTING_BOTTOM_TO_TOP,
304 "\xF0\x90\xB4\xB0" ) /* 𐴰 */
305
306 SCRIPT( saur, SAUR,
307 "Saurashtra",
308 HB_SCRIPT_SAURASHTRA,
309 HINTING_BOTTOM_TO_TOP,
310 "\xEA\xA2\x9D \xEA\xA3\x90" ) /* ꢝ ꣐ */
311
312 SCRIPT( shaw, SHAW,
313 "Shavian",
314 HB_SCRIPT_SHAVIAN,
315 HINTING_BOTTOM_TO_TOP,
316 "\xF0\x90\x91\xB4" ) /* 𐑴 */
317
318 SCRIPT( sinh, SINH,
319 "Sinhala",
320 HB_SCRIPT_SINHALA,
321 HINTING_BOTTOM_TO_TOP,
322 "\xE0\xB6\xA7" ) /* ට */
323
324 /* only digit zero has a simple (round) shape in the Sundanese script */
325 SCRIPT( sund, SUND,
326 "Sundanese",
327 HB_SCRIPT_SUNDANESE,
328 HINTING_BOTTOM_TO_TOP,
329 "\xE1\xAE\xB0" ) /* ᮰ */
330
331 /* only digit zero has a simple (round) shape in the Tamil script */
332 SCRIPT( taml, TAML,
333 "Tamil",
334 HB_SCRIPT_TAMIL,
335 HINTING_BOTTOM_TO_TOP,
336 "\xE0\xAF\xA6" ) /* ௦ */
337
338 SCRIPT( tavt, TAVT,
339 "Tai Viet",
340 HB_SCRIPT_TAI_VIET,
341 HINTING_BOTTOM_TO_TOP,
342 "\xEA\xAA\x92 \xEA\xAA\xAB" ) /* ꪒ ꪫ */
343
344 /* there are no simple forms for letters; we thus use two digit shapes */
345 SCRIPT( telu, TELU,
346 "Telugu",
347 HB_SCRIPT_TELUGU,
348 HINTING_BOTTOM_TO_TOP,
349 "\xE0\xB1\xA6 \xE0\xB1\xA7" ) /* ౦ ౧ */
350
351 SCRIPT( tfng, TFNG,
352 "Tifinagh",
353 HB_SCRIPT_TIFINAGH,
354 HINTING_BOTTOM_TO_TOP,
355 "\xE2\xB5\x94" ) /* ⵔ */
356
357 SCRIPT( thai, THAI,
358 "Thai",
359 HB_SCRIPT_THAI,
360 HINTING_BOTTOM_TO_TOP,
361 "\xE0\xB8\xB2 \xE0\xB9\x85 \xE0\xB9\x90" ) /* า ๅ ๐ */
362
363 SCRIPT( vaii, VAII,
364 "Vai",
365 HB_SCRIPT_VAI,
366 HINTING_BOTTOM_TO_TOP,
367 "\xEA\x98\x93 \xEA\x96\x9C \xEA\x96\xB4" ) /* ꘓ ꖜ ꖴ */
368
369#ifdef AF_CONFIG_OPTION_INDIC
370
371 SCRIPT( limb, LIMB,
372 "Limbu",
373 HB_SCRIPT_LIMBU,
374 HINTING_BOTTOM_TO_TOP,
375 "o" ) /* XXX */
376
377 SCRIPT( orya, ORYA,
378 "Oriya",
379 HB_SCRIPT_ORIYA,
380 HINTING_BOTTOM_TO_TOP,
381 "o" ) /* XXX */
382
383 SCRIPT( sylo, SYLO,
384 "Syloti Nagri",
385 HB_SCRIPT_SYLOTI_NAGRI,
386 HINTING_BOTTOM_TO_TOP,
387 "o" ) /* XXX */
388
389 SCRIPT( tibt, TIBT,
390 "Tibetan",
391 HB_SCRIPT_TIBETAN,
392 HINTING_BOTTOM_TO_TOP,
393 "o" ) /* XXX */
394
395#endif /* AF_CONFIG_OPTION_INDIC */
396
397#ifdef AF_CONFIG_OPTION_CJK
398
399 SCRIPT( hani, HANI,
400 "CJKV ideographs",
401 HB_SCRIPT_HAN,
402 HINTING_BOTTOM_TO_TOP,
403 "\xE7\x94\xB0 \xE5\x9B\x97" ) /* 田 囗 */
404
405#endif /* AF_CONFIG_OPTION_CJK */
406
407
408/* END */
409