RFR: 8316206: Test StretchedFontTest.java fails for Baekmuk font [v2]

Alexey Ivanov aivanov at openjdk.org
Wed Sep 20 14:19:41 UTC 2023


On Wed, 20 Sep 2023 14:07:17 GMT, Alexey Ivanov <aivanov at openjdk.org> wrote:

>> **Root cause**
>> 
>> The _Baekmuk Headline_ font maps `\u6f22` (漢) to glyph id 16950 which has zero length.
>> 
>> The test fails if the right half of the image with the rendered glyph contains only pixels of background colour. In this case, the left half of the image is also blank. It's somewhat false positive because of the broken font.
>> 
>> **Fix**
>> 
>> Ignore fonts which don't render the glyph correctly. If the left half of the image contains pixels of the background colour only, it is expected that the right half also contains background-coloured pixels only.
>> 
>> The updated test does not fail with the _Baekmuk Headline_ font. It still detects the original problem and fails on builds without the fix for [JDK-8312555](https://bugs.openjdk.org/browse/JDK-8312555).
>
> Alexey Ivanov has updated the pull request incrementally with one additional commit since the last revision:
> 
>   8316206: Use GlyphVector.getVisualBounds().isEmpty()
>   
>   Filter out broken fonts by GlyphVector.getVisualBounds().isEmpty()

> I was thinking of a more direct font-oriented verification like this
>
> ```java
> import java.awt.*;
> import java.awt.font.*;
> 
> public class GO {
>     public static void main(String args[]) {
>         Font font = new Font(Font.SANS_SERIF, Font.PLAIN, 20);
>         FontRenderContext frc = new FontRenderContext(null, false, false);
>         GlyphVector gv = font.createGlyphVector(frc, "o");
>         boolean empty = gv.getVisualBounds().isEmpty();
>         System.out.println("empty="+empty);
>     }
> }
> ```
> ```text
> % java GO
> empty=true
> ```

@prrace Thank you! It's a much cleaner approach. I've updated the PR.

When I run the test on Linux with, I get the a diagnostic message:

~/work/jdk-dev$ ~/dev/tools/jdk20/bin/java test/jdk/java/awt/Font/FontScaling/StretchedFontTest.java
Broken font: Baekmuk Headline

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

PR Comment: https://git.openjdk.org/jdk/pull/15818#issuecomment-1727824472


More information about the client-libs-dev mailing list