1

我试图在这个jsfiddle中显示 heart ♥ Unicode 字符(U+2665 BLACK HEART SUIT) 。

即使我指定了Droid Sans字体,不同的浏览器也会以不同的方式显示相同的字符。因此,我假设该Droid Sans字体不包含 ♥ 字符,并且浏览器必须回退到其他字体才能显示该字符。但是浏览器如何确定 Unicode 字符使用哪种字体?事实证明(从屏幕截图中)它不是特定于操作系统的,因为 Ubuntu 上的 Firefox 和 Chromium 都以不同的方式显示它;而且它不是特定于浏览器的,因为 Firefox 在 Ubuntu 和 Windows 7 上的显示方式不同。

所以我的问题是——浏览器如何确定使用哪种字体来显示 Unicode 字符?如何找出浏览器使用哪种字体来显示 Unicode 字符;以及如何确保跨浏览器的外观一致?

PS:(Firefox 特定)即使Droid Sans不包含 ♥ 字符,Firefox 仅在所选字体为Droid Sans. 对于任何其他字体,Firefox 会选择DejaVu Sans字体来显示 ♥ 字符(在 Ubuntu 上,通过点击和试用确认)。

在此处输入图像描述

4

1 回答 1

0

Droid Sans 字体不包含 U+2665 BLACK HEART SUIT,所以在这里声明字体是无关紧要的。我无法在您的“PS”中重现观察结果,所以我不想解释它。

(检查字体中字符覆盖率的一种快速方法是下载并安装LastResort字体。它包含所有字符的通用、易于识别的渲染,因此通过font-family: foo, LastResort在测试文本上使用,您将快速找出特定字符是否存在于字体“foo”。)

备用字体的使用取决于浏览器。浏览器可能对此进行了设置。但关键是,作为作者,当您的字符无法在您指定的字体列表中找到时(如果已安装,则安装在用户的计算机中),您作为作者无法知道在其他人的浏览器上会发生什么。

于 2012-11-20T17:21:03.957 回答