Lines Matching refs:chars
622 le_int32 IndicReordering::findSyllable(const IndicClassTable *classTable, const LEUnicode *chars, le_int32 prev, le_int32 charCount)
629 IndicClassTable::CharClass charClass = classTable->getCharClass(chars[cursor]);
650 le_int32 IndicReordering::reorder(const LEUnicode *chars, le_int32 charCount, le_int32 scriptCode,
679 le_int32 syllable = findSyllable(classTable, chars, prev, charCount);
684 if (classTable->isStressMark(chars[markStart - 1])) {
686 output.noteStressMark(classTable, chars[markStart], markStart, tagArray1);
689 if (markStart != prev && classTable->isVowelModifier(chars[markStart - 1])) {
691 output.noteVowelModifier(classTable, chars[markStart], markStart, tagArray1);
696 while (output.noteMatra(classTable, chars[matra], matra, tagArray1, !lastInWord) && matra != prev) {
702 switch (classTable->getCharClass(chars[prev]) & CF_CLASS_MASK) {
710 output.writeChar(chars[i], i, tagArray1);
718 output.writeChar(chars[prev], prev, tagArray1);
725 if (chars[prev - 1] != C_MALAYALAM_VOWEL_SIGN_U) {
729 output.writeChar(chars[prev], prev, tagArray1);
780 if (length > 2 && classTable->isReph(chars[prev]) && classTable->isVirama(chars[prev + 1]) && chars[prev + 2] != C_SIGN_ZWNJ) {
785 chars[baseLimit] == C_SIGN_ZWJ) {
794 while (lastConsonant > baseLimit && !classTable->isConsonant(chars[lastConsonant])) {
812 if (postBase < markStart && classTable->isNukta(chars[postBase])) {
820 charClass = classTable->getCharClass(chars[baseConsonant]);
828 (baseConsonant > baseLimit && !classTable->isVirama(chars[baseConsonant - 1])) ||
835 hasPreBaseForm && classTable->isVirama(chars[baseConsonant - 1])) {
836 output.notePreBaseConsonant(lastConsonant,chars[lastConsonant],chars[lastConsonant-1],tagArray2);
866 output.writeChar(chars[prev], prev, tagArray2);
867 output.writeChar(chars[prev + 1], prev + 1, tagArray2);
868 output.writeChar(chars[prev + 2], prev + 2, tagArray2);
877 LEUnicode ch = chars[i];
882 nextClass = classTable->getCharClass(chars[i + 1]);
891 } else if (IndicClassTable::isVirama(charClass) && chars[i + 1] == C_SIGN_ZWNJ)
901 if (bcSpan < markStart && classTable->isNukta(chars[bcSpan])) {
906 (classTable->isVirama(chars[bcSpan]) || classTable->isAlLakuna(chars[bcSpan]))) {
909 if (bcSpan < markStart && chars[bcSpan] == C_SIGN_ZWNJ) {
919 output.writeChar(chars[i], i, tagArray4);
932 output.writeChar(chars[i], i, tagArray1);
937 output.writeChar(chars[bcSpan], bcSpan, tagArray1);
950 output.writeChar(chars[prev], prev, tagArray0);
951 output.writeChar(chars[prev + 1], prev + 1, tagArray0);
963 output.writeChar(chars[i], i, tagArray3);
967 output.writeChar(chars[bcSpan], bcSpan, tagArray1);
971 if (lastConsonant < matra && classTable->isVirama(chars[matra])) {
972 output.writeChar(chars[matra], matra, tagArray4);
987 output.writeChar(chars[prev], prev, tagArray0);
988 output.writeChar(chars[prev + 1], prev + 1, tagArray0);
1098 le_int32 IndicReordering::v2process(const LEUnicode *chars, le_int32 charCount, le_int32 scriptCode,
1111 le_int32 nextSyllable = findSyllable(classTable, chars, beginSyllable, charCount);
1117 if ( classTable->isConsonant(chars[firstConsonant]) ) {
1130 if ( classTable->isConsonant(chars[baseConsonant]) &&
1131 !classTable->hasBelowBaseForm(chars[baseConsonant]) &&
1132 !classTable->hasPostBaseForm(chars[baseConsonant]) ) {
1136 if ( classTable->isConsonant(chars[baseConsonant]) ) {
1146 if ( classTable->isReph(chars[beginSyllable]) &&
1147 beginSyllable+1 < nextSyllable && classTable->isVirama(chars[beginSyllable+1]) &&
1157 if ( classTable->isVirama(chars[beginSyllable]) ||
1158 classTable->isMatra(chars[beginSyllable]) ||
1159 classTable->isVowelModifier(chars[beginSyllable]) ||
1160 classTable->isNukta(chars[beginSyllable]) ) {
1164 output.writeChar(chars[i],i, basicShapingFormsMask);
1180 if ( i == beginSyllable && i < baseConsonant && classTable->isReph(chars[i]) &&
1181 i+1 < nextSyllable && classTable->isVirama(chars[i+1])) {
1192 if ( classTable->isMatra(chars[i])) {
1194 if ( classTable->hasAboveBaseForm(chars[i])) {
1196 } else if ( classTable->hasBelowBaseForm(chars[i])) {
1204 if ( classTable->isVirama(chars[i]) && (i+1 == nextSyllable) ) {
1206 if ( classTable->isConsonant(chars[i-1]) ) {