On Fri, 27 Jan 2023 17:00:48 GMT, Alexander Scherbatiy <alex...@openjdk.org> wrote:
>> [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 Marked as reviewed by swi...@github.com (no known OpenJDK username). ------------- PR: https://git.openjdk.org/jdk/pull/12260