【问题标题】:Unicode character displays different for different usersUnicode 字符对不同用户显示不同
【发布时间】:2021-03-14 01:50:33
【问题描述】:

在 Web 应用程序中,我尝试显示 Unicode 字符 0x26d2。出于某种原因,不同用户的字符显示方式不同(都使用 Chrome,但使用不同的操作系统和不同的语言设置等)。

我得到以下变化:

(1)

(2)

(3)

我想为所有用户显示变体 (1),但不知道该怎么做(我检查了 document.characterSet,即所有用户的 UTF-8)。还有什么原因,我该如何检查?

请注意,图片由https://www.codetable.net/hex/26d2生成(您可以尝试自己访问该网站查看显示的是哪个版本的角色)。

【问题讨论】:

    标签: html unicode character-encoding


    【解决方案1】:

    这是真的。不同的浏览器(等)有不同的方式来呈现字符。如果您坚持使用特定的渲染,则需要使用图像。

    您遇到的第三个例子可能是浏览器(或其他)在其集合中没有该字符。

    这是我使用的一个网站:http://unicode.scarfboy.com/?s=U%2b26D2

    【讨论】:

    • 有没有办法强制执行某种渲染方式?这取决于默认字体吗?我可以提供/指定字体吗?
    • 在网上搜索“浏览器字体”。
    【解决方案2】:

    Unicode 与语义有关,因此字符名称以及如何解释它们(组合、重音、断词、排序等),但与图像(字形)无关。

    字体定义设计。例如。字母a、g、e 可能有非常不同的图像,符号也是如此。

    如果要定义图像,则应指定字体。对于 html,您应该使用由您定义的 webfonts,而不是由浏览器(以及运行浏览器的操作系统)定义的。寻找网络字体。 https://fonts.google.com/ 有一个压缩字体列表,可以在网站上不受限制地使用(并且免费)。

    但我警告您:有时最好指定字形,尤其是当您用于特定语义时(例如,在图形、地图、按钮上)。但用户可能期望不同的设计,所以不要过度。 [用户更关心自己操作系统的一致性,而不是页面在不同操作系统/浏览器上的一致性(他们可能永远不会注意到)

    【讨论】:

    • 您链接的字体没有U+26D2 的字形(至少我尝试过的字体)。我怎样才能找到显示这个字符的字体(不是正方形,它似乎是无法显示它的占位符)?
    • 是的。这很尴尬。我会向 Google 发送错误报告。 Noto Math(和其他 Noto 符号字体)有这样的字形。这也需要一个错误报告 (google.com/get/noto/#sans-zsym) 参见例如在ctan.org/pkg/notomath?lang=en。回答你:几周后问我。我正在做一个这样的工具[但现在只是为了巨大的 Noto 超家族]
    猜你喜欢
    • 2011-04-11
    • 2019-08-11
    • 2021-06-12
    • 1970-01-01
    • 2011-07-18
    • 1970-01-01
    • 1970-01-01
    • 2015-07-04
    • 1970-01-01
    相关资源
    最近更新 更多