From: sapier Date: Thu, 19 Jun 2014 21:02:09 +0000 (+0200) Subject: Fix newline not handled to to interpreting it as invisible char X-Git-Url: http://81.2.79.47:8989/gitweb/?a=commitdiff_plain;h=3a9cf216641aeb4f16570c69e3df760108b7c9e8;p=zefram%2Fminetest%2Fminetest_engine.git Fix newline not handled to to interpreting it as invisible char --- 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); - 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;