我试图在此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上,通过命中和试用确认)。
由于字体映射规则依赖于用户计算机上安装的字体,因此字体映射规则会很复杂且不可预知。实际的形状由字体设计师决定。如果你想保证一个特定的形状,那么你需要使用一个图像,而不是一个字符。 –
@HansPassant屏幕截图的保证是它们来自同一台机器,同一套安装的字体。 –
具有不同操作系统的“同一台机器”不计为“相同”。 –