unsigned SimpleShaper::advance(unsigned offset, GlyphBuffer* glyphBuffer) { unsigned length = m_run.length(); if (offset > length) offset = length; if (m_currentCharacter >= offset) return 0; if (m_run.is8Bit()) { Latin1TextIterator textIterator(m_run.data8(m_currentCharacter), m_currentCharacter, offset, length); return advanceInternal(textIterator, glyphBuffer); } SurrogatePairAwareTextIterator textIterator(m_run.data16(m_currentCharacter), m_currentCharacter, offset, length); return advanceInternal(textIterator, glyphBuffer); }
unsigned WidthIterator::advance(int offset, GlyphBuffer* glyphBuffer) { int length = m_run.length(); if (offset > length) offset = length; if (m_currentCharacter >= static_cast<unsigned>(offset)) return 0; if (m_run.is8Bit()) { Latin1TextIterator textIterator(m_run.data8(m_currentCharacter), m_currentCharacter, offset, length); return advanceInternal(textIterator, glyphBuffer); } SurrogatePairAwareTextIterator textIterator(m_run.data16(m_currentCharacter), m_currentCharacter, offset, length); return advanceInternal(textIterator, glyphBuffer); }
unsigned SimpleShaper::advance(int offset, GlyphBuffer* glyphBuffer) { int length = m_textRun.length(); if (offset > length) offset = length; if (m_currentCharacter >= static_cast<unsigned>(offset)) return 0; if (m_textRun.is8Bit()) { Latin1TextIterator textIterator(m_textRun.data8(m_currentCharacter), m_currentCharacter, offset); return advanceInternal(textIterator, glyphBuffer); } UTF16TextIterator textIterator(m_textRun.data16(m_currentCharacter), m_currentCharacter, offset, length); return advanceInternal(textIterator, glyphBuffer); }