降低具有缺少字体的Web浏览器的Unicode字符

时间:2010-09-02 23:44:53

标签: html unicode

我在html文档中使用Unicode'CHECK MARK'(U + 2713)。我发现它在大多数浏览器中都可以正常显示,但偶尔会遇到PC上缺少字体的人。如果字体丢失,是否有任何HTML / JS技巧来指定替代显示字符(或图像)?

4 个答案:

答案 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

而不是使用:

&#x2713;

代表复选标记,您可以使用:

<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黑客/插件更轻量级。可能是你最好的选择。