On Tue, 8 Oct 2024 17:41:31 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:
> 
>   Save image to test.classes dir, remove path from messages

We require 2 reviewers for all but 'trivial' changes.
Someone needs to be the 2nd reviewer for this.
@prsadhuk or @azvegint or @jayathirthrao ?

-------------

Marked as reviewed by prr (Reviewer).

PR Review: https://git.openjdk.org/jdk/pull/20993#pullrequestreview-2355207860

Reply via email to