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