assert(offset < s.GetLength()); Char ch = s.GetChar(offset); Char modifier = (offset + 1 < s.GetLength() && isVariant(s.GetChar(offset + 1))) ? s.GetChar(offset + 1) : 0; return isNonMarkingChar(ch, modifier, spacing, breakability);
int index = getNonMarkingCharIndex(ch, modifier); if (index < 0) return 0; if (spacing != NULL) *spacing = nmChar[index].spacing; if (breakability != NULL) *breakability = nmChar[index].breakability; return (modifier != 0) ? 2 : 1;
unsigned isNonMarkingChar(const String& s, unsigned offset, int* spacing, BreakId* breakability){  assert(offset < s.GetLength());  Char ch = s.GetChar(offset);  Char modifier = (offset + 1 < s.GetLength() && isVariant(s.GetChar(offset + 1))) ? s.GetChar(offset + 1) : 0;  return isNonMarkingChar(ch, modifier, spacing, breakability);}