2009-08-05 122 views
0

我有一些Swing代码(用1.6编写的1.6),专门将文本区域中的字体设置为Courier,但在某些Windows系统上,它显示为Arial(系统默认?)。这是否意味着系统中缺少字体? Java找不到字体时的行为是什么?它有抱怨吗?它是否在某处登录?立即诉诸使用系统默认值吗? JVM的1.4/1.5/1.6版本的行为有何不同?Java中的默认字体

有没有其他人遇到过这个问题?我非常惊讶地发现,在UI中显示的内容与我硬编码不同,而且仅在某些系统上显示。核心问题是我需要这种特殊情况下的等宽字体样式,而Arial不是等宽字体。如果找不到某种字体,是否有某种方法可以指定回退?喜欢的东西:

如果字体,可以用“信使” 其他使用“等宽”

???

回答

1

你应该先检查是否“信使”是GraphicsEnvironment.getAvailableFontFamilyNames()

的结果,我不知道在Java中的“if-unavailable-fallback-to”行为的任何内置的机制之一。

+1

如果Courier在任何Windows系统上缺失,我会感到非常惊讶。 – 2009-08-05 16:46:56

0

根据这篇文章1微软发布的唯一的等宽TrueType字体是Courier New和Lucida Sans Typewriter。