diff --git a/modules/juce_graphics/native/juce_Direct2DGraphicsContext_windows.cpp b/modules/juce_graphics/native/juce_Direct2DGraphicsContext_windows.cpp index 4ffa939266..fbabbe8047 100644 --- a/modules/juce_graphics/native/juce_Direct2DGraphicsContext_windows.cpp +++ b/modules/juce_graphics/native/juce_Direct2DGraphicsContext_windows.cpp @@ -1680,7 +1680,16 @@ void Direct2DGraphicsContext::drawGlyphs (Span glyphNumbers, if (fontFace == nullptr) return; - const auto brush = currentState->getBrush (SavedState::BrushTransformFlags::applyFillTypeTransform); + const auto fontScale = font.getHorizontalScale(); + const auto scaledTransform = AffineTransform::scale (fontScale, 1.0f).followedBy (transform); + const auto glyphRunTransform = scaledTransform.followedBy (currentState->currentTransform.getTransform()); + const auto onlyTranslated = glyphRunTransform.isOnlyTranslation(); + + const auto fillTransform = onlyTranslated + ? SavedState::BrushTransformFlags::applyWorldAndFillTypeTransforms + : SavedState::BrushTransformFlags::applyFillTypeTransform; + + const auto brush = currentState->getBrush (fillTransform); if (! brush) return; @@ -1689,11 +1698,6 @@ void Direct2DGraphicsContext::drawGlyphs (Span glyphNumbers, D2D1_POINT_2F baselineOrigin { 0.0f, 0.0f }; - const auto fontScale = font.getHorizontalScale(); - const auto scaledTransform = AffineTransform::scale (fontScale, 1.0f).followedBy (transform); - const auto glyphRunTransform = scaledTransform.followedBy (currentState->currentTransform.getTransform()); - const auto onlyTranslated = glyphRunTransform.isOnlyTranslation(); - if (onlyTranslated) baselineOrigin = { glyphRunTransform.getTranslationX(), glyphRunTransform.getTranslationY() }; else