我在html文档中使用Unicode'CHECK MARK'(U + 2713)。我发现它在大多数浏览器中都可以正常显示,但偶尔会遇到PC上缺少字体的人。如果字体丢失,是否有任何HTML / JS技巧来指定替代显示字符(或图像)?
答案 0 :(得分:7)
没有直接的方法可以判断是否有任何特定字符以有用的方式呈现。关于您可以通过JavaScript执行的所有操作是创建一个<span>
,其中包含目标字体中的一个(或几个)目标字符,并将其宽度与另一个<span>
进行比较,其中包含您知道的相同数量的字符不会有用(*)。如果它们的宽度相同,那么你很可能每个都有一堆盒子或问号,所以你可以采取像添加图像这样的备份措施。
由于这是非常烦人的,你可能更愿意去拍照。或者您可以尝试在现代浏览器上使用@font-face
嵌入来使用通常的已知良好字体。由于通常IE的Unicode字体后备支持较差,因此请务必包含EOT字体。
(*:你可以尝试一个当前未分配的角色,并希望保持这种状态,例如U + 08FF,或者像U + FFFF这样的保证无效的角色,尽管你是否应该被允许放入一个HTML文档。)
答案 1 :(得分:4)
这不是你所要求的,但它可能会解决你的问题(假设你的目标是输出HTML而不需要依赖外部图像等)
您是否考虑过图像数据网址(也称为RFC2397): http://www.ietf.org/rfc/rfc2397.txt
而不是使用:
✓
代表复选标记,您可以使用:
<img src="data:image/gif;base64,R0lGODlhCgAKAJEAAAAAAP///////wAAACH5BAEAAAIALAAAAAAKAAoAAAISlG8AeMq5nnsiSlsj
zmpzmj0FADs="/>
这不需要在客户端安装带有CHECK MARK字符的任何特定Unicode字体,但它不能在Internet Explorer 7或更低版本中运行。 (Internet Explorer 8,Firefox,Safari等应该可以正常工作)
答案 2 :(得分:0)
如果您可以设计一种方法来远程检查是否安装了MS Office 2000或更新版本,您应该可以假设安装了Arial Unicode MS,因此将此代码点设置为字体(只要您拥有CSS字体系列设置为“Arial Unicode MS,Arial,sans-serif”)。
我相信这只适用于Microsoft Internet Explorer,但您应该能够通过尝试在JavaScript中创建其ActiveX对象来检测Word安装:
if(new ActiveXObject("Word.Application"))
{
window.alert("Word is installed, go ahead and use the Unicode check mark in HTML");
}
else
{
window.alert("Word is not installed, use your image of a check mark.");
}
但鉴于这真的只适用于IE,可能会在IE8中抛出一个安全警告,你还需要一个没有MS Office的其他浏览器或IE浏览器的回退机制,一直使用图像可能是最好的方法去吧。
答案 3 :(得分:-1)
Unicode非常标准,我总是使用unicodemap.org。以下是您使用[link]的字符,它将为您提供与复选标记相关联的所有代码。如果您想要完全向后兼容,则需要使用实际图像。用于复选标记的1个图像文件比javascript黑客/插件更轻量级。可能是你最好的选择。