if(index < mEventData->mPrimaryCursorPosition)
{
- cursorIndex = cursorIndex < numberOfCharacters ? 0u : cursorIndex - numberOfCharacters;
+ cursorIndex -= numberOfCharacters;
}
else
{
- Length textLength = mModel->mVisualModel->mCharactersToGlyph.Count();
- cursorIndex = cursorIndex + numberOfCharacters > textLength ? textLength : cursorIndex + numberOfCharacters;
+ cursorIndex += numberOfCharacters;
}
// Will update the cursor hook position.
Vector<ScriptRun>::ConstIterator scriptRunEndIt = scripts.End();
bool isNewParagraphCharacter = false;
+ FontId previousEmojiFontId = 0u;
FontId currentFontId = 0u;
FontId previousFontId = 0u;
TextAbstraction::Script previousScript = TextAbstraction::UNKNOWN;
isValidFont = fontClient.IsCharacterSupportedByFont(fontId, character);
}
- bool isEmojiScript = IsEmojiColorScript(script) || IsEmojiTextScript(script);
- bool isZWJ = TextAbstraction::IsZeroWidthJoiner(character);
+ bool isCommonScript = false;
+ bool isEmojiScript = TextAbstraction::IsOneOfEmojiScripts(script);
- if((previousScript == script) &&
- (isEmojiScript || isZWJ))
+ if(isEmojiScript && (previousScript == script))
{
- // This sequence should use the previous font.
- if(0u != previousFontId)
+ // Emoji sequence should use the previous emoji font.
+ if(0u != previousEmojiFontId)
{
- fontId = previousFontId;
+ fontId = previousEmojiFontId;
isValidFont = true;
}
}
isValidFont = true;
}
- // This is valid after CheckFontSupportsCharacter();
- bool isCommonScript = false;
-
// If the given font is not valid, it means either:
// - there is no cached font for the current script yet or,
// - the user has set a different font than the default one for the current script or,
}
}
+ // Store the font id when the first character is an emoji.
+ if(isEmojiScript)
+ {
+ if(0u != fontId && previousScript != script)
+ {
+ previousEmojiFontId = fontId;
+ }
+ }
+ else
+ {
+ previousEmojiFontId = 0u;
+ }
+
#ifdef DEBUG_ENABLED
if(gLogFilter->IsEnabledFor(Debug::Verbose))
{
// Whether the current character is a new paragraph character.
isNewParagraphCharacter = TextAbstraction::IsNewParagraph(character);
previousScript = script;
- currentFontId = fontId;
previousFontId = currentFontId;
} // end traverse characters.