afranges.c (37170B)
1 /**************************************************************************** 2 * 3 * afranges.c 4 * 5 * Auto-fitter Unicode script ranges (body). 6 * 7 * Copyright (C) 2013-2025 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 #include "afranges.h" 20 21 /* 22 * The algorithm for assigning properties and styles to the `glyph_styles' 23 * array is as follows (cf. the implementation in 24 * `af_face_globals_compute_style_coverage'). 25 * 26 * Walk over all scripts (as listed in `afscript.h'). 27 * 28 * For a given script, walk over all styles (as listed in `afstyles.h'). 29 * The order of styles is important and should be as follows. 30 * 31 * - First come styles based on OpenType features (small caps, for 32 * example). Since features rely on glyph indices, thus completely 33 * bypassing character codes, no properties are assigned. 34 * 35 * - Next comes the default style, using the character ranges as defined 36 * below. This also assigns properties. 37 * 38 * Note that there also exist fallback scripts, mainly covering 39 * superscript and subscript glyphs of a script that are not present as 40 * OpenType features. Fallback scripts are defined below, also 41 * assigning properties; they are applied after the corresponding 42 * script. 43 * 44 */ 45 46 47 /* XXX Check base character ranges again: */ 48 /* Right now, they are quickly derived by visual inspection. */ 49 /* I can imagine that fine-tuning is necessary. */ 50 51 /* for the auto-hinter, a `non-base character' is something that should */ 52 /* not be affected by blue zones, regardless of whether this is a */ 53 /* spacing or no-spacing glyph */ 54 55 /* the `af_xxxx_nonbase_uniranges' ranges must be strict subsets */ 56 /* of the corresponding `af_xxxx_uniranges' ranges */ 57 58 59 const AF_Script_UniRangeRec af_adlm_uniranges[] = 60 { 61 AF_UNIRANGE_REC( 0x1E900, 0x1E95F ), /* Adlam */ 62 AF_UNIRANGE_REC( 0, 0 ) 63 }; 64 65 const AF_Script_UniRangeRec af_adlm_nonbase_uniranges[] = 66 { 67 AF_UNIRANGE_REC( 0x1D944, 0x1E94A ), 68 AF_UNIRANGE_REC( 0, 0 ) 69 }; 70 71 72 const AF_Script_UniRangeRec af_arab_uniranges[] = 73 { 74 AF_UNIRANGE_REC( 0x0600, 0x06FF ), /* Arabic */ 75 AF_UNIRANGE_REC( 0x0750, 0x07FF ), /* Arabic Supplement */ 76 AF_UNIRANGE_REC( 0x0870, 0x089F ), /* Arabic Extended-B */ 77 AF_UNIRANGE_REC( 0x08A0, 0x08FF ), /* Arabic Extended-A */ 78 AF_UNIRANGE_REC( 0xFB50, 0xFDFF ), /* Arabic Presentation Forms-A */ 79 AF_UNIRANGE_REC( 0xFE70, 0xFEFF ), /* Arabic Presentation Forms-B */ 80 AF_UNIRANGE_REC( 0x10EC0, 0x10EFF ), /* Arabic Extended-C */ 81 AF_UNIRANGE_REC( 0x1EE00, 0x1EEFF ), /* Arabic Mathematical Alphabetic Symbols */ 82 AF_UNIRANGE_REC( 0, 0 ) 83 }; 84 85 const AF_Script_UniRangeRec af_arab_nonbase_uniranges[] = 86 { 87 AF_UNIRANGE_REC( 0x0600, 0x0605 ), 88 AF_UNIRANGE_REC( 0x0610, 0x061A ), 89 AF_UNIRANGE_REC( 0x064B, 0x065F ), 90 AF_UNIRANGE_REC( 0x0670, 0x0670 ), 91 AF_UNIRANGE_REC( 0x06D6, 0x06DC ), 92 AF_UNIRANGE_REC( 0x06DF, 0x06E4 ), 93 AF_UNIRANGE_REC( 0x06E7, 0x06E8 ), 94 AF_UNIRANGE_REC( 0x06EA, 0x06ED ), 95 AF_UNIRANGE_REC( 0x0897, 0x089F ), 96 AF_UNIRANGE_REC( 0x08CA, 0x08E1 ), 97 AF_UNIRANGE_REC( 0x08E3, 0x08FF ), 98 AF_UNIRANGE_REC( 0xFBB2, 0xFBC1 ), 99 AF_UNIRANGE_REC( 0xFE70, 0xFE70 ), 100 AF_UNIRANGE_REC( 0xFE72, 0xFE72 ), 101 AF_UNIRANGE_REC( 0xFE74, 0xFE74 ), 102 AF_UNIRANGE_REC( 0xFE76, 0xFE76 ), 103 AF_UNIRANGE_REC( 0xFE78, 0xFE78 ), 104 AF_UNIRANGE_REC( 0xFE7A, 0xFE7A ), 105 AF_UNIRANGE_REC( 0xFE7C, 0xFE7C ), 106 AF_UNIRANGE_REC( 0xFE7E, 0xFE7E ), 107 AF_UNIRANGE_REC( 0x10EFD, 0x10EFF ), 108 AF_UNIRANGE_REC( 0, 0 ) 109 }; 110 111 112 const AF_Script_UniRangeRec af_armn_uniranges[] = 113 { 114 AF_UNIRANGE_REC( 0x0530, 0x058F ), /* Armenian */ 115 AF_UNIRANGE_REC( 0xFB13, 0xFB17 ), /* Alphab. Present. Forms (Armenian) */ 116 AF_UNIRANGE_REC( 0, 0 ) 117 }; 118 119 const AF_Script_UniRangeRec af_armn_nonbase_uniranges[] = 120 { 121 AF_UNIRANGE_REC( 0x0559, 0x055F ), 122 AF_UNIRANGE_REC( 0, 0 ) 123 }; 124 125 126 const AF_Script_UniRangeRec af_avst_uniranges[] = 127 { 128 AF_UNIRANGE_REC( 0x10B00, 0x10B3F ), /* Avestan */ 129 AF_UNIRANGE_REC( 0, 0 ) 130 }; 131 132 const AF_Script_UniRangeRec af_avst_nonbase_uniranges[] = 133 { 134 AF_UNIRANGE_REC( 0x10B39, 0x10B3F ), 135 AF_UNIRANGE_REC( 0, 0 ) 136 }; 137 138 139 const AF_Script_UniRangeRec af_bamu_uniranges[] = 140 { 141 AF_UNIRANGE_REC( 0xA6A0, 0xA6FF ), /* Bamum */ 142 #if 0 143 /* The characters in the Bamum supplement are pictograms, */ 144 /* not (directly) related to the syllabic Bamum script */ 145 AF_UNIRANGE_REC( 0x16800, 0x16A3F ), /* Bamum Supplement */ 146 #endif 147 AF_UNIRANGE_REC( 0, 0 ) 148 }; 149 150 const AF_Script_UniRangeRec af_bamu_nonbase_uniranges[] = 151 { 152 AF_UNIRANGE_REC( 0xA6F0, 0xA6F1 ), 153 AF_UNIRANGE_REC( 0, 0 ) 154 }; 155 156 157 const AF_Script_UniRangeRec af_beng_uniranges[] = 158 { 159 AF_UNIRANGE_REC( 0x0980, 0x09FF ), /* Bengali */ 160 AF_UNIRANGE_REC( 0, 0 ) 161 }; 162 163 const AF_Script_UniRangeRec af_beng_nonbase_uniranges[] = 164 { 165 AF_UNIRANGE_REC( 0x0981, 0x0981 ), 166 AF_UNIRANGE_REC( 0x09BC, 0x09BC ), 167 AF_UNIRANGE_REC( 0x09C1, 0x09C4 ), 168 AF_UNIRANGE_REC( 0x09CD, 0x09CD ), 169 AF_UNIRANGE_REC( 0x09E2, 0x09E3 ), 170 AF_UNIRANGE_REC( 0x09FE, 0x09FE ), 171 AF_UNIRANGE_REC( 0, 0 ) 172 }; 173 174 175 const AF_Script_UniRangeRec af_buhd_uniranges[] = 176 { 177 AF_UNIRANGE_REC( 0x1740, 0x175F ), /* Buhid */ 178 AF_UNIRANGE_REC( 0, 0 ) 179 }; 180 181 const AF_Script_UniRangeRec af_buhd_nonbase_uniranges[] = 182 { 183 AF_UNIRANGE_REC( 0x1752, 0x1753 ), 184 AF_UNIRANGE_REC( 0, 0 ) 185 }; 186 187 188 const AF_Script_UniRangeRec af_cakm_uniranges[] = 189 { 190 AF_UNIRANGE_REC( 0x11100, 0x1114F ), /* Chakma */ 191 AF_UNIRANGE_REC( 0, 0 ) 192 }; 193 194 const AF_Script_UniRangeRec af_cakm_nonbase_uniranges[] = 195 { 196 AF_UNIRANGE_REC( 0x11100, 0x11102 ), 197 AF_UNIRANGE_REC( 0x11127, 0x11134 ), 198 AF_UNIRANGE_REC( 0x11146, 0x11146 ), 199 AF_UNIRANGE_REC( 0, 0 ) 200 }; 201 202 203 const AF_Script_UniRangeRec af_cans_uniranges[] = 204 { 205 AF_UNIRANGE_REC( 0x1400, 0x167F ), /* Unified Canadian Aboriginal Syllabics */ 206 AF_UNIRANGE_REC( 0x18B0, 0x18FF ), /* Unified Canadian Aboriginal Syllabics Extended */ 207 AF_UNIRANGE_REC( 0x11AB0, 0x11ABF ), /* Unified Canadian Aboriginal Syllabics Extended-A */ 208 AF_UNIRANGE_REC( 0, 0 ) 209 }; 210 211 const AF_Script_UniRangeRec af_cans_nonbase_uniranges[] = 212 { 213 AF_UNIRANGE_REC( 0, 0 ) 214 }; 215 216 217 const AF_Script_UniRangeRec af_cari_uniranges[] = 218 { 219 AF_UNIRANGE_REC( 0x102A0, 0x102DF ), /* Carian */ 220 AF_UNIRANGE_REC( 0, 0 ) 221 }; 222 223 const AF_Script_UniRangeRec af_cari_nonbase_uniranges[] = 224 { 225 AF_UNIRANGE_REC( 0, 0 ) 226 }; 227 228 229 const AF_Script_UniRangeRec af_cher_uniranges[] = 230 { 231 AF_UNIRANGE_REC( 0x13A0, 0x13FF ), /* Cherokee */ 232 AF_UNIRANGE_REC( 0xAB70, 0xABBF ), /* Cherokee Supplement */ 233 AF_UNIRANGE_REC( 0, 0 ) 234 }; 235 236 const AF_Script_UniRangeRec af_cher_nonbase_uniranges[] = 237 { 238 AF_UNIRANGE_REC( 0, 0 ) 239 }; 240 241 242 const AF_Script_UniRangeRec af_copt_uniranges[] = 243 { 244 AF_UNIRANGE_REC( 0x2C80, 0x2CFF ), /* Coptic */ 245 AF_UNIRANGE_REC( 0, 0 ) 246 }; 247 248 const AF_Script_UniRangeRec af_copt_nonbase_uniranges[] = 249 { 250 AF_UNIRANGE_REC( 0x2CEF, 0x2CF1 ), 251 AF_UNIRANGE_REC( 0, 0 ) 252 }; 253 254 255 const AF_Script_UniRangeRec af_cprt_uniranges[] = 256 { 257 AF_UNIRANGE_REC( 0x10800, 0x1083F ), /* Cypriot */ 258 AF_UNIRANGE_REC( 0, 0 ) 259 }; 260 261 const AF_Script_UniRangeRec af_cprt_nonbase_uniranges[] = 262 { 263 AF_UNIRANGE_REC( 0, 0 ) 264 }; 265 266 267 /* TODO: Split off data for new 'cyrb' (subscript) and 'cyrp' */ 268 /* (superscript) groups (mainly from the Extended-D block), */ 269 /* in analogy to 'latb' and 'latp'? */ 270 const AF_Script_UniRangeRec af_cyrl_uniranges[] = 271 { 272 AF_UNIRANGE_REC( 0x0400, 0x04FF ), /* Cyrillic */ 273 AF_UNIRANGE_REC( 0x0500, 0x052F ), /* Cyrillic Supplement */ 274 AF_UNIRANGE_REC( 0x2DE0, 0x2DFF ), /* Cyrillic Extended-A */ 275 AF_UNIRANGE_REC( 0xA640, 0xA69F ), /* Cyrillic Extended-B */ 276 AF_UNIRANGE_REC( 0x1C80, 0x1C8F ), /* Cyrillic Extended-C */ 277 AF_UNIRANGE_REC( 0x1E030, 0x1E08F ), /* Cyrillic Extended-D */ 278 AF_UNIRANGE_REC( 0, 0 ) 279 }; 280 281 const AF_Script_UniRangeRec af_cyrl_nonbase_uniranges[] = 282 { 283 AF_UNIRANGE_REC( 0x0483, 0x0489 ), 284 AF_UNIRANGE_REC( 0x2DE0, 0x2DFF ), 285 AF_UNIRANGE_REC( 0xA66F, 0xA67F ), 286 AF_UNIRANGE_REC( 0xA69E, 0xA69F ), 287 AF_UNIRANGE_REC( 0, 0 ) 288 }; 289 290 291 /* There are some characters in the Devanagari Unicode block that are */ 292 /* generic to Indic scripts; we omit them so that their presence doesn't */ 293 /* trigger Devanagari. */ 294 295 const AF_Script_UniRangeRec af_deva_uniranges[] = 296 { 297 AF_UNIRANGE_REC( 0x0900, 0x093B ), /* Devanagari */ 298 /* omitting U+093C nukta */ 299 AF_UNIRANGE_REC( 0x093D, 0x0950 ), /* ... continued */ 300 /* omitting U+0951 udatta, U+0952 anudatta */ 301 AF_UNIRANGE_REC( 0x0953, 0x0963 ), /* ... continued */ 302 /* omitting U+0964 danda, U+0965 double danda */ 303 AF_UNIRANGE_REC( 0x0966, 0x097F ), /* ... continued */ 304 AF_UNIRANGE_REC( 0x20B9, 0x20B9 ), /* (new) Rupee sign */ 305 AF_UNIRANGE_REC( 0xA8E0, 0xA8FF ), /* Devanagari Extended */ 306 AF_UNIRANGE_REC( 0x11B00, 0x11B5F ), /* Devanagari Extended-A */ 307 AF_UNIRANGE_REC( 0, 0 ) 308 }; 309 310 const AF_Script_UniRangeRec af_deva_nonbase_uniranges[] = 311 { 312 AF_UNIRANGE_REC( 0x0900, 0x0902 ), 313 AF_UNIRANGE_REC( 0x093A, 0x093A ), 314 AF_UNIRANGE_REC( 0x0941, 0x0948 ), 315 AF_UNIRANGE_REC( 0x094D, 0x094D ), 316 AF_UNIRANGE_REC( 0x0953, 0x0957 ), 317 AF_UNIRANGE_REC( 0x0962, 0x0963 ), 318 AF_UNIRANGE_REC( 0xA8E0, 0xA8F1 ), 319 AF_UNIRANGE_REC( 0xA8FF, 0xA8FF ), 320 AF_UNIRANGE_REC( 0, 0 ) 321 }; 322 323 324 const AF_Script_UniRangeRec af_dsrt_uniranges[] = 325 { 326 AF_UNIRANGE_REC( 0x10400, 0x1044F ), /* Deseret */ 327 AF_UNIRANGE_REC( 0, 0 ) 328 }; 329 330 const AF_Script_UniRangeRec af_dsrt_nonbase_uniranges[] = 331 { 332 AF_UNIRANGE_REC( 0, 0 ) 333 }; 334 335 336 const AF_Script_UniRangeRec af_ethi_uniranges[] = 337 { 338 AF_UNIRANGE_REC( 0x1200, 0x137F ), /* Ethiopic */ 339 AF_UNIRANGE_REC( 0x1380, 0x139F ), /* Ethiopic Supplement */ 340 AF_UNIRANGE_REC( 0x2D80, 0x2DDF ), /* Ethiopic Extended */ 341 AF_UNIRANGE_REC( 0xAB00, 0xAB2F ), /* Ethiopic Extended-A */ 342 AF_UNIRANGE_REC( 0x1E7E0, 0x1E7FF ), /* Ethiopic Extended-B */ 343 AF_UNIRANGE_REC( 0, 0 ) 344 }; 345 346 const AF_Script_UniRangeRec af_ethi_nonbase_uniranges[] = 347 { 348 AF_UNIRANGE_REC( 0x135D, 0x135F ), 349 AF_UNIRANGE_REC( 0, 0 ) 350 }; 351 352 353 const AF_Script_UniRangeRec af_geor_uniranges[] = 354 { 355 AF_UNIRANGE_REC( 0x10D0, 0x10FF ), /* Georgian (Mkhedruli) */ 356 AF_UNIRANGE_REC( 0x1C90, 0x1CBF ), /* Georgian Extended (Mtavruli) */ 357 AF_UNIRANGE_REC( 0, 0 ) 358 }; 359 360 const AF_Script_UniRangeRec af_geor_nonbase_uniranges[] = 361 { 362 AF_UNIRANGE_REC( 0, 0 ) 363 }; 364 365 366 const AF_Script_UniRangeRec af_geok_uniranges[] = 367 { 368 /* Khutsuri */ 369 AF_UNIRANGE_REC( 0x10A0, 0x10CD ), /* Georgian (Asomtavruli) */ 370 AF_UNIRANGE_REC( 0x2D00, 0x2D2D ), /* Georgian Supplement (Nuskhuri) */ 371 AF_UNIRANGE_REC( 0, 0 ) 372 }; 373 374 const AF_Script_UniRangeRec af_geok_nonbase_uniranges[] = 375 { 376 AF_UNIRANGE_REC( 0, 0 ) 377 }; 378 379 380 const AF_Script_UniRangeRec af_glag_uniranges[] = 381 { 382 AF_UNIRANGE_REC( 0x2C00, 0x2C5F ), /* Glagolitic */ 383 AF_UNIRANGE_REC( 0x1E000, 0x1E02F ), /* Glagolitic Supplement */ 384 AF_UNIRANGE_REC( 0, 0 ) 385 }; 386 387 const AF_Script_UniRangeRec af_glag_nonbase_uniranges[] = 388 { 389 AF_UNIRANGE_REC( 0x1E000, 0x1E02F ), 390 AF_UNIRANGE_REC( 0, 0 ) 391 }; 392 393 394 const AF_Script_UniRangeRec af_goth_uniranges[] = 395 { 396 AF_UNIRANGE_REC( 0x10330, 0x1034F ), /* Gothic */ 397 AF_UNIRANGE_REC( 0, 0 ) 398 }; 399 400 const AF_Script_UniRangeRec af_goth_nonbase_uniranges[] = 401 { 402 AF_UNIRANGE_REC( 0, 0 ) 403 }; 404 405 406 const AF_Script_UniRangeRec af_grek_uniranges[] = 407 { 408 AF_UNIRANGE_REC( 0x0370, 0x03FF ), /* Greek and Coptic */ 409 AF_UNIRANGE_REC( 0x1F00, 0x1FFF ), /* Greek Extended */ 410 AF_UNIRANGE_REC( 0, 0 ) 411 }; 412 413 const AF_Script_UniRangeRec af_grek_nonbase_uniranges[] = 414 { 415 AF_UNIRANGE_REC( 0x037A, 0x037A ), 416 AF_UNIRANGE_REC( 0x0384, 0x0385 ), 417 AF_UNIRANGE_REC( 0x1FBD, 0x1FC1 ), 418 AF_UNIRANGE_REC( 0x1FCD, 0x1FCF ), 419 AF_UNIRANGE_REC( 0x1FDD, 0x1FDF ), 420 AF_UNIRANGE_REC( 0x1FED, 0x1FEF ), 421 AF_UNIRANGE_REC( 0x1FFD, 0x1FFE ), 422 AF_UNIRANGE_REC( 0, 0 ) 423 }; 424 425 426 const AF_Script_UniRangeRec af_gujr_uniranges[] = 427 { 428 AF_UNIRANGE_REC( 0x0A80, 0x0AFF ), /* Gujarati */ 429 AF_UNIRANGE_REC( 0, 0 ) 430 }; 431 432 const AF_Script_UniRangeRec af_gujr_nonbase_uniranges[] = 433 { 434 AF_UNIRANGE_REC( 0x0A81, 0x0A82 ), 435 AF_UNIRANGE_REC( 0x0ABC, 0x0ABC ), 436 AF_UNIRANGE_REC( 0x0AC1, 0x0AC8 ), 437 AF_UNIRANGE_REC( 0x0ACD, 0x0ACD ), 438 AF_UNIRANGE_REC( 0x0AE2, 0x0AE3 ), 439 AF_UNIRANGE_REC( 0x0AFA, 0x0AFF ), 440 AF_UNIRANGE_REC( 0, 0 ) 441 }; 442 443 444 const AF_Script_UniRangeRec af_guru_uniranges[] = 445 { 446 AF_UNIRANGE_REC( 0x0A00, 0x0A7F ), /* Gurmukhi */ 447 AF_UNIRANGE_REC( 0, 0 ) 448 }; 449 450 const AF_Script_UniRangeRec af_guru_nonbase_uniranges[] = 451 { 452 AF_UNIRANGE_REC( 0x0A01, 0x0A02 ), 453 AF_UNIRANGE_REC( 0x0A3C, 0x0A3C ), 454 AF_UNIRANGE_REC( 0x0A41, 0x0A51 ), 455 AF_UNIRANGE_REC( 0x0A70, 0x0A71 ), 456 AF_UNIRANGE_REC( 0x0A75, 0x0A75 ), 457 AF_UNIRANGE_REC( 0, 0 ) 458 }; 459 460 461 const AF_Script_UniRangeRec af_hebr_uniranges[] = 462 { 463 AF_UNIRANGE_REC( 0x0590, 0x05FF ), /* Hebrew */ 464 AF_UNIRANGE_REC( 0xFB1D, 0xFB4F ), /* Alphab. Present. Forms (Hebrew) */ 465 AF_UNIRANGE_REC( 0, 0 ) 466 }; 467 468 const AF_Script_UniRangeRec af_hebr_nonbase_uniranges[] = 469 { 470 AF_UNIRANGE_REC( 0x0591, 0x05BF ), 471 AF_UNIRANGE_REC( 0x05C1, 0x05C2 ), 472 AF_UNIRANGE_REC( 0x05C4, 0x05C5 ), 473 AF_UNIRANGE_REC( 0x05C7, 0x05C7 ), 474 AF_UNIRANGE_REC( 0xFB1E, 0xFB1E ), 475 AF_UNIRANGE_REC( 0, 0 ) 476 }; 477 478 479 const AF_Script_UniRangeRec af_kali_uniranges[] = 480 { 481 AF_UNIRANGE_REC( 0xA900, 0xA92F ), /* Kayah Li */ 482 AF_UNIRANGE_REC( 0, 0 ) 483 }; 484 485 const AF_Script_UniRangeRec af_kali_nonbase_uniranges[] = 486 { 487 AF_UNIRANGE_REC( 0xA926, 0xA92D ), 488 AF_UNIRANGE_REC( 0, 0 ) 489 }; 490 491 492 const AF_Script_UniRangeRec af_knda_uniranges[] = 493 { 494 AF_UNIRANGE_REC( 0x0C80, 0x0CFF ), /* Kannada */ 495 AF_UNIRANGE_REC( 0, 0 ) 496 }; 497 498 const AF_Script_UniRangeRec af_knda_nonbase_uniranges[] = 499 { 500 AF_UNIRANGE_REC( 0x0C81, 0x0C81 ), 501 AF_UNIRANGE_REC( 0x0CBC, 0x0CBC ), 502 AF_UNIRANGE_REC( 0x0CBF, 0x0CBF ), 503 AF_UNIRANGE_REC( 0x0CC6, 0x0CC6 ), 504 AF_UNIRANGE_REC( 0x0CCC, 0x0CCD ), 505 AF_UNIRANGE_REC( 0x0CE2, 0x0CE3 ), 506 AF_UNIRANGE_REC( 0, 0 ) 507 }; 508 509 510 const AF_Script_UniRangeRec af_khmr_uniranges[] = 511 { 512 AF_UNIRANGE_REC( 0x1780, 0x17FF ), /* Khmer */ 513 AF_UNIRANGE_REC( 0, 0 ) 514 }; 515 516 const AF_Script_UniRangeRec af_khmr_nonbase_uniranges[] = 517 { 518 AF_UNIRANGE_REC( 0x17B7, 0x17BD ), 519 AF_UNIRANGE_REC( 0x17C6, 0x17C6 ), 520 AF_UNIRANGE_REC( 0x17C9, 0x17D3 ), 521 AF_UNIRANGE_REC( 0x17DD, 0x17DD ), 522 AF_UNIRANGE_REC( 0, 0 ) 523 }; 524 525 526 const AF_Script_UniRangeRec af_khms_uniranges[] = 527 { 528 AF_UNIRANGE_REC( 0x19E0, 0x19FF ), /* Khmer Symbols */ 529 AF_UNIRANGE_REC( 0, 0 ) 530 }; 531 532 const AF_Script_UniRangeRec af_khms_nonbase_uniranges[] = 533 { 534 AF_UNIRANGE_REC( 0, 0 ) 535 }; 536 537 538 const AF_Script_UniRangeRec af_lao_uniranges[] = 539 { 540 AF_UNIRANGE_REC( 0x0E80, 0x0EFF ), /* Lao */ 541 AF_UNIRANGE_REC( 0, 0 ) 542 }; 543 544 const AF_Script_UniRangeRec af_lao_nonbase_uniranges[] = 545 { 546 AF_UNIRANGE_REC( 0x0EB1, 0x0EB1 ), 547 AF_UNIRANGE_REC( 0x0EB4, 0x0EBC ), 548 AF_UNIRANGE_REC( 0x0EC8, 0x0ECE ), 549 AF_UNIRANGE_REC( 0, 0 ) 550 }; 551 552 553 const AF_Script_UniRangeRec af_latn_uniranges[] = 554 { 555 AF_UNIRANGE_REC( 0x0020, 0x007F ), /* Basic Latin (no control chars) */ 556 AF_UNIRANGE_REC( 0x00A0, 0x00A9 ), /* Latin-1 Supplement (no control chars) */ 557 AF_UNIRANGE_REC( 0x00AB, 0x00B1 ), /* ... continued */ 558 AF_UNIRANGE_REC( 0x00B4, 0x00B8 ), /* ... continued */ 559 AF_UNIRANGE_REC( 0x00BB, 0x00FF ), /* ... continued */ 560 AF_UNIRANGE_REC( 0x0100, 0x017F ), /* Latin Extended-A */ 561 AF_UNIRANGE_REC( 0x0180, 0x024F ), /* Latin Extended-B */ 562 AF_UNIRANGE_REC( 0x0250, 0x02AF ), /* IPA Extensions */ 563 AF_UNIRANGE_REC( 0x02B9, 0x02DF ), /* Spacing Modifier Letters */ 564 AF_UNIRANGE_REC( 0x02E5, 0x02FF ), /* ... continued */ 565 AF_UNIRANGE_REC( 0x0300, 0x036F ), /* Combining Diacritical Marks */ 566 AF_UNIRANGE_REC( 0x1AB0, 0x1ABE ), /* Combining Diacritical Marks Extended */ 567 AF_UNIRANGE_REC( 0x1D00, 0x1D2B ), /* Phonetic Extensions */ 568 AF_UNIRANGE_REC( 0x1D6B, 0x1D77 ), /* ... continued */ 569 AF_UNIRANGE_REC( 0x1D79, 0x1D7F ), /* ... continued */ 570 AF_UNIRANGE_REC( 0x1D80, 0x1D9A ), /* Phonetic Extensions Supplement */ 571 AF_UNIRANGE_REC( 0x1DC0, 0x1DFF ), /* Combining Diacritical Marks Supplement */ 572 AF_UNIRANGE_REC( 0x1E00, 0x1EFF ), /* Latin Extended Additional */ 573 AF_UNIRANGE_REC( 0x2000, 0x206F ), /* General Punctuation */ 574 AF_UNIRANGE_REC( 0x20A0, 0x20B8 ), /* Currency Symbols ... */ 575 AF_UNIRANGE_REC( 0x20BA, 0x20CF ), /* ... except new Rupee sign */ 576 AF_UNIRANGE_REC( 0x2150, 0x218F ), /* Number Forms */ 577 AF_UNIRANGE_REC( 0x2C60, 0x2C7B ), /* Latin Extended-C */ 578 AF_UNIRANGE_REC( 0x2C7E, 0x2C7F ), /* ... continued */ 579 AF_UNIRANGE_REC( 0x2E00, 0x2E7F ), /* Supplemental Punctuation */ 580 AF_UNIRANGE_REC( 0xA720, 0xA76F ), /* Latin Extended-D */ 581 AF_UNIRANGE_REC( 0xA771, 0xA7F0 ), /* ... continued */ 582 AF_UNIRANGE_REC( 0xA7F2, 0xA7F7 ), /* ... continued */ 583 AF_UNIRANGE_REC( 0xA7FA, 0xA7FF ), /* ... continued */ 584 AF_UNIRANGE_REC( 0xAB30, 0xAB5B ), /* Latin Extended-E */ 585 AF_UNIRANGE_REC( 0xAB60, 0xAB68 ), /* ... continued */ 586 AF_UNIRANGE_REC( 0xAB6A, 0xAB6F ), /* ... continued */ 587 AF_UNIRANGE_REC( 0xFB00, 0xFB06 ), /* Alphab. Present. Forms (Latin Ligs) */ 588 AF_UNIRANGE_REC( 0x1D400, 0x1D7FF ), /* Mathematical Alphanumeric Symbols */ 589 AF_UNIRANGE_REC( 0x1DF00, 0x1DFFF ), /* Latin Extended-G */ 590 AF_UNIRANGE_REC( 0, 0 ) 591 }; 592 593 const AF_Script_UniRangeRec af_latn_nonbase_uniranges[] = 594 { 595 AF_UNIRANGE_REC( 0x005E, 0x0060 ), 596 AF_UNIRANGE_REC( 0x007E, 0x007E ), 597 AF_UNIRANGE_REC( 0x00A8, 0x00A9 ), 598 AF_UNIRANGE_REC( 0x00AE, 0x00B0 ), 599 AF_UNIRANGE_REC( 0x00B4, 0x00B4 ), 600 AF_UNIRANGE_REC( 0x00B8, 0x00B8 ), 601 AF_UNIRANGE_REC( 0x00BC, 0x00BE ), 602 AF_UNIRANGE_REC( 0x02B9, 0x02DF ), 603 AF_UNIRANGE_REC( 0x02E5, 0x02FF ), 604 AF_UNIRANGE_REC( 0x0300, 0x036F ), 605 AF_UNIRANGE_REC( 0x1AB0, 0x1AEB ), 606 AF_UNIRANGE_REC( 0x1DC0, 0x1DFF ), 607 AF_UNIRANGE_REC( 0x2017, 0x2017 ), 608 AF_UNIRANGE_REC( 0x203E, 0x203E ), 609 AF_UNIRANGE_REC( 0xA788, 0xA788 ), 610 AF_UNIRANGE_REC( 0xA7F8, 0xA7FA ), 611 AF_UNIRANGE_REC( 0, 0 ) 612 }; 613 614 615 const AF_Script_UniRangeRec af_latb_uniranges[] = 616 { 617 AF_UNIRANGE_REC( 0x1D62, 0x1D6A ), /* some small subscript letters */ 618 AF_UNIRANGE_REC( 0x2080, 0x209C ), /* subscript digits and letters */ 619 AF_UNIRANGE_REC( 0x2C7C, 0x2C7C ), /* latin subscript small letter j */ 620 AF_UNIRANGE_REC( 0, 0 ) 621 }; 622 623 const AF_Script_UniRangeRec af_latb_nonbase_uniranges[] = 624 { 625 AF_UNIRANGE_REC( 0, 0 ) 626 }; 627 628 629 const AF_Script_UniRangeRec af_latp_uniranges[] = 630 { 631 AF_UNIRANGE_REC( 0x00AA, 0x00AA ), /* feminine ordinal indicator */ 632 AF_UNIRANGE_REC( 0x00B2, 0x00B3 ), /* superscript two and three */ 633 AF_UNIRANGE_REC( 0x00B9, 0x00BA ), /* superscript one, masc. ord. indic. */ 634 AF_UNIRANGE_REC( 0x02B0, 0x02B8 ), /* some latin superscript mod. letters */ 635 AF_UNIRANGE_REC( 0x02E0, 0x02E4 ), /* some IPA modifier letters */ 636 AF_UNIRANGE_REC( 0x1D2C, 0x1D61 ), /* latin superscript modifier letters */ 637 AF_UNIRANGE_REC( 0x1D78, 0x1D78 ), /* modifier letter cyrillic en */ 638 AF_UNIRANGE_REC( 0x1D9B, 0x1DBF ), /* more modifier letters */ 639 AF_UNIRANGE_REC( 0x2070, 0x207F ), /* superscript digits and letters */ 640 AF_UNIRANGE_REC( 0x2C7D, 0x2C7D ), /* modifier letter capital v */ 641 AF_UNIRANGE_REC( 0xA770, 0xA770 ), /* modifier letter us */ 642 AF_UNIRANGE_REC( 0xA7F1, 0xA7F1 ), /* modifier letter capital s */ 643 AF_UNIRANGE_REC( 0xA7F8, 0xA7F9 ), /* more modifier letters */ 644 AF_UNIRANGE_REC( 0xAB5C, 0xAB5F ), /* more modifier letters */ 645 AF_UNIRANGE_REC( 0xAB69, 0xAB69 ), /* modifier letter small turned w */ 646 AF_UNIRANGE_REC( 0x10780, 0x107FB ), /* Latin Extended-F */ 647 AF_UNIRANGE_REC( 0, 0 ) 648 }; 649 650 const AF_Script_UniRangeRec af_latp_nonbase_uniranges[] = 651 { 652 AF_UNIRANGE_REC( 0, 0 ) 653 }; 654 655 656 const AF_Script_UniRangeRec af_lisu_uniranges[] = 657 { 658 AF_UNIRANGE_REC( 0xA4D0, 0xA4FF ), /* Lisu */ 659 AF_UNIRANGE_REC( 0x11FB0, 0x11FBF ), /* Lisu Supplement */ 660 AF_UNIRANGE_REC( 0, 0 ) 661 }; 662 663 const AF_Script_UniRangeRec af_lisu_nonbase_uniranges[] = 664 { 665 AF_UNIRANGE_REC( 0, 0 ) 666 }; 667 668 669 const AF_Script_UniRangeRec af_mlym_uniranges[] = 670 { 671 AF_UNIRANGE_REC( 0x0D00, 0x0D7F ), /* Malayalam */ 672 AF_UNIRANGE_REC( 0, 0 ) 673 }; 674 675 const AF_Script_UniRangeRec af_mlym_nonbase_uniranges[] = 676 { 677 AF_UNIRANGE_REC( 0x0D00, 0x0D01 ), 678 AF_UNIRANGE_REC( 0x0D3B, 0x0D3C ), 679 AF_UNIRANGE_REC( 0x0D4D, 0x0D4E ), 680 AF_UNIRANGE_REC( 0x0D62, 0x0D63 ), 681 AF_UNIRANGE_REC( 0, 0 ) 682 }; 683 684 685 const AF_Script_UniRangeRec af_medf_uniranges[] = 686 { 687 AF_UNIRANGE_REC( 0x16E40, 0x16E9F ), /* Medefaidrin */ 688 AF_UNIRANGE_REC( 0, 0 ) 689 }; 690 691 const AF_Script_UniRangeRec af_medf_nonbase_uniranges[] = 692 { 693 AF_UNIRANGE_REC( 0, 0 ) 694 }; 695 696 697 const AF_Script_UniRangeRec af_mong_uniranges[] = 698 { 699 AF_UNIRANGE_REC( 0x1800, 0x18AF ), /* Mongolian */ 700 AF_UNIRANGE_REC( 0x11660, 0x1167F ), /* Mongolian Supplement */ 701 AF_UNIRANGE_REC( 0, 0 ) 702 }; 703 704 const AF_Script_UniRangeRec af_mong_nonbase_uniranges[] = 705 { 706 AF_UNIRANGE_REC( 0x1885, 0x1886 ), 707 AF_UNIRANGE_REC( 0x18A9, 0x18A9 ), 708 AF_UNIRANGE_REC( 0, 0 ) 709 }; 710 711 712 const AF_Script_UniRangeRec af_mymr_uniranges[] = 713 { 714 AF_UNIRANGE_REC( 0x1000, 0x109F ), /* Myanmar */ 715 AF_UNIRANGE_REC( 0xA9E0, 0xA9FF ), /* Myanmar Extended-B */ 716 AF_UNIRANGE_REC( 0xAA60, 0xAA7F ), /* Myanmar Extended-A */ 717 AF_UNIRANGE_REC( 0x116D0, 0x116FF ), /* Myanmar Extended-C */ 718 AF_UNIRANGE_REC( 0, 0 ) 719 }; 720 721 const AF_Script_UniRangeRec af_mymr_nonbase_uniranges[] = 722 { 723 AF_UNIRANGE_REC( 0x102D, 0x1030 ), 724 AF_UNIRANGE_REC( 0x1032, 0x1037 ), 725 AF_UNIRANGE_REC( 0x103A, 0x103A ), 726 AF_UNIRANGE_REC( 0x103D, 0x103E ), 727 AF_UNIRANGE_REC( 0x1058, 0x1059 ), 728 AF_UNIRANGE_REC( 0x105E, 0x1060 ), 729 AF_UNIRANGE_REC( 0x1071, 0x1074 ), 730 AF_UNIRANGE_REC( 0x1082, 0x1082 ), 731 AF_UNIRANGE_REC( 0x1085, 0x1086 ), 732 AF_UNIRANGE_REC( 0x108D, 0x108D ), 733 AF_UNIRANGE_REC( 0xA9E5, 0xA9E5 ), 734 AF_UNIRANGE_REC( 0xAA7C, 0xAA7C ), 735 AF_UNIRANGE_REC( 0, 0 ) 736 }; 737 738 739 const AF_Script_UniRangeRec af_nkoo_uniranges[] = 740 { 741 AF_UNIRANGE_REC( 0x07C0, 0x07FF ), /* N'Ko */ 742 AF_UNIRANGE_REC( 0, 0 ) 743 }; 744 745 const AF_Script_UniRangeRec af_nkoo_nonbase_uniranges[] = 746 { 747 AF_UNIRANGE_REC( 0x07EB, 0x07F5 ), 748 AF_UNIRANGE_REC( 0x07FD, 0x07FD ), 749 AF_UNIRANGE_REC( 0, 0 ) 750 }; 751 752 753 const AF_Script_UniRangeRec af_none_uniranges[] = 754 { 755 AF_UNIRANGE_REC( 0, 0 ) 756 }; 757 758 const AF_Script_UniRangeRec af_none_nonbase_uniranges[] = 759 { 760 AF_UNIRANGE_REC( 0, 0 ) 761 }; 762 763 764 const AF_Script_UniRangeRec af_olck_uniranges[] = 765 { 766 AF_UNIRANGE_REC( 0x1C50, 0x1C7F ), /* Ol Chiki */ 767 AF_UNIRANGE_REC( 0, 0 ) 768 }; 769 770 const AF_Script_UniRangeRec af_olck_nonbase_uniranges[] = 771 { 772 AF_UNIRANGE_REC( 0, 0 ) 773 }; 774 775 776 const AF_Script_UniRangeRec af_orkh_uniranges[] = 777 { 778 AF_UNIRANGE_REC( 0x10C00, 0x10C4F ), /* Old Turkic */ 779 AF_UNIRANGE_REC( 0, 0 ) 780 }; 781 782 const AF_Script_UniRangeRec af_orkh_nonbase_uniranges[] = 783 { 784 AF_UNIRANGE_REC( 0, 0 ) 785 }; 786 787 788 const AF_Script_UniRangeRec af_osge_uniranges[] = 789 { 790 AF_UNIRANGE_REC( 0x104B0, 0x104FF ), /* Osage */ 791 AF_UNIRANGE_REC( 0, 0 ) 792 }; 793 794 const AF_Script_UniRangeRec af_osge_nonbase_uniranges[] = 795 { 796 AF_UNIRANGE_REC( 0, 0 ) 797 }; 798 799 800 const AF_Script_UniRangeRec af_osma_uniranges[] = 801 { 802 AF_UNIRANGE_REC( 0x10480, 0x104AF ), /* Osmanya */ 803 AF_UNIRANGE_REC( 0, 0 ) 804 }; 805 806 const AF_Script_UniRangeRec af_osma_nonbase_uniranges[] = 807 { 808 AF_UNIRANGE_REC( 0, 0 ) 809 }; 810 811 812 const AF_Script_UniRangeRec af_rohg_uniranges[] = 813 { 814 AF_UNIRANGE_REC( 0x10D00, 0x10D3F ), /* Hanifi Rohingya */ 815 AF_UNIRANGE_REC( 0, 0 ) 816 }; 817 818 const AF_Script_UniRangeRec af_rohg_nonbase_uniranges[] = 819 { 820 AF_UNIRANGE_REC( 0, 0 ) 821 }; 822 823 824 const AF_Script_UniRangeRec af_saur_uniranges[] = 825 { 826 AF_UNIRANGE_REC( 0xA880, 0xA8DF ), /* Saurashtra */ 827 AF_UNIRANGE_REC( 0, 0 ) 828 }; 829 830 const AF_Script_UniRangeRec af_saur_nonbase_uniranges[] = 831 { 832 AF_UNIRANGE_REC( 0xA880, 0xA881 ), 833 AF_UNIRANGE_REC( 0xA8B4, 0xA8C5 ), 834 AF_UNIRANGE_REC( 0, 0 ) 835 }; 836 837 838 const AF_Script_UniRangeRec af_shaw_uniranges[] = 839 { 840 AF_UNIRANGE_REC( 0x10450, 0x1047F ), /* Shavian */ 841 AF_UNIRANGE_REC( 0, 0 ) 842 }; 843 844 const AF_Script_UniRangeRec af_shaw_nonbase_uniranges[] = 845 { 846 AF_UNIRANGE_REC( 0, 0 ) 847 }; 848 849 850 const AF_Script_UniRangeRec af_sinh_uniranges[] = 851 { 852 AF_UNIRANGE_REC( 0x0D80, 0x0DFF ), /* Sinhala */ 853 AF_UNIRANGE_REC( 0, 0 ) 854 }; 855 856 const AF_Script_UniRangeRec af_sinh_nonbase_uniranges[] = 857 { 858 AF_UNIRANGE_REC( 0x0D81, 0x0D81 ), 859 AF_UNIRANGE_REC( 0x0DCA, 0x0DCA ), 860 AF_UNIRANGE_REC( 0x0DD2, 0x0DD6 ), 861 AF_UNIRANGE_REC( 0, 0 ) 862 }; 863 864 865 const AF_Script_UniRangeRec af_sund_uniranges[] = 866 { 867 AF_UNIRANGE_REC( 0x1B80, 0x1BBF ), /* Sundanese */ 868 AF_UNIRANGE_REC( 0x1CC0, 0x1CCF ), /* Sundanese Supplement */ 869 AF_UNIRANGE_REC( 0, 0 ) 870 }; 871 872 const AF_Script_UniRangeRec af_sund_nonbase_uniranges[] = 873 { 874 AF_UNIRANGE_REC( 0x1B80, 0x1B82 ), 875 AF_UNIRANGE_REC( 0x1BA1, 0x1BAD ), 876 AF_UNIRANGE_REC( 0, 0 ) 877 }; 878 879 880 const AF_Script_UniRangeRec af_taml_uniranges[] = 881 { 882 AF_UNIRANGE_REC( 0x0B80, 0x0BFF ), /* Tamil */ 883 AF_UNIRANGE_REC( 0x11FC0, 0x11FFF ), /* Tamil Supplement */ 884 AF_UNIRANGE_REC( 0, 0 ) 885 }; 886 887 const AF_Script_UniRangeRec af_taml_nonbase_uniranges[] = 888 { 889 AF_UNIRANGE_REC( 0x0B82, 0x0B82 ), 890 AF_UNIRANGE_REC( 0x0BC0, 0x0BC2 ), 891 AF_UNIRANGE_REC( 0x0BCD, 0x0BCD ), 892 AF_UNIRANGE_REC( 0, 0 ) 893 }; 894 895 896 const AF_Script_UniRangeRec af_tavt_uniranges[] = 897 { 898 AF_UNIRANGE_REC( 0xAA80, 0xAADF ), /* Tai Viet */ 899 AF_UNIRANGE_REC( 0, 0 ) 900 }; 901 902 const AF_Script_UniRangeRec af_tavt_nonbase_uniranges[] = 903 { 904 AF_UNIRANGE_REC( 0xAAB0, 0xAAB0 ), 905 AF_UNIRANGE_REC( 0xAAB2, 0xAAB4 ), 906 AF_UNIRANGE_REC( 0xAAB7, 0xAAB8 ), 907 AF_UNIRANGE_REC( 0xAABE, 0xAABF ), 908 AF_UNIRANGE_REC( 0xAAC1, 0xAAC1 ), 909 AF_UNIRANGE_REC( 0, 0 ) 910 }; 911 912 913 const AF_Script_UniRangeRec af_telu_uniranges[] = 914 { 915 AF_UNIRANGE_REC( 0x0C00, 0x0C7F ), /* Telugu */ 916 AF_UNIRANGE_REC( 0, 0 ) 917 }; 918 919 const AF_Script_UniRangeRec af_telu_nonbase_uniranges[] = 920 { 921 AF_UNIRANGE_REC( 0x0C00, 0x0C00 ), 922 AF_UNIRANGE_REC( 0x0C04, 0x0C04 ), 923 AF_UNIRANGE_REC( 0x0C3C, 0x0C3C ), 924 AF_UNIRANGE_REC( 0x0C3E, 0x0C40 ), 925 AF_UNIRANGE_REC( 0x0C46, 0x0C56 ), 926 AF_UNIRANGE_REC( 0x0C62, 0x0C63 ), 927 AF_UNIRANGE_REC( 0, 0 ) 928 }; 929 930 931 const AF_Script_UniRangeRec af_thai_uniranges[] = 932 { 933 AF_UNIRANGE_REC( 0x0E00, 0x0E7F ), /* Thai */ 934 AF_UNIRANGE_REC( 0, 0 ) 935 }; 936 937 const AF_Script_UniRangeRec af_thai_nonbase_uniranges[] = 938 { 939 AF_UNIRANGE_REC( 0x0E31, 0x0E31 ), 940 AF_UNIRANGE_REC( 0x0E34, 0x0E3A ), 941 AF_UNIRANGE_REC( 0x0E47, 0x0E4E ), 942 AF_UNIRANGE_REC( 0, 0 ) 943 }; 944 945 946 const AF_Script_UniRangeRec af_tfng_uniranges[] = 947 { 948 AF_UNIRANGE_REC( 0x2D30, 0x2D7F ), /* Tifinagh */ 949 AF_UNIRANGE_REC( 0, 0 ) 950 }; 951 952 const AF_Script_UniRangeRec af_tfng_nonbase_uniranges[] = 953 { 954 AF_UNIRANGE_REC( 0, 0 ) 955 }; 956 957 958 const AF_Script_UniRangeRec af_vaii_uniranges[] = 959 { 960 AF_UNIRANGE_REC( 0xA500, 0xA63F ), /* Vai */ 961 AF_UNIRANGE_REC( 0, 0 ) 962 }; 963 964 const AF_Script_UniRangeRec af_vaii_nonbase_uniranges[] = 965 { 966 AF_UNIRANGE_REC( 0, 0 ) 967 }; 968 969 970 #ifdef AF_CONFIG_OPTION_INDIC 971 972 const AF_Script_UniRangeRec af_limb_uniranges[] = 973 { 974 AF_UNIRANGE_REC( 0x1900, 0x194F ), /* Limbu */ 975 AF_UNIRANGE_REC( 0, 0 ) 976 }; 977 978 const AF_Script_UniRangeRec af_limb_nonbase_uniranges[] = 979 { 980 AF_UNIRANGE_REC( 0x1920, 0x1922 ), 981 AF_UNIRANGE_REC( 0x1927, 0x1934 ), 982 AF_UNIRANGE_REC( 0x1937, 0x193B ), 983 AF_UNIRANGE_REC( 0, 0 ) 984 }; 985 986 987 const AF_Script_UniRangeRec af_orya_uniranges[] = 988 { 989 AF_UNIRANGE_REC( 0x0B00, 0x0B7F ), /* Oriya */ 990 AF_UNIRANGE_REC( 0, 0 ) 991 }; 992 993 const AF_Script_UniRangeRec af_orya_nonbase_uniranges[] = 994 { 995 AF_UNIRANGE_REC( 0x0B01, 0x0B02 ), 996 AF_UNIRANGE_REC( 0x0B3C, 0x0B3C ), 997 AF_UNIRANGE_REC( 0x0B3F, 0x0B3F ), 998 AF_UNIRANGE_REC( 0x0B41, 0x0B44 ), 999 AF_UNIRANGE_REC( 0x0B4D, 0x0B56 ), 1000 AF_UNIRANGE_REC( 0x0B62, 0x0B63 ), 1001 AF_UNIRANGE_REC( 0, 0 ) 1002 }; 1003 1004 1005 const AF_Script_UniRangeRec af_sylo_uniranges[] = 1006 { 1007 AF_UNIRANGE_REC( 0xA800, 0xA82F ), /* Syloti Nagri */ 1008 AF_UNIRANGE_REC( 0, 0 ) 1009 }; 1010 1011 const AF_Script_UniRangeRec af_sylo_nonbase_uniranges[] = 1012 { 1013 AF_UNIRANGE_REC( 0xA802, 0xA802 ), 1014 AF_UNIRANGE_REC( 0xA806, 0xA806 ), 1015 AF_UNIRANGE_REC( 0xA80B, 0xA80B ), 1016 AF_UNIRANGE_REC( 0xA825, 0xA826 ), 1017 AF_UNIRANGE_REC( 0xA82C, 0xA82C ), 1018 AF_UNIRANGE_REC( 0, 0 ) 1019 }; 1020 1021 1022 const AF_Script_UniRangeRec af_tibt_uniranges[] = 1023 { 1024 AF_UNIRANGE_REC( 0x0F00, 0x0FFF ), /* Tibetan */ 1025 AF_UNIRANGE_REC( 0, 0 ) 1026 }; 1027 1028 const AF_Script_UniRangeRec af_tibt_nonbase_uniranges[] = 1029 { 1030 AF_UNIRANGE_REC( 0x0F18, 0x0F19 ), 1031 AF_UNIRANGE_REC( 0x0F35, 0x0F35 ), 1032 AF_UNIRANGE_REC( 0x0F37, 0x0F37 ), 1033 AF_UNIRANGE_REC( 0x0F39, 0x0F39 ), 1034 AF_UNIRANGE_REC( 0x0F3E, 0x0F3F ), 1035 AF_UNIRANGE_REC( 0x0F71, 0x0F7E ), 1036 AF_UNIRANGE_REC( 0x0F80, 0x0F84 ), 1037 AF_UNIRANGE_REC( 0x0F86, 0x0F87 ), 1038 AF_UNIRANGE_REC( 0x0F8D, 0x0FBC ), 1039 AF_UNIRANGE_REC( 0, 0 ) 1040 }; 1041 1042 #endif /* !AF_CONFIG_OPTION_INDIC */ 1043 1044 #ifdef AF_CONFIG_OPTION_CJK 1045 1046 /* this corresponds to Unicode 6.0 */ 1047 1048 const AF_Script_UniRangeRec af_hani_uniranges[] = 1049 { 1050 AF_UNIRANGE_REC( 0x1100, 0x11FF ), /* Hangul Jamo */ 1051 AF_UNIRANGE_REC( 0x2E80, 0x2EFF ), /* CJK Radicals Supplement */ 1052 AF_UNIRANGE_REC( 0x2F00, 0x2FDF ), /* Kangxi Radicals */ 1053 AF_UNIRANGE_REC( 0x2FF0, 0x2FFF ), /* Ideographic Description Characters */ 1054 AF_UNIRANGE_REC( 0x3000, 0x303F ), /* CJK Symbols and Punctuation */ 1055 AF_UNIRANGE_REC( 0x3040, 0x309F ), /* Hiragana */ 1056 AF_UNIRANGE_REC( 0x30A0, 0x30FF ), /* Katakana */ 1057 AF_UNIRANGE_REC( 0x3100, 0x312F ), /* Bopomofo */ 1058 AF_UNIRANGE_REC( 0x3130, 0x318F ), /* Hangul Compatibility Jamo */ 1059 AF_UNIRANGE_REC( 0x3190, 0x319F ), /* Kanbun */ 1060 AF_UNIRANGE_REC( 0x31A0, 0x31BF ), /* Bopomofo Extended */ 1061 AF_UNIRANGE_REC( 0x31C0, 0x31EF ), /* CJK Strokes */ 1062 AF_UNIRANGE_REC( 0x31F0, 0x31FF ), /* Katakana Phonetic Extensions */ 1063 AF_UNIRANGE_REC( 0x3300, 0x33FF ), /* CJK Compatibility */ 1064 AF_UNIRANGE_REC( 0x3400, 0x4DBF ), /* CJK Unified Ideographs Extension A */ 1065 AF_UNIRANGE_REC( 0x4DC0, 0x4DFF ), /* Yijing Hexagram Symbols */ 1066 AF_UNIRANGE_REC( 0x4E00, 0x9FFF ), /* CJK Unified Ideographs */ 1067 AF_UNIRANGE_REC( 0xA960, 0xA97F ), /* Hangul Jamo Extended-A */ 1068 AF_UNIRANGE_REC( 0xAC00, 0xD7AF ), /* Hangul Syllables */ 1069 AF_UNIRANGE_REC( 0xD7B0, 0xD7FF ), /* Hangul Jamo Extended-B */ 1070 AF_UNIRANGE_REC( 0xF900, 0xFAFF ), /* CJK Compatibility Ideographs */ 1071 AF_UNIRANGE_REC( 0xFE10, 0xFE1F ), /* Vertical forms */ 1072 AF_UNIRANGE_REC( 0xFE30, 0xFE4F ), /* CJK Compatibility Forms */ 1073 AF_UNIRANGE_REC( 0xFF00, 0xFFEF ), /* Halfwidth and Fullwidth Forms */ 1074 AF_UNIRANGE_REC( 0x1AFF0, 0x1AFFF ), /* Kana Extended-B */ 1075 AF_UNIRANGE_REC( 0x1B000, 0x1B0FF ), /* Kana Supplement */ 1076 AF_UNIRANGE_REC( 0x1B100, 0x1B12F ), /* Kana Extended-A */ 1077 AF_UNIRANGE_REC( 0x1B130, 0x1B16F ), /* Small Kana Extension */ 1078 AF_UNIRANGE_REC( 0x1D300, 0x1D35F ), /* Tai Xuan Hing Symbols */ 1079 AF_UNIRANGE_REC( 0x20000, 0x2A6DF ), /* CJK Unified Ideographs Extension B */ 1080 AF_UNIRANGE_REC( 0x2A700, 0x2B73F ), /* CJK Unified Ideographs Extension C */ 1081 AF_UNIRANGE_REC( 0x2B740, 0x2B81F ), /* CJK Unified Ideographs Extension D */ 1082 AF_UNIRANGE_REC( 0x2B820, 0x2CEAF ), /* CJK Unified Ideographs Extension E */ 1083 AF_UNIRANGE_REC( 0x2CEB0, 0x2EBEF ), /* CJK Unified Ideographs Extension F */ 1084 AF_UNIRANGE_REC( 0x2EBF0, 0x2EE5D ), /* CJK Unified Ideographs Extension I */ 1085 AF_UNIRANGE_REC( 0x2F800, 0x2FA1F ), /* CJK Compatibility Ideographs Supplement */ 1086 AF_UNIRANGE_REC( 0x30000, 0x3134A ), /* CJK Unified Ideographs Extension G */ 1087 AF_UNIRANGE_REC( 0x31350, 0x323AF ), /* CJK Unified Ideographs Extension H */ 1088 AF_UNIRANGE_REC( 0x323B0, 0x33479 ), /* CJK Unified Ideographs Extension J */ 1089 AF_UNIRANGE_REC( 0, 0 ) 1090 }; 1091 1092 const AF_Script_UniRangeRec af_hani_nonbase_uniranges[] = 1093 { 1094 AF_UNIRANGE_REC( 0x302A, 0x302F ), 1095 AF_UNIRANGE_REC( 0x3190, 0x319F ), 1096 AF_UNIRANGE_REC( 0, 0 ) 1097 }; 1098 1099 #endif /* !AF_CONFIG_OPTION_CJK */ 1100 1101 /* END */