21 return ConsumeConsonantHeadIfValid() && ConsumeConsonantTailIfValid();
24 return ConsumeVowelIfValid();
37 tprintf(
"Invalid start of grapheme sequence:%c=0x%x\n",
49 int base = static_cast<char32>(
script_);
64 if (off <= 0x3b || (0x58 <= off && off <= 0x5f))
103 bool ValidateIndic::ConsumeViramaIfValid(IndicPair joiner,
bool post_matra) {
104 const unsigned num_codes =
codes_.size();
131 tprintf(
"Virama ZWJ ZWNJ in non-Sinhala: base=0x%x!\n",
157 tprintf(
"Invalid pre-virama joiner with no 2nd consonant!!\n");
175 bool ValidateIndic::ConsumeConsonantHeadIfValid() {
176 const unsigned num_codes =
codes_.size();
181 int index =
output_.size() - 3;
187 bool have_nukta =
false;
194 index =
output_.size() - 2 - have_nukta;
214 output_.push_back(joiner.second);
217 tprintf(
"Skipping unnecessary joiner: 0x%x 0x%x 0x%x\n",
225 if (!ConsumeViramaIfValid(joiner,
false))
return false;
237 bool ValidateIndic::ConsumeConsonantTailIfValid() {
267 bool ValidateIndic::ConsumeVowelIfValid() {