我正试图在此jsfiddle中显示心脏♥Unicode字符(U + 2665 BLACK HEART SUIT)。
即使我指定了Droid Sans
字体,不同的浏览器也会以不同的方式显示相同的字符。所以,我假设Droid Sans
字体不包含♥字符,浏览器必须回退到其他字体才能显示此字符。但是浏览器如何确定用于Unicode字符的字体;事实证明(从截图中)它不是特定于操作系统的,因为Ubuntu上的Firefox和Chromium显示的方式不同;并且它不是浏览器特定的,因为Firefox在Ubuntu和Windows 7上以不同的方式显示它。
所以我的问题是 - 浏览器如何确定用于显示Unicode字符的字体;如何找出浏览器使用哪种字体显示Unicode字符;如何确保跨浏览器的一致外观?
PS:(特定于Firefox)尽管Droid Sans
不包含♥字符,但只有当所选字体为Droid Sans
时,Firefox才会将其显示为屏幕截图。对于任何其他字体,Firefox会选择DejaVu Sans
字体来显示♥字符(在Ubuntu上,通过点击和试用确认)。
答案 0 :(得分:0)
Droid Sans字体不包含U + 2665 BLACK HEART SUIT,因此声明字体在此处无关紧要。我不能在你的“PS”中重现这个观察,所以我不是要解释它。
(检查字体中字符覆盖率的一种快捷方法是下载并安装LastResort字体。它包含所有字符的通用,易于识别的呈现,因此在测试中使用font-family: foo, LastResort
您将很快发现字体“foo”中是否存在特定字符的文本。)
后备字体的使用取决于浏览器。浏览器可能有此设置。但问题是,作为作者,当您在指定的字体列表中找不到您的字符时(如果已安装,则在用户的计算机中),您无法知道其他人的浏览器会发生什么。