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 | 48 +++++++++++++++++------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/src/cguittfont/CGUITTFont.cpp b/src/cguittfont/CGUITTFont.cpp index 9a702cad..73a126a9 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); + 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; + } + + 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 (n > 0 && visible) { - 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; - } - - 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; - } - // Calculate the glyph offset. s32 offx = Glyphs[n-1].offset.X; s32 offy = (font_metrics.ascender / 64) - Glyphs[n-1].offset.Y;