在Java GUI中使用Unicode字符是否安全?

dcn*_*dcn 5 java unicode user-interface fonts portability

对于Java GUI中的播放按钮,我目前使用标签设置为"▻"的按钮(在Unicode符号表中找到此符号).据我了解,这是最好不要直接在源代码中使用这样的符号,而是使用显式Unicode表示喜欢\u25BB在这个例子中,因为一些工具(编辑...)可能无法处理与非ASCII内容的文件(那是对的吗?).

假设编译的类包含正确的字符,在哪种情况下GUI 不会在当前的PC操作系统上显示预期的符号?Linux,Windows,Mac应该都支持UTF-16,对吗?可用的字体或字体设置是否会导致此方法出现问题?

(当然我可以添加一个图标,但如果符号应该已经可用,为什么要添加额外的资源...假设这是一个可移植的解决方案)

Joo*_*kka 6

可用的字体或字体设置是否会导致此方法出现问题?

不幸的是他们做到 您当然可以在源代码中使用unicode,但问题是当前unicode分配了246,943个代码点,因此很明显没有字体甚至只有那些定义的那部分.当字形不可用时,您将获得正方形或其他奇怪的渲染.我有哪里比较简单的符号如³使细一台Windows计算机上,并显示为在未来,几乎相同的计算机广场的情况.所有类型的语言和区域设置以及次要版本更改都会影响这一点,因此它非常脆弱.

AFAIK很少(如果有的话)字符保证始终可用.Java的Font类有一些方法,例如canDisplaycanDisplayUpTo,它们可以在运行时检查它.

您可以捆绑一些具有所需特殊字符的优秀TrueType字体,而不是使用图标,然后在应用程序的任何位置使用该字体.