macos - Qt 应用程序显示表情符号而不是 unicode 字符

标签 macos qt unicode qml emoji

我目前正在使用 Qt 开发一个应用程序。我使用 macOS Sierra 作为我的开发和测试环境,但该应用程序是跨平台的。

所以这就是问题所在。我正在创建一个 Qt Quick Text 项目,其中设置以下属性 text: "\u2139",以便显示 information icon 。我使用的字体系列是 Open Sans .

运行应用程序后,我很惊讶地在我的 unicode 字符应该出现的地方看到以下内容:

emoji information symbol

这不是我想要的,我想要该 unicode 字符的文本呈现,而不是表情符号呈现。如何强制显示文本演示(在所有平台上)?

谢谢。

最佳答案

根据Wikipedia您应该在该字符后跟 U+EF0E {VARIATION SELECTOR 15},它请求渲染系统以文本(单色)形式呈现前面的字形;要执行相反的操作,即请求表情符号(彩色)表示形式,您应该在后面加上 U+EF0F {VARIATION SELECTOR 16} 代码点。特别是对于后者,是否可以获得彩色形式是高度系统/显示小部件选择性的,并且如果未指定,则哪些代码点以哪种方式呈现并不明显。例如这三个字形:

😐😠︎😄️ 没有变体选择器
😐︎😠︎︎😄️︎各接着VS15
😐️😠︎️😄️️每个后面都是VS16

啊啊啊!它们在 Stack Exchange 上的显示完全不同 grrrrr!

但是,使用 HTML 实体将其保存为 html 文件并在浏览器中打开它:

<html><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"><head/>
<body><p>&#128528;&#128542;&#128512; without a variation selector</p>
<p>&#128528;&#65038;&#128542;&#65038;&#128512;&#65038; each followed by VS15</p>
<p>&#128528;&#65039;&#128542;&#65039;&#128512;&#65039; each followed by VS16</p>
</body></html>

它似乎只在被告知时才会产生表情符号效果:

Partial screen shot of above HTML display in my Browser

从我自己最近使用 Qt C++ 小部件的项目来看,它们中的大多数(我尝试过的所有)似乎都不能处理表情符号表单 - 尽管我还没有尝试过 QTextBrowser 这会似乎是最有可能处理这些问题的 - 它只是不适用于我正在做的事情......

此外,102 个类似人类的表情符号形式也可以与另外五个 U+1F3FB 到 U+1F3FF {EMOJI MODIFIER FITZPATRICK TYPE-xxxx} 组合(第一个用于类型 1 和 2,其余的分别为 3 到 6),这为他们提供了逼真且越来越暗的肤色。请注意,基线人类表情符号的默认黄色/蓝色/灰色基色明确是那些类似于人类肤色的颜色!

关于macos - Qt 应用程序显示表情符号而不是 unicode 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41617473/

相关文章:

python - 更新指向包含空格的保管箱目录的 PYTHONPATH 变量

macos - 不同的类(class)一起工作

objective-c - 当焦点位于字段上时删除的 NSTextField/NSSearchField 默认值

Go rune literal for high positioned emojis

android - 无法在 Mac 上安装 Android SDK 包

c++ - 如何实现double的序列化和反序列化?

c++ - 在 QThreadPool 中执行槽

c++ - Qt 中的标准 (?) 按钮

css - 将字符 "ß"(大写 Eszett 字符)转换为 IE 的 "SS"

c++ - 用 wchar_t 处理 unicode 字符好吗?它不会引起任何问题吗?