首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java无法在系统中看到所有已安装的字体

Java无法在系统中看到所有已安装的字体
EN

Stack Overflow用户
提问于 2014-03-27 16:18:25
回答 2查看 12.7K关注 0票数 16

我已经列出了系统中所有可用的字体,调用

代码语言:javascript
复制
    GraphicsEnvironment graphicsEnvironment = GraphicsEnvironment.getLocalGraphicsEnvironment();
    Font[] fontNames = graphicsEnvironment.getAllFonts();
    for (Font s : fontNames) {
        System.out.println(s);
    }

在控制台上,我可以看到许多字体,但列表看起来非常不完整。例如:我的操作系统安装了"System“字体,但在输出中看不到该字体:

代码语言:javascript
复制
...
java.awt.Font[family=Sylfaen,name=Sylfaen,style=plain,size=1]
java.awt.Font[family=Symbol,name=Symbol,style=plain,size=1]
java.awt.Font[family=Tahoma,name=Tahoma,style=plain,size=1]
...

已安装的字体(很抱歉适用于polish OS):

为什么会这样呢?

另一件事是在WordPad中我可以看到“系统”字体。然而,在MS Word 2010中,“系统”字体不可用。

问题不在于这个特殊的“系统”字体。Java中有几种已安装但缺少的字体。

编辑:我为什么要问?我的应用程序使用BIRT Report Designer生成带有报表模板的.rpt文件。接下来,我使用这些文件来呈现JLabel、JTextField等Swing组件。主要的问题是:用户可以生成使用Java Swing不能处理的字体的字段报告。

BIRT生成的示例xml文件的一部分:

代码语言:javascript
复制
<property name="fieldName">Blablabla{Label}</property>
<property name="fontFamily">"System"</property>
<property name="fontSize">16pt</property>

我们的客户要求指定生成的报告和Java swing组件之间的字体不能不同。

我想要做的是要么处理Java中的所有系统字体,要么将java不能处理的BIRT字体排除在外。

EN

回答 2

Stack Overflow用户

发布于 2019-04-19 02:59:40

一些Windows机器上有两个安装字体的按钮: Install for Me和Install For All Users。Java只列出为所有用户安装的字体。

票数 5
EN

Stack Overflow用户

发布于 2014-04-06 10:25:19

您可以尝试这样做吗?并确保您使用的是最新的JDK 7

代码语言:javascript
复制
public static void main(String[] args) {        
    GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
    String[] fontFamilies = ge.getAvailableFontFamilyNames();
    for (String ff : fontFamilies) {
        System.out.println(ff);
    }
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22681771

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档