From 3a9cf216641aeb4f16570c69e3df760108b7c9e8 Mon Sep 17 00:00:00 2001 From: sapier Date: Thu, 19 Jun 2014 23:02:09 +0200 Subject: [PATCH] Fix newline not handled to to interpreting it as invisible char --- src/cguittfont/CGUITTFont.cpp | 44 +++++++++++++++++------------------ 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/src/cguittfont/CGUITTFont.cpp b/src/cguittfont/CGUITTFont.cpp index 9a702cad7..73a126a9f 100644 --- a/src/cguittfont/CGUITTFont.cpp +++ b/src/cguittfont/CGUITTFont.cpp @@ -568,32 +568,32 @@ void CGUITTFont::draw(const core::stringw& text, const core::rect& 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; -- 2.25.1