Fix newline not handled to to interpreting it as invisible char
authorsapier <Sapier at GMX dot net>
Thu, 19 Jun 2014 21:02:09 +0000 (23:02 +0200)
committersapier <Sapier at GMX dot net>
Thu, 19 Jun 2014 21:02:09 +0000 (23:02 +0200)
src/cguittfont/CGUITTFont.cpp

index 9a702cad7d79f5282b85bbe1c0aee63e4cc199fa..73a126a9f9d966ef231b3bc2f931c73d0d0ef00e 100644 (file)
@@ -568,32 +568,32 @@ void CGUITTFont::draw(const core::stringw& text, const core::rect<s32>& position
                uchar32_t currentChar = *iter;
                n = getGlyphIndexByChar(currentChar);
                bool visible = (Invisible.findFirst(currentChar) == -1);
-               if (n > 0 && visible)
+               bool lineBreak=false;
+               if (currentChar == L'\r') // Mac or Windows breaks
                {
-                       bool lineBreak=false;
-                       if (currentChar == L'\r') // Mac or Windows breaks
-                       {
-                               lineBreak = true;
-                               if (*(iter + 1) == (uchar32_t)'\n')     // Windows line breaks.
-                                       currentChar = *(++iter);
-                       }
-                       else if (currentChar == (uchar32_t)'\n') // Unix breaks
-                       {
-                               lineBreak = true;
-                       }
+                       lineBreak = true;
+                       if (*(iter + 1) == (uchar32_t)'\n')     // Windows line breaks.
+                               currentChar = *(++iter);
+               }
+               else if (currentChar == (uchar32_t)'\n') // Unix breaks
+               {
+                       lineBreak = true;
+               }
 
-                       if (lineBreak)
-                       {
-                               previousChar = 0;
-                               offset.Y += font_metrics.ascender / 64;
-                               offset.X = position.UpperLeftCorner.X;
+               if (lineBreak)
+               {
+                       previousChar = 0;
+                       offset.Y += font_metrics.ascender / 64;
+                       offset.X = position.UpperLeftCorner.X;
 
-                               if (hcenter)
-                                       offset.X += (position.getWidth() - textDimension.Width) >> 1;
-                               ++iter;
-                               continue;
-                       }
+                       if (hcenter)
+                               offset.X += (position.getWidth() - textDimension.Width) >> 1;
+                       ++iter;
+                       continue;
+               }
 
+               if (n > 0 && visible)
+               {
                        // Calculate the glyph offset.
                        s32 offx = Glyphs[n-1].offset.X;
                        s32 offy = (font_metrics.ascender / 64) - Glyphs[n-1].offset.Y;