在Linux上为Openjdk Java定义/安装哪些字体? [英] Where are fonts defined/installed for Openjdk Java on linux

查看:4002
本文介绍了在Linux上为Openjdk Java定义/安装哪些字体?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在Ubuntu上安装了Oracle 8 jdk,在jre / lib中它有各种fontProperties文件和一个包含字体的字体目录。但是当安装OpenJdk 8的时候,在jre / lib里的字体文件里没有这样的字体文件夹。

那么它从哪里得到它的字体,是否带有任何字体

更新
基于gerynix的建议



fc-list



不返回字体

 GraphicsEnvironment.getLocalGraphicsEnvironment()。getAvailableFontFamilyNames()

p>

  java.lang.NullPointerException $ b $在sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1264)
在sun.awt.FontConfiguration.readFontConfigFile(FontConfiguration.java:219)
在sun.awt.FontConfiguration.init(FontConfiguration.java:107)
在sun.awt.X11FontManager.createFontConfiguration(X11FontManager.java :774)
在sun.font.SunFontManager $ 2.run(SunFontManager.java:431)
在j < init>(SunFontManager.java:376)$ b $在sun.awt.FcFontManager。< init>(FcFontManager .java:35)
at sun.awt.X11FontManager。< init>(X11FontManager.java:57)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun。 (Constructor.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java: 423)
在java.lang.Class.newInstance(Class.java:442)
在sun.font.FontManagerFactory $ 1.run(FontManagerFactory.java:83)$ b $在java.security。 AccessController.doPrivileged(本地方法)
在sun.font.FontManagerFactory.getInstance(FontManagerFactory.java:74)
在sun.java2 d。SunGraphicsEnvironment.getFontManagerForSGE(SunGraphicsEnvironment.java:190)
at sun.java2d.SunGraphicsEnvironment.getAvailableFontFamilyNames(SunGraphicsEnvironment.java:224)
at sun.java2d.SunGraphicsEnvironment.getAvailableFontFamilyNames(SunGraphicsEnvironment.java:252)
at sun.java2d.HeadlessGraphicsEnvironment.getAvailableFontFamilyNames(HeadlessGraphicsEnvironment.java:94)
at Fonts.main(Fonts.java:10)
$ div class =h2_lin>解决方案

它从运行应用程序的环境中获取它。



$ p
$ b $ pre $ GraphicsEnvironment.getLocalGraphicsEnvironment()。getAvailableFontFamilyNames()

https://docs.oracle.com/javase/7/docs/api/java/awt/GraphicsEnvironment.html


Installed Oracle 8 jdk on Ubuntu, within jre/lib it has various fontProperties files plus a fonts dir containing fonts. But when installed OpenJdk 8 there is no such fonts folder on font files within jre/lib.

So where does it get its fonts from, does it come with any fonts on depen on the system having some fonts installed somewhere else.

Update Based on advise from gerynix

fc-list

returns no fonts

GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames()

gives

java.lang.NullPointerException
        at sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1264)
        at sun.awt.FontConfiguration.readFontConfigFile(FontConfiguration.java:219)
        at sun.awt.FontConfiguration.init(FontConfiguration.java:107)
        at sun.awt.X11FontManager.createFontConfiguration(X11FontManager.java:774)
        at sun.font.SunFontManager$2.run(SunFontManager.java:431)
        at java.security.AccessController.doPrivileged(Native Method)
        at sun.font.SunFontManager.<init>(SunFontManager.java:376)
        at sun.awt.FcFontManager.<init>(FcFontManager.java:35)
        at sun.awt.X11FontManager.<init>(X11FontManager.java:57)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
        at java.lang.Class.newInstance(Class.java:442)
        at sun.font.FontManagerFactory$1.run(FontManagerFactory.java:83)
        at java.security.AccessController.doPrivileged(Native Method)
        at sun.font.FontManagerFactory.getInstance(FontManagerFactory.java:74)
        at sun.java2d.SunGraphicsEnvironment.getFontManagerForSGE(SunGraphicsEnvironment.java:190)
        at sun.java2d.SunGraphicsEnvironment.getAvailableFontFamilyNames(SunGraphicsEnvironment.java:224)
        at sun.java2d.SunGraphicsEnvironment.getAvailableFontFamilyNames(SunGraphicsEnvironment.java:252)
        at sun.java2d.HeadlessGraphicsEnvironment.getAvailableFontFamilyNames(HeadlessGraphicsEnvironment.java:94)
        at Fonts.main(Fonts.java:10)

解决方案

It gets it from the environment on top of which you are running your application.

Look into:

GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames()

https://docs.oracle.com/javase/7/docs/api/java/awt/GraphicsEnvironment.html

这篇关于在Linux上为Openjdk Java定义/安装哪些字体?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆