JTextArea无法显示本地字体表情符号。

4
当我在标准输出中打印包含表情符号的文本时,表情符号会被显示出来(图1)。但是当我在JTextArea中显示文本时,表情符号会显示为未识别字符(图2)。如何解决这个问题?
我使用的是OS X系统,并且与其他编辑器一样使用相同的字体作为JTextArea的字体。
编辑:我不想放置预定义的图像表情符号。相反,我想显示字体本身带有的表情符号。因此,如果我在任何文本编辑器中写入“:)”,我将得到一个表情符号,因为该字体已经包含了它。我希望在JTextArea中也能实现这个功能。
图片描述: 图1:在标准输出中显示表情符号 图2:在JTextArea中显示未识别字符

尝试将JTextArea的字体设置为与终端使用的字体相同系列的字体,即终端字体但大小不同的字体。或者如果您喜欢,可以选择相同大小的字体。 - VGR
@VGR 这就是我做的,但是它没有起作用 :( - Jack Twain
2个回答

5
我假设您要渲染的字符串只是包含来自杂项符号范围或类似块的Unicode表情符号的纯文本,例如,皱眉脸是U+2639? 如果不是这种情况,您可以忽略此答案(并考虑更新您的问题以指定您正在进行的操作)。
您已经说“它在标准输出上工作,但在JTextArea上不起作用”,但在我看来,您的标准输出控制台视图中使用了不同的字体,而在JTextArea中使用了不同的字体(例如,在“ Maggie”中查看“ i”字符,以了解字体差异)。
看起来控制台窗口中用于呈现字符的字体“知道”如何绘制U+2639,但在JTextArea中使用的字体不“知道”如何呈现该字符。您看到的“未识别字符”俗称为“豆腐块”:每当字体不知道如何绘制字符时,它就会绘制“白色方块”字符。尝试使用APIcanDisplay()方法来确定特定字体是否“知道”如何显示特定字符。
您在JTextArea上设置了什么字体以及如何设置? 考虑发布SSCCE - 我目前可以访问OS X环境,因此我可能能够帮助;当然,如果他们清楚地看到您正在做什么,可能还有无数其他人可以帮助您。

这里可以使用可用字体列表。对于每个字体,只需调用canDisplay()并传递所需的字符即可。当找到合适的字体时,它可以用于JTextArea。 - StanislavL

1

我需要不断地向应该显示文本的位置添加文本。所以我调用了append()方法。但是我不确定是否应该继续调用setText()方法来更新JTextPane中的文本。 - Jack Twain
我刚试了一下...随着我不断添加文本,这将无法扩展。 - Jack Twain
哦,我想显示本地字体表情符号,而不是预定义的图像! - Jack Twain

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接