Originally there were some bundled fonts used as a fallback in such
cases. They were removed because of license issues during the
transition from closed JDK to open JDK. Maybe it's time to reconsider
that decision and provide some license-compatible fonts for that
purpose.

Best Regards,
Alexey

On Wed, 2023-03-15 at 16:10 +0000, Matthias Baesken wrote:
> On Linux Alpine we were running in the jtreg awt tests into a lot of
> NPEs like this :
> 
> java.lang.InternalError: java.lang.reflect.InvocationTargetException
> at
> java.desktop/sun.font.FontManagerFactory$1.run(FontManagerFactory.jav
> a:87)
> at
> java.base/java.security.AccessController.doPrivileged(AccessControlle
> r.java:318)
> at
> java.desktop/sun.font.FontManagerFactory.getInstance(FontManagerFacto
> ry.java:75)
> 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:148)
> at
> java.desktop/sun.font.GlyphLayout$SDCache.<init>(GlyphLayout.java:254
> )
> at
> java.desktop/sun.font.GlyphLayout$SDCache.get(GlyphLayout.java:328)
> at java.desktop/sun.font.GlyphLayout.layout(GlyphLayout.java:375)
> at java.desktop/java.awt.Font.layoutGlyphVector(Font.java:2858)
> at FontLayoutStressTest.doLayout(FontLayoutStressTest.java:51)
> at FontLayoutStressTest.main(FontLayoutStressTest.java:57)
> at
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Nativ
> e Method)
> at
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Native
> MethodAccessorImpl.java:77)
> at
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(De
> legatingMethodAccessorImpl.java:43)
> at java.base/java.lang.reflect.Method.invoke(Method.java:568)
> at
> com.sun.javatest.regtest.agent.MainWrapper$MainThread.run(MainWrapper
> .java:127)
> at java.base/java.lang.Thread.run(Thread.java:833)
> Caused by: java.lang.reflect.InvocationTargetException
> at
> java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInsta
> nce0(Native Method)
> at
> java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInsta
> nce(NativeConstructorAccessorImpl.java:77)
> at
> java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newI
> nstance(DelegatingConstructorAccessorImpl.java:45)
> at
> java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constru
> ctor.java:499)
> at
> java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:
> 480)
> at
> java.desktop/sun.font.FontManagerFactory$1.run(FontManagerFactory.jav
> a:85)
> ... 17 more
> Caused by: java.lang.NullPointerException: Cannot load from short
> array because "sun.awt.FontConfiguration.head" is null
> at
> java.desktop/sun.awt.FontConfiguration.getVersion(FontConfiguration.j
> ava:1264)
> at
> java.desktop/sun.awt.FontConfiguration.readFontConfigFile(FontConfigu
> ration.java:224)
> at
> java.desktop/sun.awt.FontConfiguration.init(FontConfiguration.java:10
> 6)
> at
> java.desktop/sun.awt.X11FontManager.createFontConfiguration(X11FontMa
> nager.java:706)
> at
> java.desktop/sun.font.SunFontManager$2.run(SunFontManager.java:358)
> at
> java.desktop/sun.font.SunFontManager$2.run(SunFontManager.java:315)
> at
> java.base/java.security.AccessController.doPrivileged(AccessControlle
> r.java:318)
> at
> java.desktop/sun.font.SunFontManager.<init>(SunFontManager.java:315)
> at java.desktop/sun.awt.FcFontManager.<init>(FcFontManager.java:35)
> at java.desktop/sun.awt.X11FontManager.<init>(X11FontManager.java:56)
> ... 23 more
> 
> Seems this was caused because no fonts were installed on the machine.
> Probably 'head' in FontConfiguration.getVersion() should be checked
> for null and a specific exception like "Check your fonts or fonts
> configuration"
> should be throw.
> 
> -------------
> 
> Commit messages:
>  - JDK-8304054
> 
> Changes: https://git.openjdk.org/jdk/pull/13045/files
>  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=13045&range=00
>   Issue: https://bugs.openjdk.org/browse/JDK-8304054
>   Stats: 9 lines in 1 file changed: 8 ins; 0 del; 1 mod
>   Patch: https://git.openjdk.org/jdk/pull/13045.diff
>   Fetch: git fetch
> https://git.openjdk.org/jdk pull/13045/head:pull/13045
> 
> PR: https://git.openjdk.org/jdk/pull/13045

Reply via email to