RFR: 8301254: UNIX sun/font coding does not detect SuSE in openSUSE Leap distribution [v2]

Patrick Chen chen.j.patrick at gmail.com
Tue Jan 31 13:50:05 UTC 2023


anyone can unsubscribe or ban me ? spam

Le mar. 31 janv. 2023 à 10:21, Alexander Scherbatiy <alexsch at openjdk.org> a
écrit :

> On Fri, 27 Jan 2023 17:00:48 GMT, Alexander Scherbatiy <
> alexsch at openjdk.org> wrote:
>
> >> [JDK-8278549](https://bugs.openjdk.org/browse/JDK-8278549)`
> <https://bugs.openjdk.org/browse/JDK-8278549)> UNIX sun/font coding
> misses SUSE distro detection on recent distro SUSE 15` adds SuSE detection
> by checking SLES os name property in `/etc/os-release` file.
> >>
> >> `opensuse/leap:15.4` docker defines os name property as `"openSUSE
> Leap"` in `/etc/os-release` file which is not recognized as SuSE.
> >>
> >> The issue is reproduced with Oracle jdk-19.0.2 with custom
> fontconfig.SuSE.properties file copied to jdk-19.0.2/lib directory.
> >>
> >> The fix checks if os name property from  `/etc/os-release` contains
> `SUSE`  substring.
> >>
> >> Steps to reproduce.
> >> - Download Oracle jdk-19.0.2
> >> - Copy custom [fontconfig.SuSE.properties](
> https://bugs.openjdk.org/secure/attachment/102435/fontconfig.SuSE.properties)
> file to jdk-19.0.2/lib directory.
> >> - Run the `opensuse/leap:15.4` docker and install freetype and dejavu
> fonts (do not install fontconfig)
> >>
> >> docker run --rm --security-opt seccomp=unconfined -it
> opensuse/leap:15.4 bash
> >> zypper install -y dejavu-fonts
> >> zypper install -y freetype2
> >>
> >> - Run HelloImage java sample in the docker
> >>
> >> import javax.imageio.ImageIO;
> >> import java.awt.*;
> >> import java.awt.image.BufferedImage;
> >> import java.io.File;
> >>
> >> public class HelloImage {
> >>
> >>     public static void main(String[] args) throws Exception {
> >>
> >>         BufferedImage buff = new BufferedImage(300, 200,
> BufferedImage.TYPE_INT_RGB);
> >>         Graphics2D g = buff.createGraphics();
> >>         g.setColor(Color.WHITE);
> >>         g.fillRect(0, 0, buff.getWidth(), buff.getHeight());
> >>
> >>         g.setColor(Color.BLUE);
> >>         g.setFont(g.getFont().deriveFont(32f));
> >>         g.drawString("Hello, Image!", 50, 50);
> >>         g.dispose();
> >>
> >>         File file = new File("hello-image.png");
> >>         ImageIO.write(buff, "png", file);
> >>     }
> >> }
> >>
> >>
> >>
> >> ./jdk-19.0.2/bin/javac HelloImage.java
> >> ./jdk-19.0.2/bin/java HelloImage
> >> Exception in thread "main" java.lang.NullPointerException: Cannot load
> from short array because "sun.awt.FontConfiguration.head" is null
> >>      at
> java.desktop/sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1261)
> >>      at
> java.desktop/sun.awt.FontConfiguration.readFontConfigFile(FontConfiguration.java:221)
> >>      at
> java.desktop/sun.awt.FontConfiguration.init(FontConfiguration.java:105)
> >>      at
> java.desktop/sun.awt.X11FontManager.createFontConfiguration(X11FontManager.java:706)
> >>      at
> java.desktop/sun.font.SunFontManager$2.run(SunFontManager.java:352)
> >>      at
> java.desktop/sun.font.SunFontManager$2.run(SunFontManager.java:309)
> >>      at
> java.base/java.security.AccessController.doPrivileged(AccessController.java:318)
> >>      at
> java.desktop/sun.font.SunFontManager.<init>(SunFontManager.java:309)
> >>      at java.desktop/sun.awt.FcFontManager.<init>(FcFontManager.java:35)
> >>      at
> java.desktop/sun.awt.X11FontManager.<init>(X11FontManager.java:56)
> >>      at
> java.desktop/sun.font.PlatformFontInfo.createFontManager(PlatformFontInfo.java:37)
> >>      at
> java.desktop/sun.font.FontManagerFactory.getInstance(FontManagerFactory.java:51)
> >>      at java.desktop/java.awt.Font.getFont2D(Font.java:526)
> >>      at
> java.desktop/java.awt.Font$FontAccessImpl.getFont2D(Font.java:265)
> >>      at
> java.desktop/sun.font.FontUtilities.getFont2D(FontUtilities.java:151)
> >>      at
> java.desktop/sun.java2d.SunGraphics2D.checkFontInfo(SunGraphics2D.java:671)
> >>      at
> java.desktop/sun.java2d.SunGraphics2D.getFontInfo(SunGraphics2D.java:837)
> >>      at
> java.desktop/sun.java2d.pipe.GlyphListPipe.drawString(GlyphListPipe.java:46)
> >>      at
> java.desktop/sun.java2d.SunGraphics2D.drawString(SunGraphics2D.java:2931)
> >>      at HelloImage.main(HelloImage.java:17)
> >
> > Alexander Scherbatiy has updated the pull request incrementally with one
> additional commit since the last revision:
> >
> >   Revert back empty line removing
>
> May be it has sense to add  a property file which maps OS name used in
> fontconfig files to OS  names from 'os-release` file.
> Something like this:
>
> SuSE=SLES,opensuse-leap,opensuse-tumbleweed
>
> -------------
>
> PR: https://git.openjdk.org/jdk/pull/12260
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/client-libs-dev/attachments/20230131/bed8ad57/attachment.htm>


More information about the client-libs-dev mailing list