| OLD | NEW |
| 1 | 1 |
| 2 #line 1 "../../src/hb-ot-shape-complex-indic-machine.rl" | 2 #line 1 "hb-ot-shape-complex-indic-machine.rl" |
| 3 /* | 3 /* |
| 4 * Copyright © 2011,2012 Google, Inc. | 4 * Copyright © 2011,2012 Google, Inc. |
| 5 * | 5 * |
| 6 * This is part of HarfBuzz, a text shaping library. | 6 * This is part of HarfBuzz, a text shaping library. |
| 7 * | 7 * |
| 8 * Permission is hereby granted, without written agreement and without | 8 * Permission is hereby granted, without written agreement and without |
| 9 * license or royalty fees, to use, copy, modify, and distribute this | 9 * license or royalty fees, to use, copy, modify, and distribute this |
| 10 * software and its documentation for any purpose, provided that the | 10 * software and its documentation for any purpose, provided that the |
| 11 * above copyright notice and the following two paragraphs appear in | 11 * above copyright notice and the following two paragraphs appear in |
| 12 * all copies of this software. | 12 * all copies of this software. |
| (...skipping 12 matching lines...) Expand all Loading... |
| 25 * | 25 * |
| 26 * Google Author(s): Behdad Esfahbod | 26 * Google Author(s): Behdad Esfahbod |
| 27 */ | 27 */ |
| 28 | 28 |
| 29 #ifndef HB_OT_SHAPE_COMPLEX_INDIC_MACHINE_HH | 29 #ifndef HB_OT_SHAPE_COMPLEX_INDIC_MACHINE_HH |
| 30 #define HB_OT_SHAPE_COMPLEX_INDIC_MACHINE_HH | 30 #define HB_OT_SHAPE_COMPLEX_INDIC_MACHINE_HH |
| 31 | 31 |
| 32 #include "hb-private.hh" | 32 #include "hb-private.hh" |
| 33 | 33 |
| 34 | 34 |
| 35 #line 36 "../../src/hb-ot-shape-complex-indic-machine.hh.tmp" | 35 #line 36 "hb-ot-shape-complex-indic-machine.hh.tmp" |
| 36 static const unsigned char _indic_syllable_machine_trans_keys[] = { | 36 static const unsigned char _indic_syllable_machine_trans_keys[] = { |
| 37 1u, 16u, 13u, 13u, 5u, 7u, 5u, 7u, 7u, 7u, 5u, 7u, 5u, 7u, 7u, 7u, | 37 1u, 16u, 13u, 13u, 5u, 7u, 5u, 7u, 7u, 7u, 5u, 7u, 5u, 7u, 7u, 7u, |
| 38 5u, 7u, 5u, 7u, 7u, 7u, 5u, 7u, 5u, 7u, 7u, 7u, 4u, 4u, 6u, 6u, | 38 5u, 7u, 5u, 7u, 7u, 7u, 5u, 7u, 5u, 7u, 7u, 7u, 4u, 4u, 6u, 6u, |
| 39 16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u, 4u, 7u, | 39 16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u, 4u, 7u, |
| 40 6u, 6u, 16u, 16u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, | 40 6u, 6u, 16u, 16u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, |
| 41 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 1u, 16u, 13u, 13u, 5u, 7u, 5u, 7u, | 41 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 1u, 16u, 13u, 13u, 5u, 7u, 5u, 7u, |
| 42 7u, 7u, 5u, 7u, 5u, 7u, 7u, 7u, 5u, 7u, 5u, 7u, 7u, 7u, 5u, 7u, | 42 7u, 7u, 5u, 7u, 5u, 7u, 7u, 7u, 5u, 7u, 5u, 7u, 7u, 7u, 5u, 7u, |
| 43 5u, 7u, 7u, 7u, 4u, 4u, 6u, 6u, 16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u, | 43 5u, 7u, 7u, 7u, 4u, 4u, 6u, 6u, 16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u, |
| 44 4u, 7u, 6u, 6u, 16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u, 4u, 14u, 4u, 14u, | 44 4u, 7u, 6u, 6u, 16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u, 4u, 14u, 4u, 14u, |
| 45 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, | 45 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, |
| (...skipping 1192 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1238 194, 194, 343 | 1238 194, 194, 343 |
| 1239 }; | 1239 }; |
| 1240 | 1240 |
| 1241 static const int indic_syllable_machine_start = 170; | 1241 static const int indic_syllable_machine_start = 170; |
| 1242 static const int indic_syllable_machine_first_final = 170; | 1242 static const int indic_syllable_machine_first_final = 170; |
| 1243 static const int indic_syllable_machine_error = -1; | 1243 static const int indic_syllable_machine_error = -1; |
| 1244 | 1244 |
| 1245 static const int indic_syllable_machine_en_main = 170; | 1245 static const int indic_syllable_machine_en_main = 170; |
| 1246 | 1246 |
| 1247 | 1247 |
| 1248 #line 36 "../../src/hb-ot-shape-complex-indic-machine.rl" | 1248 #line 36 "hb-ot-shape-complex-indic-machine.rl" |
| 1249 | 1249 |
| 1250 | 1250 |
| 1251 | 1251 |
| 1252 #line 91 "../../src/hb-ot-shape-complex-indic-machine.rl" | 1252 #line 91 "hb-ot-shape-complex-indic-machine.rl" |
| 1253 | 1253 |
| 1254 | 1254 |
| 1255 #define found_syllable(syllable_type) \ | 1255 #define found_syllable(syllable_type) \ |
| 1256 HB_STMT_START { \ | 1256 HB_STMT_START { \ |
| 1257 if (0) fprintf (stderr, "syllable %d..%d %s\n", last, p+1, #syllable_type);
\ | 1257 if (0) fprintf (stderr, "syllable %d..%d %s\n", last, p+1, #syllable_type);
\ |
| 1258 for (unsigned int i = last; i < p+1; i++) \ | 1258 for (unsigned int i = last; i < p+1; i++) \ |
| 1259 info[i].syllable() = (syllable_serial << 4) | syllable_type; \ | 1259 info[i].syllable() = (syllable_serial << 4) | syllable_type; \ |
| 1260 last = p+1; \ | 1260 last = p+1; \ |
| 1261 syllable_serial++; \ | 1261 syllable_serial++; \ |
| 1262 if (unlikely (syllable_serial == 16)) syllable_serial = 1; \ | 1262 if (unlikely (syllable_serial == 16)) syllable_serial = 1; \ |
| 1263 } HB_STMT_END | 1263 } HB_STMT_END |
| 1264 | 1264 |
| 1265 static void | 1265 static void |
| 1266 find_syllables (hb_buffer_t *buffer) | 1266 find_syllables (hb_buffer_t *buffer) |
| 1267 { | 1267 { |
| 1268 unsigned int p, pe, eof, ts HB_UNUSED, te, act; | 1268 unsigned int p, pe, eof, ts HB_UNUSED, te HB_UNUSED, act HB_UNUSED; |
| 1269 int cs; | 1269 int cs; |
| 1270 hb_glyph_info_t *info = buffer->info; | 1270 hb_glyph_info_t *info = buffer->info; |
| 1271 | 1271 |
| 1272 #line 1273 "../../src/hb-ot-shape-complex-indic-machine.hh.tmp" | 1272 #line 1273 "hb-ot-shape-complex-indic-machine.hh.tmp" |
| 1273 { | 1273 { |
| 1274 cs = indic_syllable_machine_start; | 1274 cs = indic_syllable_machine_start; |
| 1275 ts = 0; | 1275 ts = 0; |
| 1276 te = 0; | 1276 te = 0; |
| 1277 act = 0; | 1277 act = 0; |
| 1278 } | 1278 } |
| 1279 | 1279 |
| 1280 #line 112 "../../src/hb-ot-shape-complex-indic-machine.rl" | 1280 #line 112 "hb-ot-shape-complex-indic-machine.rl" |
| 1281 | 1281 |
| 1282 | 1282 |
| 1283 p = 0; | 1283 p = 0; |
| 1284 pe = eof = buffer->len; | 1284 pe = eof = buffer->len; |
| 1285 | 1285 |
| 1286 unsigned int last = 0; | 1286 unsigned int last = 0; |
| 1287 unsigned int syllable_serial = 1; | 1287 unsigned int syllable_serial = 1; |
| 1288 | 1288 |
| 1289 #line 1290 "../../src/hb-ot-shape-complex-indic-machine.hh.tmp" | 1289 #line 1290 "hb-ot-shape-complex-indic-machine.hh.tmp" |
| 1290 { | 1290 { |
| 1291 int _slen; | 1291 int _slen; |
| 1292 int _trans; | 1292 int _trans; |
| 1293 const unsigned char *_keys; | 1293 const unsigned char *_keys; |
| 1294 const short *_inds; | 1294 const short *_inds; |
| 1295 if ( p == pe ) | 1295 if ( p == pe ) |
| 1296 goto _test_eof; | 1296 goto _test_eof; |
| 1297 _resume: | 1297 _resume: |
| 1298 switch ( _indic_syllable_machine_from_state_actions[cs] ) { | 1298 switch ( _indic_syllable_machine_from_state_actions[cs] ) { |
| 1299 case 10: | 1299 case 10: |
| 1300 #line 1 "NONE" | 1300 #line 1 "NONE" |
| 1301 {ts = p;} | 1301 {ts = p;} |
| 1302 break; | 1302 break; |
| 1303 #line 1304 "../../src/hb-ot-shape-complex-indic-machine.hh.tmp" | 1303 #line 1304 "hb-ot-shape-complex-indic-machine.hh.tmp" |
| 1304 } | 1304 } |
| 1305 | 1305 |
| 1306 _keys = _indic_syllable_machine_trans_keys + (cs<<1); | 1306 _keys = _indic_syllable_machine_trans_keys + (cs<<1); |
| 1307 _inds = _indic_syllable_machine_indicies + _indic_syllable_machine_index
_offsets[cs]; | 1307 _inds = _indic_syllable_machine_indicies + _indic_syllable_machine_index
_offsets[cs]; |
| 1308 | 1308 |
| 1309 _slen = _indic_syllable_machine_key_spans[cs]; | 1309 _slen = _indic_syllable_machine_key_spans[cs]; |
| 1310 _trans = _inds[ _slen > 0 && _keys[0] <=( info[p].indic_category()) && | 1310 _trans = _inds[ _slen > 0 && _keys[0] <=( info[p].indic_category()) && |
| 1311 ( info[p].indic_category()) <= _keys[1] ? | 1311 ( info[p].indic_category()) <= _keys[1] ? |
| 1312 ( info[p].indic_category()) - _keys[0] : _slen ]; | 1312 ( info[p].indic_category()) - _keys[0] : _slen ]; |
| 1313 | 1313 |
| 1314 _eof_trans: | 1314 _eof_trans: |
| 1315 cs = _indic_syllable_machine_trans_targs[_trans]; | 1315 cs = _indic_syllable_machine_trans_targs[_trans]; |
| 1316 | 1316 |
| 1317 if ( _indic_syllable_machine_trans_actions[_trans] == 0 ) | 1317 if ( _indic_syllable_machine_trans_actions[_trans] == 0 ) |
| 1318 goto _again; | 1318 goto _again; |
| 1319 | 1319 |
| 1320 switch ( _indic_syllable_machine_trans_actions[_trans] ) { | 1320 switch ( _indic_syllable_machine_trans_actions[_trans] ) { |
| 1321 case 2: | 1321 case 2: |
| 1322 #line 1 "NONE" | 1322 #line 1 "NONE" |
| 1323 {te = p+1;} | 1323 {te = p+1;} |
| 1324 break; | 1324 break; |
| 1325 case 14: | 1325 case 14: |
| 1326 #line 83 "../../src/hb-ot-shape-complex-indic-machine.rl" | 1326 #line 83 "hb-ot-shape-complex-indic-machine.rl" |
| 1327 {te = p+1;{ found_syllable (consonant_syllable); }} | 1327 {te = p+1;{ found_syllable (consonant_syllable); }} |
| 1328 break; | 1328 break; |
| 1329 case 16: | 1329 case 16: |
| 1330 #line 84 "../../src/hb-ot-shape-complex-indic-machine.rl" | 1330 #line 84 "hb-ot-shape-complex-indic-machine.rl" |
| 1331 {te = p+1;{ found_syllable (vowel_syllable); }} | 1331 {te = p+1;{ found_syllable (vowel_syllable); }} |
| 1332 break; | 1332 break; |
| 1333 case 21: | 1333 case 21: |
| 1334 #line 85 "../../src/hb-ot-shape-complex-indic-machine.rl" | 1334 #line 85 "hb-ot-shape-complex-indic-machine.rl" |
| 1335 {te = p+1;{ found_syllable (standalone_cluster); }} | 1335 {te = p+1;{ found_syllable (standalone_cluster); }} |
| 1336 break; | 1336 break; |
| 1337 case 18: | 1337 case 18: |
| 1338 #line 86 "../../src/hb-ot-shape-complex-indic-machine.rl" | 1338 #line 86 "hb-ot-shape-complex-indic-machine.rl" |
| 1339 {te = p+1;{ found_syllable (broken_cluster); }} | 1339 {te = p+1;{ found_syllable (broken_cluster); }} |
| 1340 break; | 1340 break; |
| 1341 case 11: | 1341 case 11: |
| 1342 #line 87 "../../src/hb-ot-shape-complex-indic-machine.rl" | 1342 #line 87 "hb-ot-shape-complex-indic-machine.rl" |
| 1343 {te = p+1;{ found_syllable (non_indic_cluster); }} | 1343 {te = p+1;{ found_syllable (non_indic_cluster); }} |
| 1344 break; | 1344 break; |
| 1345 case 13: | 1345 case 13: |
| 1346 #line 83 "../../src/hb-ot-shape-complex-indic-machine.rl" | 1346 #line 83 "hb-ot-shape-complex-indic-machine.rl" |
| 1347 {te = p;p--;{ found_syllable (consonant_syllable); }} | 1347 {te = p;p--;{ found_syllable (consonant_syllable); }} |
| 1348 break; | 1348 break; |
| 1349 case 15: | 1349 case 15: |
| 1350 #line 84 "../../src/hb-ot-shape-complex-indic-machine.rl" | 1350 #line 84 "hb-ot-shape-complex-indic-machine.rl" |
| 1351 {te = p;p--;{ found_syllable (vowel_syllable); }} | 1351 {te = p;p--;{ found_syllable (vowel_syllable); }} |
| 1352 break; | 1352 break; |
| 1353 case 20: | 1353 case 20: |
| 1354 #line 85 "../../src/hb-ot-shape-complex-indic-machine.rl" | 1354 #line 85 "hb-ot-shape-complex-indic-machine.rl" |
| 1355 {te = p;p--;{ found_syllable (standalone_cluster); }} | 1355 {te = p;p--;{ found_syllable (standalone_cluster); }} |
| 1356 break; | 1356 break; |
| 1357 case 17: | 1357 case 17: |
| 1358 #line 86 "../../src/hb-ot-shape-complex-indic-machine.rl" | 1358 #line 86 "hb-ot-shape-complex-indic-machine.rl" |
| 1359 {te = p;p--;{ found_syllable (broken_cluster); }} | 1359 {te = p;p--;{ found_syllable (broken_cluster); }} |
| 1360 break; | 1360 break; |
| 1361 case 19: | 1361 case 19: |
| 1362 #line 87 "../../src/hb-ot-shape-complex-indic-machine.rl" | 1362 #line 87 "hb-ot-shape-complex-indic-machine.rl" |
| 1363 {te = p;p--;{ found_syllable (non_indic_cluster); }} | 1363 {te = p;p--;{ found_syllable (non_indic_cluster); }} |
| 1364 break; | 1364 break; |
| 1365 case 1: | 1365 case 1: |
| 1366 #line 83 "../../src/hb-ot-shape-complex-indic-machine.rl" | 1366 #line 83 "hb-ot-shape-complex-indic-machine.rl" |
| 1367 {{p = ((te))-1;}{ found_syllable (consonant_syllable); }} | 1367 {{p = ((te))-1;}{ found_syllable (consonant_syllable); }} |
| 1368 break; | 1368 break; |
| 1369 case 3: | 1369 case 3: |
| 1370 #line 84 "../../src/hb-ot-shape-complex-indic-machine.rl" | 1370 #line 84 "hb-ot-shape-complex-indic-machine.rl" |
| 1371 {{p = ((te))-1;}{ found_syllable (vowel_syllable); }} | 1371 {{p = ((te))-1;}{ found_syllable (vowel_syllable); }} |
| 1372 break; | 1372 break; |
| 1373 case 7: | 1373 case 7: |
| 1374 #line 85 "../../src/hb-ot-shape-complex-indic-machine.rl" | 1374 #line 85 "hb-ot-shape-complex-indic-machine.rl" |
| 1375 {{p = ((te))-1;}{ found_syllable (standalone_cluster); }} | 1375 {{p = ((te))-1;}{ found_syllable (standalone_cluster); }} |
| 1376 break; | 1376 break; |
| 1377 case 4: | 1377 case 4: |
| 1378 #line 86 "../../src/hb-ot-shape-complex-indic-machine.rl" | 1378 #line 86 "hb-ot-shape-complex-indic-machine.rl" |
| 1379 {{p = ((te))-1;}{ found_syllable (broken_cluster); }} | 1379 {{p = ((te))-1;}{ found_syllable (broken_cluster); }} |
| 1380 break; | 1380 break; |
| 1381 case 5: | 1381 case 5: |
| 1382 #line 1 "NONE" | 1382 #line 1 "NONE" |
| 1383 { switch( act ) { | 1383 { switch( act ) { |
| 1384 case 1: | 1384 case 1: |
| 1385 {{p = ((te))-1;} found_syllable (consonant_syllable); } | 1385 {{p = ((te))-1;} found_syllable (consonant_syllable); } |
| 1386 break; | 1386 break; |
| 1387 case 4: | 1387 case 4: |
| 1388 {{p = ((te))-1;} found_syllable (broken_cluster); } | 1388 {{p = ((te))-1;} found_syllable (broken_cluster); } |
| 1389 break; | 1389 break; |
| 1390 case 5: | 1390 case 5: |
| 1391 {{p = ((te))-1;} found_syllable (non_indic_cluster); } | 1391 {{p = ((te))-1;} found_syllable (non_indic_cluster); } |
| 1392 break; | 1392 break; |
| 1393 } | 1393 } |
| 1394 } | 1394 } |
| 1395 break; | 1395 break; |
| 1396 case 8: | 1396 case 8: |
| 1397 #line 1 "NONE" | 1397 #line 1 "NONE" |
| 1398 {te = p+1;} | 1398 {te = p+1;} |
| 1399 #line 83 "../../src/hb-ot-shape-complex-indic-machine.rl" | 1399 #line 83 "hb-ot-shape-complex-indic-machine.rl" |
| 1400 {act = 1;} | 1400 {act = 1;} |
| 1401 break; | 1401 break; |
| 1402 case 6: | 1402 case 6: |
| 1403 #line 1 "NONE" | 1403 #line 1 "NONE" |
| 1404 {te = p+1;} | 1404 {te = p+1;} |
| 1405 #line 86 "../../src/hb-ot-shape-complex-indic-machine.rl" | 1405 #line 86 "hb-ot-shape-complex-indic-machine.rl" |
| 1406 {act = 4;} | 1406 {act = 4;} |
| 1407 break; | 1407 break; |
| 1408 case 12: | 1408 case 12: |
| 1409 #line 1 "NONE" | 1409 #line 1 "NONE" |
| 1410 {te = p+1;} | 1410 {te = p+1;} |
| 1411 #line 87 "../../src/hb-ot-shape-complex-indic-machine.rl" | 1411 #line 87 "hb-ot-shape-complex-indic-machine.rl" |
| 1412 {act = 5;} | 1412 {act = 5;} |
| 1413 break; | 1413 break; |
| 1414 #line 1415 "../../src/hb-ot-shape-complex-indic-machine.hh.tmp" | 1414 #line 1415 "hb-ot-shape-complex-indic-machine.hh.tmp" |
| 1415 } | 1415 } |
| 1416 | 1416 |
| 1417 _again: | 1417 _again: |
| 1418 switch ( _indic_syllable_machine_to_state_actions[cs] ) { | 1418 switch ( _indic_syllable_machine_to_state_actions[cs] ) { |
| 1419 case 9: | 1419 case 9: |
| 1420 #line 1 "NONE" | 1420 #line 1 "NONE" |
| 1421 {ts = 0;} | 1421 {ts = 0;} |
| 1422 break; | 1422 break; |
| 1423 #line 1424 "../../src/hb-ot-shape-complex-indic-machine.hh.tmp" | 1423 #line 1424 "hb-ot-shape-complex-indic-machine.hh.tmp" |
| 1424 } | 1424 } |
| 1425 | 1425 |
| 1426 if ( ++p != pe ) | 1426 if ( ++p != pe ) |
| 1427 goto _resume; | 1427 goto _resume; |
| 1428 _test_eof: {} | 1428 _test_eof: {} |
| 1429 if ( p == eof ) | 1429 if ( p == eof ) |
| 1430 { | 1430 { |
| 1431 if ( _indic_syllable_machine_eof_trans[cs] > 0 ) { | 1431 if ( _indic_syllable_machine_eof_trans[cs] > 0 ) { |
| 1432 _trans = _indic_syllable_machine_eof_trans[cs] - 1; | 1432 _trans = _indic_syllable_machine_eof_trans[cs] - 1; |
| 1433 goto _eof_trans; | 1433 goto _eof_trans; |
| 1434 } | 1434 } |
| 1435 } | 1435 } |
| 1436 | 1436 |
| 1437 } | 1437 } |
| 1438 | 1438 |
| 1439 #line 121 "../../src/hb-ot-shape-complex-indic-machine.rl" | 1439 #line 121 "hb-ot-shape-complex-indic-machine.rl" |
| 1440 | 1440 |
| 1441 } | 1441 } |
| 1442 | 1442 |
| 1443 #endif /* HB_OT_SHAPE_COMPLEX_INDIC_MACHINE_HH */ | 1443 #endif /* HB_OT_SHAPE_COMPLEX_INDIC_MACHINE_HH */ |
| OLD | NEW |