如何使用JavaScript检查特殊字符支持?

3

如何检查用户计算机上是否存在特殊字符?

例如:♥ ♦ ♣ ♠ ♪ ♫ ¶

如果用户的浏览器不支持其中之一,那么该符号将被替换为一个矩形()。


3
你正在检查特定的字体。计算机并不关心字体是否缺少某个特定的字符。 - Marc B
不确定,但我认为这更多与HTTP标头中的字符集有关,而不是浏览器或操作系统。 - user17753
如果您想检查特定字体,可以尝试以下技术:http://lucassmith.name/2009/05/test-if-a-font-is-installed-via-javascript.html。除此之外,我认为除了查看用户屏幕以查看字符是否显示正确外,没有其他简单的方法。 - Ian Hunter
我有一个想法。我检查一下符号和矩形是否大小相同。 - Danny Fox
@DannyFox:如果我使用LiberationSans而不是Arial,虽然字体大小不同但仍然有正确的字符... - user1207456
你可以确保将特殊字符包装在一个特殊的 span 中,并使用一个使其 Arial 的类来规范化它以适应你的字体高度/宽度和样式。如果你使用 ems / 相对单位,那么使用一个类就可以轻松地为所有区域和情况完成这个任务。 - sg3s
2个回答

2
抱歉,无法进行测试,而且即使某个字符可用,浏览器(尤其是IE)也可能无法呈现它,这增加了复杂性。
另一方面,该信息并不特别有用,除非你可以在无法呈现为字符时将字符动态更改为图像。
让字符正确呈现的更好方法是编写样式表,以便选择合适的字体。这也解决了可能使用不适合整体设计(如基本文本字体)的字体显示字符的问题。
例如,如果需要使用字符♥♦♣♠♪♫¶,请选择包含它们和所有其他所需字符的字体。这可能只需简单地选择一个字体。
body { font-family: Arial, sans-serif; }

它不起作用,因为这些符号不是字体系列的一部分。 - Danny Fox
我在一些设备上进行了测试,但如果该符号不受支持,则引用也无法工作。 - Danny Fox
@Danny Fox,是哪个设备?所有符号都失败了吗?在Android上测试时,我惊讶地发现其字体中没有八分音符♫,但再次想想,你能做什么呢? - Jukka K. Korpela
如果不支持,我会用png图像替换。 - Danny Fox

-1

另一种解决方案可以使用谷歌的Web字体

http://www.google.com/webfonts

如果你看到一个字符,其他任何一台电脑[使用最新浏览器]也会看到它


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接