ex)
TextLabel label = TextLabel::New("‏20‏/‏11‏/‏2018‏" );
or
TextLabel label = TextLabel::New("‏20&‏/‏11‏/‏2018‏");
should be displayed not "20/11/2018" but "2018/11/20"
refer)
https://www.w3schools.com/cssref/tryit.asp?filename=trycss_text_direction
Change-Id: Iab595aedc691afbfd53f4b75c5eab4d58b26b59f
- if( !hasRightToLeftScript && TextAbstraction::IsRightToLeftScript( scriptRun.script ) )
+ if( !hasRightToLeftScript && scriptRun.isRightToLeft )
{
// The script is right to left.
hasRightToLeftScript = true;
{
// The script is right to left.
hasRightToLeftScript = true;
// Pointers to the text buffer.
const Character* const textBuffer = text.Begin();
// Pointers to the text buffer.
const Character* const textBuffer = text.Begin();
+ // Initialize whether is right to left direction
+ currentScriptRun.isRightToLeft = false;
+
// Traverse all characters and set the scripts.
const Length lastCharacter = startIndex + numberOfCharacters;
for( Length index = startIndex; index < lastCharacter; ++index )
// Traverse all characters and set the scripts.
const Length lastCharacter = startIndex + numberOfCharacters;
for( Length index = startIndex; index < lastCharacter; ++index )
while( !endOfText &&
( TextAbstraction::COMMON == script ) )
{
while( !endOfText &&
( TextAbstraction::COMMON == script ) )
{
+ // Check if whether is right to left markup and Keeps true if the previous value was true.
+ currentScriptRun.isRightToLeft = currentScriptRun.isRightToLeft || TextAbstraction::IsRightToLeftMark( character );
+
if( TextAbstraction::EMOJI == currentScriptRun.script )
{
// Emojis doesn't mix well with characters common to all scripts. Insert the emoji run.
if( TextAbstraction::EMOJI == currentScriptRun.script )
{
// Emojis doesn't mix well with characters common to all scripts. Insert the emoji run.
currentScriptRun.characterRun.numberOfCharacters = 0u;
currentScriptRun.script = TextAbstraction::UNKNOWN;
numberOfAllScriptCharacters = 0u;
currentScriptRun.characterRun.numberOfCharacters = 0u;
currentScriptRun.script = TextAbstraction::UNKNOWN;
numberOfAllScriptCharacters = 0u;
+ // Initialize whether is right to left direction
+ currentScriptRun.isRightToLeft = false;
}
// Get the next character.
}
// Get the next character.
( TextAbstraction::EMOJI != script ) )
{
// Sets the direction of the first valid script.
( TextAbstraction::EMOJI != script ) )
{
// Sets the direction of the first valid script.
- isParagraphRTL = TextAbstraction::IsRightToLeftScript( script );
+ isParagraphRTL = currentScriptRun.isRightToLeft || TextAbstraction::IsRightToLeftScript( script );
isFirstScriptToBeSet = false;
}
isFirstScriptToBeSet = false;
}
currentScriptRun.characterRun.numberOfCharacters = numberOfAllScriptCharacters + 1u; // Adds the white spaces which are at the begining of the script.
currentScriptRun.script = script;
numberOfAllScriptCharacters = 0u;
currentScriptRun.characterRun.numberOfCharacters = numberOfAllScriptCharacters + 1u; // Adds the white spaces which are at the begining of the script.
currentScriptRun.script = script;
numberOfAllScriptCharacters = 0u;
+ // Check if whether is right to left script.
+ currentScriptRun.isRightToLeft = TextAbstraction::IsRightToLeftScript( currentScriptRun.script );
{
CharacterRun characterRun; ///< The initial character index and the number of characters of the run.
Script script; ///< Script of the run.
{
CharacterRun characterRun; ///< The initial character index and the number of characters of the run.
Script script; ///< Script of the run.
+ bool isRightToLeft; ///< Whether is right to left direction