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 | |