我想编写使用Webdings字形的优雅降级代码。假设Webdings是universally available across platforms这些字体之一,但我不希望浏览器以默认字体显示字符,如果由于某种奇怪的原因Webdings不在那里。如果字体不可用,有没有办法隐藏文字?
有没有办法做到这一点?
我想编写使用Webdings字形的优雅降级代码。假设Webdings是universally available across platforms这些字体之一,但我不希望浏览器以默认字体显示字符,如果由于某种奇怪的原因Webdings不在那里。如果字体不可用,有没有办法隐藏文字?
有没有办法做到这一点?
正如我在说评论:
取而代之,您应该使用
@font-face
来嵌入后备字体。 这比隐藏文字好得多,它在“全部 浏览器”中都有效。
我更喜欢用Font Squirrel Generator来处理@font-face
。它使它非常非常容易。
只有Flash允许您检测计算机上安装的字体。那里有一篇博客文章,展示如何在Flash中获取字体列表并将此列表传递给JavaScript。一旦你在JavaScript中有它,它应该很容易隐藏/显示文本:
http://rel.me/2008/06/26/font-detection-with-javascript-and-flash/
有趣的答案,很高兴知道。 –
你可以做这样的事情用jQuery:
$('p').each(function(){
var s = $(this).css('font-family');
if(s != "verdana"){
$(this).hide();
}
});
例子:http://jsfiddle.net/jasongennaro/GXjvK/
所以你检查看看元素的字体。如果它不在那里,你会隐藏它。
这不起作用 - 如果您将CSS设置为Verdana,并且Verdana实际上不可用,那么jQuery仍然会将CSS报告为“Verdana”。 –
该脚本从样式表中读取,这不表示字体的可用性。 –
在JavaScript中没有本地方式来测试字体可用性。
但是,由于lalit已经认识到,由于“每个字符在不同字体中出现不同,所以对于相同字体大小的相同字符串,不同字体将采用不同的宽度和高度”。
他写了一篇很好的文章,并创建了一个体面的一段代码来做到这一点:http://www.lalit.org/lab/javascript-css-font-detect/
你可以使用CSS3属性要有内涵,有一个CSS3兼容所有的人在你的网站上的字体网页浏览器将会看到你想要的“文本”。
@font-face {
font-family: myFirstFont; /* in your case webdings */
src: url('Sansation_Light.ttf'),
url('Sansation_Light.eot') format("opentype"); /* IE */
}
我唯一的当务之急现在是关于版权,我不知道你是否应该对这种字体的权利,以便能够使用这种方式...
取而代之的是,您应该使用'@ font-face'嵌入备用字体。这比隐藏文本好得多,并且它在“所有浏览器”中都有效。 – thirtydot
你是对的 - 这是问题精神中最真实的解决方案。写出来作为答案,我会接受它。 –