我发现了以下问题:Detect when a unicode character cannot be displayed correctly
但这不是Java语言。
我有以下代码:
int codePoint=Integer.parseInt(unicodeText,16);
byte eBytes[]=new String(Character.toChars(codePoint)).getBytes(StandardCharsets.UTF_8);
String str=new String(eBytes,Charset.forName("UTF-8"));
JButton button=new JButton(str);
它可以像这样在JButton上显示unicode图像:
因此,如果将unicodeText设置为“ 1F602”之类的内容,则它可以在按钮上显示图像。
我的问题是:
<1>我尝试了Java 8和Java 12,结果是相同的,它们从某些Unicode中丢失了相同的图像,为什么?可以做些什么来使丢失的图像显示出来,似乎Java升级没有做到。
<2>如何从Java应用程序检测无法显示哪些unicode? p>
答案 0 :(得分:1)
Font::canDisplayUpTo
实际上,抓住您的Font
并尝试以下操作:
JButton button = new JButton(str);
Font font = button.getFont();
int failingIndex = font.canDisplayUpTo(str);
if (failingIndex >= 0) {
// failingIndex points to the first codepoint in your string that cannot be represented with the font.
} else {
// This string can be displayed with the given font.
}
因此,如果字体不能按预期方式呈现字符,请使用其他可以显示的字体。