【问题标题】:CSS Change text if font-face does not exist?如果 font-face 不存在 CSS 更改文本?
【发布时间】:2012-10-25 21:03:56
【问题描述】:

有没有办法根据用户是否有某种字体(最好没有 javascript)来更改 HTML 文件中显示的文本?

例如,如果我想显示一个字体“AlphaIcons”:

<span>A</span>

其他我想显示的:

<span><img src="apple.png">Apple</span>

(在这种情况下,将字体提供给没有字体的用户不是一种选择)。

【问题讨论】:

  • 您的意思是,您想知道 HTML 是否可以查询设备的数据(特别是系统字体)并查看是否存在?不。但是,您可以使用 CSS3 设置已放置在站点服务器上的通用字体。
  • 这里有什么意义?你为什么要这么做?
  • 这不能在 CSS 中原生完成。使用 JavaScript,您可能会使用隐藏的、绝对定位的 &lt;div&gt; 来破解某些东西,其中主要字体设置为 AlphaIcons,次要设置为通过 @font_face 规则任意命名的某些 OTF,并获取其计算高度以查看如果它与预期值匹配(最好对设备差异有一定的容忍度)。

标签: html css web font-face


【解决方案1】:

已编辑*** 看看这篇文章——它可能会引导你朝着正确的方向前进: Changing Body Font-Size based on Font-Family with jQuery

在第一个答案中,它提供了一个可以检测字体的新库。如果你可以给它一个真/假布尔值,那么你也许可以在图像交换中写入。


我相信 CSS 已经可以为您做到这一点,使用 font-family 会优先考虑您要使用的字体。如果在用户系统上找不到第一个字体,则转到下一个。

http://www.w3schools.com/css/css_font.asp

像这样使用 css:

span {
    font-family:"AlphaIcons", "Times New Roman", Times, serif;
}

还是我错过了什么???

如果您想使用 javascript 制作一些更精美的字体,请查看 Google 的 webfont 库: http://www.google.com/webfonts

【讨论】:

  • 可以替换字体,但不能用图片替换文字
  • 哦,我明白了。他想用不存在的字体的图像替换不存在的字体。如果您像我一样阅读它,请注意其他人的回答。
  • 谢谢,我使用您提供的链接中的 javascript 来检测字体,如果字体丢失,则更改页面内容。我这样做的主要原因是因为我有一些系统带有受版权保护的特殊符号字体,其他人不会拥有而且我不能放弃。如果人们有它,我希望他们看到它,而对于那些不想要的人,我想给出一个文字描述,也许还有替代图片。
  • 也许您缺少的是如何用图像替换缺少的字体类型? .. 圣诞快乐
【解决方案2】:

您无法使用纯 HTML 或 CSS 进行检查。您需要 Javascript 来处理这个问题。

执行以下步骤:

  • 通过 font-face 嵌入字体文件
  • 使用 javascript 检测客户端浏览器中的字体是否可用。例如modernizr 可以解决问题
  • 当 font-face 不可用时,使用以下代码将图像插入到 span 中:

HTML

<span data-image="apple.png">A</span>

Javascipt

// check font face compatibility
if (!Modernizr.fontface) {

    // replace each span content with the right image
    $('span').each(function(){

        // get the image 
        var image = $(this).data('image');

        // insert this image into the span tag  
        $(this).html('<img src="'+image+'" />');
    });
}

数据属性只是众多可能的解决方案之一。只是一点提示。

一般来说,没有 Javascript 就无法检查字体的可用性。

【讨论】:

  • 检查字体是否可用。
  • 为什么需要现代化工具来做到这一点?
  • 如何检查这是否可用?
  • 既然modernizer 使用javascript 来做它该做的事情,为什么不用javascript 来做同样的事情呢?
  • 因为这是一个简单、容易、快速的解决方案?当然,他可以使用仅检查字体是否可用的小脚本。没有现代化。但我认为这个答案代表了一般概念。
猜你喜欢
  • 2014-04-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-05
  • 2015-05-20
  • 2011-04-15
  • 1970-01-01
  • 2013-05-18
  • 2012-08-04
相关资源
最近更新 更多