JTextPane的等宽字体/符号

use*_*061 10 java unicode symbols jtextpane monospace

我想使用JTextPane构建类似控制台的输出.因此我使用的是等宽字体:

textpane.setFont(new Font(Font.MONOSPACED, Font.PLAIN, 12));
Run Code Online (Sandbox Code Playgroud)

这适用于所有类型的alphanum(如az,0-9等)字符,但当涉及' \ u2588 '(█)等符号时,字体不再是等宽字体.

我忘记了什么吗?或者是不是有一个包含smybols的等宽字体?

Cod*_*ind 11

好的,首先,对我来说听起来像是在尝试解决几个不同的问题,所以我会尝试分别解决它们.

1.对于所有unicode字符,符号或其他,您需要一个等宽字体.

根据页面,Unicode 3.2标准定义了12886个字母数字和"符号"字符.Unicode现在是6.0,所以我们可以假设这个数字现在更大了.我还假设"字母数字"表示英文字符,因为Unicode支持跨越多种语言的超过100000个字符.无论如何,12886英语认可的字符和符号仍然很多,我怀疑有很多免费字体支持所有这些字符和符号.

也就是说,我最终Courier New用于大多数需要字符支持的单行间距字体的Java应用程序.它支持您上面提到的'\ u2588'字符以及许多其他重要字符,如"度"符号.

这种单行间距字体需要"跨平台".

我确信Mac OS X和所有类型的Windows支持Courier New,以及我运行的Linux版本(RedHat ......都记不住版本号),尽管并非所有Linux版本本身都有这种字体.无论如何......你可能会试着Courier New看看它是否适合你.如果没有,您可以在线找到免费工具来测试字体/字符支持.

最后的想法

我不想这么说,但我怀疑有很多字体支持Unicode标准定义的所有字母数字/符号字符,最重要的是单声道,跨平台和免费.如果可能的话,可能更值得花时间尝试确定您需要哪些符号,然后选择支持这些符号的字体,并由您知道将运行应用程序的平台支持.如果你绝对需要支持所有Unicode符号,不幸的是,它可能不会免费.