+ if(!inserted)
+ {
+ if(!isTailMode && indexOfEllipsis < numberOfGlyphs - 1u)
+ {
+ // Tail Mode: remove glyphs from startIndexOfEllipsis then decrement indexOfEllipsis, until arrive to index zero.
+ ++indexOfEllipsis;
+ }
+ else if(isTailMode && indexOfEllipsis > 0u)
+ {
+ // Not Tail Mode: remove glyphs from startIndexOfEllipsis then increase indexOfEllipsis, until arrive to last index (numberOfGlyphs - 1u).
+ --indexOfEllipsis;
+ }
+ else
+ {
+ // No space for the ellipsis.
+ inserted = true;
+ }
+ ++numberOfRemovedGlyphs;
+ }
+ } // while( !inserted )
+
+ //Reduce size, shift glyphs and start from ellipsis glyph
+ Length numberOfElidedGlyphs = numberOfActualLaidOutGlyphs - numberOfRemovedGlyphs;
+ mElidedGlyphs.Resize(numberOfElidedGlyphs);
+ mElidedLayout.Resize(numberOfElidedGlyphs);
+
+ if(ellipsisPosition == DevelText::EllipsisPosition::START)
+ {
+ // 'Shifts' glyphs after ellipsis glyph and 'Removes' before ellipsis glyph
+ memcpy(elidedGlyphsBuffer, elidedGlyphsBuffer + indexOfEllipsis, numberOfElidedGlyphs * sizeof(GlyphInfo));
+ memcpy(elidedPositionsBuffer, elidedPositionsBuffer + indexOfEllipsis, numberOfElidedGlyphs * sizeof(Vector2));
+
+ mStartIndexOfElidedGlyphs = mFirstMiddleIndexOfElidedGlyphs = mSecondMiddleIndexOfElidedGlyphs = indexOfEllipsis;
+ }
+ else if(ellipsisPosition == DevelText::EllipsisPosition::MIDDLE)