X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=dali-toolkit%2Finternal%2Ftext%2Fshaper.cpp;h=c236d28e68c24f911850beca9dd9a7299b61434e;hp=c0c45fd109f2d1ae55a8ff3791dd803614ed0657;hb=b398ab61279f2fe1e96f7567cecb123c25e2edb1;hpb=3b1fb566901d21b8303d9be3308e3920f5182e6d diff --git a/dali-toolkit/internal/text/shaper.cpp b/dali-toolkit/internal/text/shaper.cpp index c0c45fd..c236d28 100644 --- a/dali-toolkit/internal/text/shaper.cpp +++ b/dali-toolkit/internal/text/shaper.cpp @@ -19,14 +19,14 @@ #include // EXTERNAL INCLUDES -#include -#include +#include +#include // INTERNAL INCLUDES #include -#include +#include #include -#include +#include namespace Dali { @@ -131,11 +131,17 @@ void ShapeText( const Vector& text, } } - // Check if the current index is a white space. Do not want to shape a \n. + // Check if the current index is a new paragraph character. + // A \n is going to be shaped in order to not to mess the conversion tables. + // After the \n character is shaped, the glyph is going to be reset to its + // default in order to not to get any metric or font index for it. + const bool isNewParagraph = TextAbstraction::IsNewParagraph( *( textBuffer + currentIndex ) ); + // The last character is always a must-break even if it's not a \n. Length numberOfCharactersToShape = currentIndex - previousIndex; - if( mustBreak && !TextAbstraction::IsWhiteSpace( *( textBuffer + currentIndex ) ) ) + if( mustBreak ) { + // Add one more character to shape. ++numberOfCharactersToShape; } @@ -164,6 +170,18 @@ void ShapeText( const Vector& text, shaping.GetGlyphs( glyphsBuffer + glyphIndex, glyphToCharacterMapBuffer + glyphIndex ); + if( isNewParagraph ) + { + // TODO : This is a work around to avoid drawing a square in the + // place of a new line character. + + // If the last character is a \n, it resets the glyph to the default + // to avoid getting any metric for it. + GlyphInfo& glyph = *( glyphsBuffer + glyphIndex + ( numberOfGlyphs - 1u ) ); + + glyph = GlyphInfo(); + } + // Update indices. if( 0u != glyphIndex ) {