Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8301254

UNIX sun/font coding does not detect SuSE in openSUSE Leap distribution

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: P4 P4
    • 21
    • 19
    • client-libs
    • None
    • OS: openSUSE Leap 15.4
      JDK: jdk-19.0.2

    • 2d
    • b13
    • generic
    • other

      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.


      Steps to reproduce.

      - Download Oracle jdk-19.0.2
      - Copy the attached custom 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)
      ```

            alexsch Alexandr Scherbatiy
            alexsch Alexandr Scherbatiy
            Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

              Created:
              Updated:
              Resolved: