10

我有一台运行Win Vista的PC笔记本,刚买的时候,某些中文字体显示不出来,我只能看到矩形,但是我玩了一会儿控制设置,更改了一些属性,现在显示中文了字体正确,但我不记得我做了什么。

现在我的一些程序同时显示英文和中文,像这样:“输入|输入”(这里的中文也意味着输入),但是如果用户在他的机器上没有正确安装中文字体,他会看到类似的东西这个:“Enter | [][]”,我的问题是:在Java中如何检测这些字符是否会在某台机器上正确显示,如果不是,则显示“Enter”,如果是,则显示“Enter | 输入” ”。

坦率

4

3 回答 3

8

java.awt.GraphicsEnvironment.getAvailableFontFamilyNames()可以为您提供当前系统上安装的可用字体列表。你也可以java.awt.GraphicsEnvironment.getAllFonts()用来获取java.awt.Font对象。

然后,您可以使用java.awt.Font.canDisplay(int)检查是否可以在该字体中显示 Unicode 字符(其中int是多字节字符的整数表示)。

于 2010-02-16T03:10:57.833 回答
1

懒人版:

Arrays.asList(GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames()).contains(FONT_NAME)
于 2018-01-16T23:17:34.537 回答
0

对于那些仍然感兴趣的人。性能提示:使用getAvailableFontFamilyNames(Locale.ROOT)可能比仅仅getAvailableFontFamilyNames()因为在后一种情况下执行区域设置感知处理要快得多。

于 2021-11-11T18:03:46.657 回答