On Fri, 13 Sep 2024 14:41:48 GMT, Daniel Gredler <d...@openjdk.org> wrote:
>> There is a bug in `TextLayout.getOutline(AffineTransform)`, where the >> transformation is applied too early (before the layout path applies its >> mapping). The most obvious error caused by this bug is that >> `Graphics2D.drawString(...)` fails to draw the string when using a rotated + >> scaled `AffineTransform` (see minimal test case in the bug report). >> >> There are two uses of `TextLayout.getOutline(AffineTransform)`: the first >> one, triggered via a simple `Graphics2D.drawString(...)` was the one I ran >> into; the second one requires the use of a transformed font with a >> `PSPrinterJob`. Both are broken. This PR includes two test classes verifying >> that both scenarios were broken before the fix and are working after the fix. >> >> Two points which might require some discussion: >> 1. I've changed the signature of method >> `TextLine.getOutline(AffineTransform)`, to just `TextLine.getOutline()`; I'm >> assuming this is OK since `TextLine` is a package-private class. >> 2. I've added a fast path in `TextLayout.getOutline(AffineTransform)` to >> transform the shape in place if it is a `GeneralPath` (it should usually be, >> and avoids an extra `Shape` copy vs. the current code, which makes no copy). >> A bit more complex, but efficient. > > Daniel Gredler has updated the pull request incrementally with one additional > commit since the last revision: > > Add bug ID and summary to test classes @prrace Do you have some time to review this PR? Would love to wrap this one up in the next week or two. Thanks! ------------- PR Comment: https://git.openjdk.org/jdk/pull/20993#issuecomment-2371107247