Lines Matching full:chars
562 le_int32 IndicReordering::findSyllable(const IndicClassTable *classTable, const LEUnicode *chars, le_int32 prev, le_int32 charCount)
568 IndicClassTable::CharClass charClass = classTable->getCharClass(chars[cursor]);
582 le_int32 IndicReordering::reorder(const LEUnicode *chars, le_int32 charCount, le_int32 scriptCode,
606 le_int32 syllable = findSyllable(classTable, chars, prev, charCount);
611 if (classTable->isStressMark(chars[markStart - 1])) {
613 output.noteStressMark(classTable, chars[markStart], markStart, tagArray1);
616 if (markStart != prev && classTable->isVowelModifier(chars[markStart - 1])) {
618 output.noteVowelModifier(classTable, chars[markStart], markStart, tagArray1);
623 while (output.noteMatra(classTable, chars[matra], matra, tagArray1, !lastInWord) && matra != prev) {
629 switch (classTable->getCharClass(chars[prev]) & CF_CLASS_MASK) {
637 output.writeChar(chars[i], i, tagArray1);
645 output.writeChar(chars[prev], prev, tagArray1);
652 if (chars[prev - 1] != C_MALAYALAM_VOWEL_SIGN_U) {
656 output.writeChar(chars[prev], prev, tagArray1);
707 if (length > 2 && classTable->isReph(chars[prev]) && classTable->isVirama(chars[prev + 1]) && chars[prev + 2] != C_SIGN_ZWNJ) {
712 chars[baseLimit] == C_SIGN_ZWJ) {
721 while (lastConsonant > baseLimit && !classTable->isConsonant(chars[lastConsonant])) {
736 if (postBase < markStart && classTable->isNukta(chars[postBase])) {
744 charClass = classTable->getCharClass(chars[baseConsonant]);
751 (baseConsonant > baseLimit && !classTable->isVirama(chars[baseConsonant - 1])) ||
782 output.writeChar(chars[prev], prev, tagArray2);
783 output.writeChar(chars[prev + 1], prev + 1, tagArray2);
784 output.writeChar(chars[prev + 2], prev + 2, tagArray2);
791 LEUnicode ch = chars[i];
796 nextClass = classTable->getCharClass(chars[i + 1]);
805 } else if (IndicClassTable::isVirama(charClass) && chars[i + 1] == C_SIGN_ZWNJ)
815 if (bcSpan < markStart && classTable->isNukta(chars[bcSpan])) {
820 (classTable->isVirama(chars[bcSpan]) || classTable->isAlLakuna(chars[bcSpan]))) {
823 if (bcSpan < markStart && chars[bcSpan] == C_SIGN_ZWNJ) {
833 output.writeChar(chars[i], i, tagArray4);
846 output.writeChar(chars[i], i, tagArray1);
851 output.writeChar(chars[bcSpan], bcSpan, tagArray1);
864 output.writeChar(chars[prev], prev, tagArray0);
865 output.writeChar(chars[prev + 1], prev + 1, tagArray0);
877 output.writeChar(chars[i], i, tagArray3);
881 output.writeChar(chars[bcSpan], bcSpan, tagArray1);
885 if (lastConsonant < matra && classTable->isVirama(chars[matra])) {
886 output.writeChar(chars[matra], matra, tagArray4);
901 output.writeChar(chars[prev], prev, tagArray0);
902 output.writeChar(chars[prev + 1], prev + 1, tagArray0);
1012 le_int32 IndicReordering::v2process(const LEUnicode *chars, le_int32 charCount, le_int32 scriptCode,
1025 le_int32 nextSyllable = findSyllable(classTable, chars, beginSyllable, charCount);
1031 if ( classTable->isConsonant(chars[firstConsonant]) ) {
1044 if ( classTable->isConsonant(chars[baseConsonant]) &&
1045 !classTable->hasBelowBaseForm(chars[baseConsonant]) &&
1046 !classTable->hasPostBaseForm(chars[baseConsonant]) ) {
1050 if ( classTable->isConsonant(chars[baseConsonant]) ) {
1060 if ( classTable->isReph(chars[beginSyllable]) &&
1061 beginSyllable+1 < nextSyllable && classTable->isVirama(chars[beginSyllable+1]) &&
1071 if ( classTable->isVirama(chars[beginSyllable]) ||
1072 classTable->isMatra(chars[beginSyllable]) ||
1073 classTable->isVowelModifier(chars[beginSyllable]) ||
1074 classTable->isNukta(chars[beginSyllable]) ) {
1078 output.writeChar(chars[i],i, basicShapingFormsMask);
1094 if ( i == beginSyllable && i < baseConsonant && classTable->isReph(chars[i]) &&
1095 i+1 < nextSyllable && classTable->isVirama(chars[i+1])) {
1106 if ( classTable->isMatra(chars[i])) {
1108 if ( classTable->hasAboveBaseForm(chars[i])) {
1110 } else if ( classTable->hasBelowBaseForm(chars[i])) {
1118 if ( classTable->isVirama(chars[i]) && (i+1 == nextSyllable) ) {
1120 if ( classTable->isConsonant(chars[i-1]) ) {