From c26ff2da6b569700fae0047ce2979cff9b9166bb Mon Sep 17 00:00:00 2001 From: ed Date: Wed, 1 Sep 2021 12:03:05 +0100 Subject: [PATCH] DirectWrite: Don't skip newline glyph runs when performing text layout --- .../native/juce_win32_DirectWriteTypeLayout.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/modules/juce_graphics/native/juce_win32_DirectWriteTypeLayout.cpp b/modules/juce_graphics/native/juce_win32_DirectWriteTypeLayout.cpp index 437a47b53a..189138d0c6 100644 --- a/modules/juce_graphics/native/juce_win32_DirectWriteTypeLayout.cpp +++ b/modules/juce_graphics/native/juce_win32_DirectWriteTypeLayout.cpp @@ -90,9 +90,17 @@ namespace DirectWriteTypeLayout DWRITE_GLYPH_RUN const* glyphRun, DWRITE_GLYPH_RUN_DESCRIPTION const* runDescription, IUnknown* clientDrawingEffect) noexcept override { - const String runString (runDescription->string, runDescription->stringLength); + const auto containsTextOrNewLines = [runDescription] + { + const String runString (runDescription->string, runDescription->stringLength); - if (! runString.containsNonWhitespaceChars()) + if (runString.containsNonWhitespaceChars() || runString.containsAnyOf ("\n\r")) + return true; + + return false; + }(); + + if (! containsTextOrNewLines) return S_OK; auto layout = static_cast (clientDrawingContext);