Home | History | Annotate | Download | only in src

Lines Matching refs:info

141 is_one_of (const hb_glyph_info_t &info, unsigned int flags)
144 if (_hb_glyph_info_ligated (&info)) return false;
145 return !!(FLAG (info.indic_category()) & flags);
149 is_joiner (const hb_glyph_info_t &info)
151 return is_one_of (info, JOINER_FLAGS);
155 is_consonant (const hb_glyph_info_t &info)
157 return is_one_of (info, CONSONANT_FLAGS);
161 is_halant_or_coeng (const hb_glyph_info_t &info)
163 return is_one_of (info, HALANT_OR_COENG_FLAGS);
167 set_indic_properties (hb_glyph_info_t &info)
169 hb_codepoint_t u = info.codepoint;
259 info.indic_category() = cat;
260 info.indic_position() = pos;
638 hb_glyph_info_t *info = buffer->info;
640 set_indic_properties (info[i]);
677 hb_glyph_info_t *info = buffer->info;
679 if (info[i].indic_position() == POS_BASE_C)
681 hb_codepoint_t consonant = info[i].codepoint;
682 info[i].indic_position() = consonant_position_from_face (indic_plan, consonant, virama, face);
698 hb_glyph_info_t *info = buffer->info;
727 (indic_plan->config->reph_mode == REPH_MODE_IMPLICIT && !is_joiner (info[start + 2])) ||
728 (indic_plan->config->reph_mode == REPH_MODE_EXPLICIT && info[start + 2].indic_category() == OT_ZWJ)
732 hb_codepoint_t glyphs[3] = {info[start].codepoint,
733 info[start + 1].codepoint,
735 info[start + 2].codepoint : 0};
741 while (limit < end && is_joiner (info[limit]))
746 } else if (indic_plan->config->reph_mode == REPH_MODE_LOG_REPHA && info[start].indic_category() == OT_Repha)
749 while (limit < end && is_joiner (info[limit]))
769 if (is_consonant (info[i]))
773 if (info[i].indic_position() != POS_BELOW_C &&
774 (info[i].indic_position() != POS_POST_C || seen_below))
779 if (info[i].indic_position() == POS_BELOW_C)
802 info[i].indic_category() == OT_ZWJ &&
803 info[i - 1].indic_category() == OT_H)
823 if (is_consonant (info[i]))
825 if (limit < i && info[i - 1].indic_category() == OT_ZWJ)
833 if (is_consonant (info[i]))
834 info[i].indic_position() = POS_BELOW_C;
849 if (is_consonant (info[i]))
850 info[i].indic_position() = POS_BELOW_C;
902 info[i].indic_position() = MIN (POS_PRE_C, (indic_position_t) info[i].indic_position());
905 info[base].indic_position() = POS_BASE_C;
910 if (info[i].indic_category() == OT_M) {
912 if (is_consonant (info[j])) {
913 info[j].indic_position() = POS_FINAL_C;
921 info[start].indic_position() = POS_RA_TO_BECOME_REPH;
944 if (info[i].indic_category() == OT_H)
948 if (is_consonant (info[j]) ||
949 (disallow_double_halants && info[j].indic_category() == OT_H))
951 if (info[j].indic_category() != OT_H && j > i) {
953 hb_glyph_info_t t = info[i];
954 memmove (&info[i], &info[i + 1], (j - i) * sizeof (info[0]));
955 info[j] = t;
966 if ((FLAG (info[i].indic_category()) & (JOINER_FLAGS | FLAG (OT_N) | FLAG (OT_RS) | MEDIAL_FLAGS | HALANT_OR_COENG_FLAGS)))
968 info[i].indic_position() = last_pos;
969 if (unlikely (info[i].indic_category() == OT_H &&
970 info[i].indic_position() == POS_PRE_M))
982 if (info[j - 1].indic_position() != POS_PRE_M) {
983 info[i].indic_position() = info[j - 1].indic_position();
987 } else if (info[i].indic_position() != POS_SMVD) {
988 last_pos = (indic_position_t) info[i].indic_position();
997 if (is_consonant (info[i]))
1000 if (info[j].indic_position() < POS_SMVD)
1001 info[j].indic_position() = info[i].indic_position();
1003 } else if (info[i].indic_category() == OT_M)
1010 unsigned int syllable = info[start].syllable();
1012 info[i].syllable() = i - start;
1015 hb_bubble_sort (info + start, end - start, compare_indic_order);
1019 if (info[i].indic_position() == POS_BASE_C)
1035 if (info[i].syllable() != 255)
1038 unsigned int j = start + info[i].syllable();
1042 unsigned int next = start + info[j].syllable();
1043 info[j].syllable() = 255; /* So we don't process j later again. */
1053 info[i].syllable() = syllable;
1062 for (unsigned int i = start; i < end && info[i].indic_position() == POS_RA_TO_BECOME_REPH; i++)
1063 info[i].mask |= indic_plan->mask_array[RPHF];
1071 info[i].mask |= mask;
1075 info[base].mask |= mask;
1079 info[i].mask |= mask;
1104 if (info[i ].indic_category() == OT_Ra &&
1105 info[i+1].indic_category() == OT_H &&
1107 info[i+2].indic_category() != OT_ZWJ))
1109 info[i ].mask |= indic_plan->mask_array[BLWF];
1110 info[i+1].mask |= indic_plan->mask_array[BLWF];
1122 glyphs[j] = info[i + j].codepoint;
1126 info[i++].mask |= indic_plan->mask_array[PREF];
1136 info[i].mask |= indic_plan->mask_array[CFAR];
1145 if (is_joiner (info[i])) {
1146 bool non_joiner = info[i].indic_category() == OT_ZWNJ;
1158 info[j].mask &= ~indic_plan->mask_array[HALF];
1160 } while (j > start && !is_consonant (info[j]));
1189 if (buffer->info[end - 1].indic_category() == OT_DOTTEDCIRCLE)
1233 syllable_type_t syllable_type = (syllable_type_t) (buffer->info[start].syllable() & 0x0F);
1252 hb_glyph_info_t *info = buffer->info;
1254 if ((info[i].syllable() & 0x0F) == broken_cluster)
1284 hb_glyph_info_t info = dottedcircle;
1285 info.cluster = buffer->cur().cluster;
1286 info.mask = buffer->cur().mask;
1287 info.syllable() = buffer->cur().syllable();
1295 buffer->output_info (info);
1312 hb_glyph_info_t *info = buffer->info;
1316 unsigned int last_syllable = info[0].syllable();
1318 if (last_syllable != info[i].syllable()) {
1321 last_syllable = info[last].syllable();
1332 hb_glyph_info_t *info = buffer->info;
1344 if (info[i].codepoint == virama_glyph &&
1345 _hb_glyph_info_ligated (&info[i]) &&
1346 _hb_glyph_info_multiplied (&info[i]))
1349 info[i].indic_category() = OT_H;
1350 _hb_glyph_info_clear_ligated_and_multiplied (&info[i]);
1368 if (info[base].indic_position() >= POS_BASE_C)
1373 if ((info[i].mask & indic_plan->mask_array[PREF]) != 0)
1375 if (!(_hb_glyph_info_substituted (&info[i]) &&
1376 _hb_glyph_info_ligated_and_didnt_multiply (&info[i])))
1381 while (base < end && is_halant_or_coeng (info[base]))
1383 info[base].indic_position() = POS_BASE_C;
1391 if (start < base && info[base].indic_position() > POS_BASE_C)
1396 is_one_of (info[base - 1], FLAG (OT_ZWJ)))
1400 is_one_of (info[base], (FLAG (OT_N) | HALANT_OR_COENG_FLAGS)))
1426 !(is_one_of (info[new_pos], (FLAG (OT_M) | HALANT_OR_COENG_FLAGS))))
1432 if (is_halant_or_coeng (info[new_pos]) &&
1433 info[new_pos].indic_position() != POS_PRE_M)
1436 if (new_pos + 1 < end && is_joiner (info[new_pos + 1]))
1443 if (start < new_pos && info[new_pos].indic_position () != POS_PRE_M)
1447 if (info[i - 1].indic_position () == POS_PRE_M)
1450 hb_glyph_info_t tmp = info[old_pos];
1451 memmove (&info[old_pos], &info[old_pos + 1], (new_pos - old_pos) * sizeof (info[0]));
1452 info[new_pos] = tmp;
1460 if (info[i].indic_position () == POS_PRE_M) {
1487 info[start].indic_position() == POS_RA_TO_BECOME_REPH &&
1488 ((info[start].indic_category() == OT_Repha) ^
1489 _hb_glyph_info_ligated_and_didnt_multiply (&info[start])))
1517 while (new_reph_pos < base && !is_halant_or_coeng (info[new_reph_pos]))
1520 if (new_reph_pos < base && is_halant_or_coeng (info[new_reph_pos]))
1523 if (new_reph_pos + 1 < base && is_joiner (info[new_reph_pos + 1]))
1536 while (new_reph_pos + 1 < end && info[new_reph_pos + 1].indic_position() <= POS_AFTER_MAIN)
1552 !( FLAG (info[new_reph_pos + 1].indic_position()) & (FLAG (POS_POST_C) | FLAG (POS_AFTER_POST) | FLAG (POS_SMVD))))
1569 while (new_reph_pos < base && !is_halant_or_coeng (info[new_reph_pos]))
1572 if (new_reph_pos < base && is_halant_or_coeng (info[new_reph_pos]))
1575 if (new_reph_pos + 1 < base && is_joiner (info[new_reph_pos + 1]))
1585 while (new_reph_pos > start && info[new_reph_pos].indic_position() == POS_SMVD)
1596 unlikely (is_halant_or_coeng (info[new_reph_pos]))) {
1598 if (info[i].indic_category() == OT_M) {
1611 hb_glyph_info_t reph = info[start];
1612 memmove (&info[start], &info[start + 1], (new_reph_pos - start) * sizeof (info[0]));
1613 info[new_reph_pos] = reph;
1630 if ((info[i].mask & indic_plan->mask_array[PREF]) != 0)
1641 if (_hb_glyph_info_substituted (&info[i]) &&
1642 ((pref_len == 1) ^ _hb_glyph_info_ligated_and_didnt_multiply (&info[i])))
1660 !(is_one_of (info[new_pos - 1], FLAG(OT_M) | HALANT_OR_COENG_FLAGS)))
1665 if (new_pos > start && info[new_pos - 1].indic_category() == OT_M)
1669 if (info[i].indic_category() == OT_M)
1677 if (new_pos > start && is_halant_or_coeng (info[new_pos - 1]))
1680 if (new_pos < end && is_joiner (info[new_pos]))
1687 hb_glyph_info_t tmp = info[old_pos];
1688 memmove (&info[new_pos + 1], &info[new_pos], (old_pos - new_pos) * sizeof (info[0]));
1689 info[new_pos] = tmp;
1701 if (info[start].indic_position () == POS_PRE_M &&
1703 !(FLAG (_hb_glyph_info_get_general_category (&info[start - 1])) &
1705 info[start].mask |= indic_plan->mask_array[INIT];
1739 hb_glyph_info_t *info = buffer->info;
1741 unsigned int last_syllable = info[0].syllable();
1743 if (last_syllable != info[i].syllable()) {
1746 last_syllable = info[last].syllable();
1760 hb_glyph_info_t *info = buffer->info;
1763 info[i].syllable() = 0;