为什么 Windows 7 上的 Chrome 不向我显示某些 Unicode 字符?

为什么 Windows 7 上的 Chrome 不向我显示某些 Unicode 字符?

苹果问题包含文本

这是什么钥匙?⎋

在 Google Chrome 中它看起来是这样的:

在此处输入图片描述

为什么该 Unicode 字符或其他类似字符无法在 Windows 7 上的 Google Chrome 中显示?

答案1

我认为这是一个字体替换问题。

浏览器遇到了“所选字形不在指定字体中”的问题。您可以从这里采取两个方向:您可以从另一种字体中拉出等效的字形(这通常看起来很破损,但可能不太清楚为什么对用户来说)或者只显示一个字符未找到的占位符(这看起来总是错误的,但至少很明显)。

我认为 Firefox 和 Opera 可以识别所请求的字形是一个可以安全地从其他字体中提取的符号,而其余浏览器则比较保守,只显示“呃……不知道”的字形。

答案2

有趣的是,不仅仅是 Chrome——你可能会问为什么任何以下浏览器无法在 Windows 7 上显示:

在此处输入图片描述

从上到下:

  • Firefox(是)
  • IE9(n)
  • 铬 (n)
  • 歌剧(y)
  • 狩猎旅行(n)

因此,Firefox和Opera可以在Windows 7中显示该unicode字符,但其他浏览器则不能。

这是什么钥匙?⎋

答案3

问题是“为什么那个 Unicode 字符 [...] 在 Windows 7 上的 Google Chrome 中无法显示?”

该特定字符只是一个任意数字的 unicode 代码点。有很多 unicode 代码点没有“官方”符号。即使它们有符号,您的字体也不一定有该代码点的符号。如果您选择不同的字体,最终可能会得到不同的符号。

我查看了页面的 CSS,它显示这个字符以 Arial 显示(加上一堆其他无关紧要的字体)。Windows 自带 Arial,因此它应该总是首先选择该字体。看起来 Arial 确实不是为该 unicode 代码点指定一个符号。只要代码点没有字形,它就会以某种形式的方框显示没有字形(如其他人所指出的那样)。

更大的问题是,Firefox 或其他浏览器在 Windows 上究竟做了什么。我查看了 CSS 中列出的其他字体(我认为它可能依赖于下一个 CSS 字体),但它们也没有该代码点的字形。一种可能性是 Firefox 实际上附带了自己的字体。

深入研究 Firefox 后,我确实注意到这里有一些数学符号的字体:“C:\Program Files (x86)\Mozilla Firefox\res\fonts”。也许这就是它的来源。

答案4

按照每位软件开发人员绝对必须了解的关于 Unicode 和字符集的最低要求(没有借口!)作者:Joel Spolsky, “如果你尝试用某种编码来表示某个 Unicode 代码点,但该编码点没有对应的字符,你通常会得到一个小问号:?或者,如果你真的很厉害,会得到一个盒子“”。

我在 Archlinux 上运行 Chromium 13.0.782.112,我的默认编码是 en_US.UTF-8——该字符在最初链接的页面上显示正常。

相关内容