2012-11-20 27 views
1

我试图在此jsfiddle中显示心脏♥Unicode字符(U + 2665 BLACK HEART SUIT)。为什么Firefox挤压Windows的心脏,但不是Ubuntu的?

即使我已指定Droid Sans字体,不同的浏览器显示的字符也不同。所以,我假定Droid Sans字体不包括♥字符,并且浏览器必须回退到其他字体才能显示此字符。但是,浏览器如何确定用于Unicode字符的字体; (从屏幕截图看),它不是操作系统特有的,因为Ubuntu和Ubuntu都显示了它的不同;而且它不是浏览器专用的,因为Firefox在Ubuntu和Windows 7上的显示方式不同。

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

PS:(火狐特定)即使Droid Sans不包括♥字符,火狐其显示如屏幕截图仅当所选择的字体是Droid Sans。对于任何其他字体,Firefox会采用DejaVu Sans字体显示♥字符(在Ubuntu上,通过命中和试用确认)。

enter image description here

+1

由于字体映射规则依赖于用户计算机上安装的字体,因此字体映射规则会很复杂且不可预知。实际的形状由字体设计师决定。如果你想保证一个特定的形状,那么你需要使用一个图像,而不是一个字符。 –

+0

@HansPassant屏幕截图的保证是它们来自同一台机器,同一套安装的字体。 –

+0

具有不同操作系统的“同一台机器”不计为“相同”。 –

回答

0

在Droid Sans字体不包含U + 2665黑心西装,所以声明的字体,而这里无关紧要。我不能在你的“PS”中重现观察结果,所以我不想解释它。

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

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

+0

我只是想知道我自己的浏览器中发生了什么,我认为这些浏览器完全可以控制。 –

相关问题