2011-08-22 58 views
6

我想编写使用Webdings字形的优雅降级代码。假设Webdings是universally available across platforms这些字体之一,但我不希望浏览器以默认字体显示字符,如果由于某种奇怪的原因Webdings不在那里。如果字体不可用,有没有办法隐藏文字?

有没有办法做到这一点?

+1

取而代之的是,您应该使用'@ font-face'嵌入备用字体。这比隐藏文本好得多,并且它在“所有浏览器”中都有效。 – thirtydot

+0

你是对的 - 这是问题精神中最真实的解决方案。写出来作为答案,我会接受它。 –

回答

2

正如我在说评论:

取而代之,您应该使用@font-face来嵌入后备字体。 这比隐藏文字好得多,它在“全部 浏览器”中都有效。

我更喜欢用Font Squirrel Generator来处理@font-face。它使它非常非常容易。

1

只有Flash允许您检测计算机上安装的字体。那里有一篇博客文章,展示如何在Flash中获取字体列表并将此列表传递给JavaScript。一旦你在JavaScript中有它,它应该很容易隐藏/显示文本:

http://rel.me/2008/06/26/font-detection-with-javascript-and-flash/

+0

有趣的答案,很高兴知道。 –

2

你可以做这样的事情用jQuery:

$('p').each(function(){ 
    var s = $(this).css('font-family'); 
    if(s != "verdana"){ 
     $(this).hide(); 
    }  
}); 

例子:http://jsfiddle.net/jasongennaro/GXjvK/

所以你检查看看元素的字体。如果它不在那里,你会隐藏它。

+3

这不起作用 - 如果您将CSS设置为Verdana,并且Verdana实际上不可用,那么jQuery仍然会将CSS报告为“Verdana”。 –

+0

该脚本从样式表中读取,这不表示字体的可用性。 –

1

在JavaScript中没有本地方式来测试字体可用性。

但是,由于lalit已经认识到,由于“每个字符在不同字体中出现不同,所以对于相同字体大小的相同字符串,不同字体将采用不同的宽度和高度”。

他写了一篇很好的文章,并创建了一个体面的一段代码来做到这一点:http://www.lalit.org/lab/javascript-css-font-detect/

1

你可以使用CSS3属性要有内涵,有一个CSS3兼容所有的人在你的网站上的字体网页浏览器将会看到你想要的“文本”。

@font-face { 
font-family: myFirstFont; /* in your case webdings */ 
src: url('Sansation_Light.ttf'), 
url('Sansation_Light.eot') format("opentype"); /* IE */ 
} 

我唯一的当务之急现在是关于版权,我不知道你是否应该对这种字体的权利,以便能够使用这种方式...

相关问题